chore: code clean up

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2024-11-10 09:49:06 +08:00
parent 03d405e197
commit 59910e275e
133 changed files with 597 additions and 816 deletions

View File

@@ -318,10 +318,10 @@ class AboutController extends GetxController {
// DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
// if (Platform.isAndroid) {
// AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
// print(androidInfo.supportedAbis);
// debugPrint(androidInfo.supportedAbis);
// } else if (Platform.isIOS) {
// IosDeviceInfo iosInfo = await deviceInfo.iosInfo;
// print(iosInfo);
// debugPrint(iosInfo);
// }
// }

View File

@@ -21,10 +21,8 @@ import 'package:PiliPalaX/pages/video/detail/index.dart';
import 'package:PiliPalaX/pages/video/detail/reply/index.dart';
import 'package:PiliPalaX/plugin/pl_player/models/play_repeat.dart';
import 'package:PiliPalaX/utils/feed_back.dart';
import 'package:PiliPalaX/utils/id_utils.dart';
import 'package:PiliPalaX/utils/storage.dart';
import 'package:share_plus/share_plus.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:html/parser.dart' as html_parser;
import 'package:html/dom.dart' as dom;

View File

@@ -27,12 +27,12 @@ class BangumiIntroPanel extends StatefulWidget {
final Function showIntroDetail;
const BangumiIntroPanel({
Key? key,
super.key,
this.cid,
required this.heroTag,
required this.showEpisodes,
required this.showIntroDetail,
}) : super(key: key);
});
@override
State<BangumiIntroPanel> createState() => _BangumiIntroPanelState();
@@ -147,7 +147,7 @@ class _BangumiInfoState extends State<BangumiInfo>
videoDetailCtr = Get.find<VideoDetailController>(tag: widget.heroTag);
bangumiItem = bangumiIntroController.bangumiItem;
cid = widget.cid!;
print('cid: $cid');
debugPrint('cid: $cid');
videoDetailCtr.cid.listen((p0) {
cid = p0;
if (!mounted) return;

View File

@@ -11,19 +11,19 @@ class IntroDetail extends StatelessWidget {
final dynamic videoTags;
const IntroDetail({
Key? key,
super.key,
this.bangumiDetail,
this.videoTags,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {
TextStyle smallTitle = TextStyle(
fontSize: 12,
color: Theme.of(context).colorScheme.onBackground,
color: Theme.of(context).colorScheme.onSurface,
);
return Container(
color: Theme.of(context).colorScheme.background,
color: Theme.of(context).colorScheme.surface,
padding: const EdgeInsets.only(left: 14, right: 14),
height: Utils.getSheetHeight(context),
child: Column(

View File

@@ -1,11 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:PiliPalaX/common/constants.dart';
import 'package:PiliPalaX/common/widgets/badge.dart';
import 'package:PiliPalaX/http/search.dart';
import 'package:PiliPalaX/models/bangumi/info.dart';
import 'package:PiliPalaX/models/common/search_type.dart';
import 'package:PiliPalaX/utils/utils.dart';
import 'package:PiliPalaX/common/widgets/network_img_layer.dart';
@@ -18,7 +13,7 @@ class BangumiCardV extends StatelessWidget {
this.longPressEnd,
});
final bangumiItem;
final dynamic bangumiItem;
final Function()? longPress;
final Function()? longPressEnd;
@@ -66,8 +61,8 @@ class BangumiCardV extends StatelessWidget {
// String bvid = episode.bvid!;
// int cid = episode.cid!;
// String pic = episode.cover!;
// // print('epId');
// // print(epId);
// // debugPrint('epId');
// // debugPrint(epId);
// String heroTag = Utils.makeHeroTag(cid);
// Get.toNamed(
// '/video?bvid=$bvid&cid=$cid&seasonId=$seasonId&epId=$epId',
@@ -139,8 +134,7 @@ class BangumiCardV extends StatelessWidget {
class BangumiContent extends StatelessWidget {
const BangumiContent({super.key, required this.bangumiItem});
// ignore: prefer_typing_uninitialized_variables
final bangumiItem;
final dynamic bangumiItem;
@override
Widget build(BuildContext context) {
return Expanded(

View File

@@ -50,8 +50,8 @@ class BangumiCardVMemberHome extends StatelessWidget {
// String bvid = episode.bvid!;
// int cid = episode.cid!;
// String pic = episode.cover!;
// // print('epId');
// // print(epId);
// // debugPrint('epId');
// // debugPrint(epId);
// String heroTag = Utils.makeHeroTag(cid);
// Get.toNamed(
// '/video?bvid=$bvid&cid=$cid&seasonId=$seasonId&epId=$epId',

View File

@@ -23,12 +23,12 @@ class PlDanmakuController {
return;
}
danmakuWeightNotifier.addListener(() {
print(
debugPrint(
"danmakuWeight changed from $danmakuWeight to ${danmakuWeightNotifier.value}");
danmakuWeight = danmakuWeightNotifier.value;
});
danmakuFilterNotifier.addListener(() {
print(
debugPrint(
"danmakuFilter changed from $danmakuFilter to ${danmakuFilterNotifier.value}");
danmakuFilter = danmakuFilterNotifier.value;
});

View File

@@ -49,7 +49,7 @@ class _DanmakuBlockPageState extends State<DanmakuBlockPage> {
}
return e.toMap();
}).toList();
print("simpleRuleList:$simpleRuleList");
// debugPrint("simpleRuleList:$simpleRuleList");
localCache.put(LocalCacheKey.danmakuFilterRule, simpleRuleList);
plPlayerController.danmakuFilterRule.value = simpleRuleList;
scrollController.removeListener(() {});

View File

@@ -10,9 +10,7 @@ import 'package:get/get.dart';
import 'package:hive/hive.dart';
import 'package:PiliPalaX/http/dynamics.dart';
import 'package:PiliPalaX/http/search.dart';
import 'package:PiliPalaX/models/bangumi/info.dart';
import 'package:PiliPalaX/models/common/dynamics_type.dart';
import 'package:PiliPalaX/models/common/search_type.dart';
import 'package:PiliPalaX/models/dynamics/result.dart';
import 'package:PiliPalaX/models/dynamics/up.dart';
import 'package:PiliPalaX/models/live/item.dart';
@@ -133,13 +131,13 @@ class DynamicsController extends GetxController
break;
case 'DYNAMIC_TYPE_PGC':
print('番剧');
debugPrint('番剧');
SmartDialog.showToast('暂未支持的类型,请联系开发者');
break;
/// 纯文字动态查看
case 'DYNAMIC_TYPE_WORD':
print('纯文本');
debugPrint('纯文本');
Utils.toDupNamed('/dynamicDetail',
arguments: {'item': item, 'floor': floor});
break;
@@ -175,7 +173,7 @@ class DynamicsController extends GetxController
/// 番剧查看
case 'DYNAMIC_TYPE_PGC_UNION':
print('DYNAMIC_TYPE_PGC_UNION 番剧');
debugPrint('DYNAMIC_TYPE_PGC_UNION 番剧');
DynamicArchiveModel pgc = item.modules.moduleDynamic.major.pgc;
if (pgc.epid != null) {
Utils.viewBangumi(epId: pgc.epid);

View File

@@ -14,7 +14,6 @@ import 'package:PiliPalaX/models/common/reply_type.dart';
import 'package:PiliPalaX/models/dynamics/result.dart';
import 'package:PiliPalaX/pages/dynamics/detail/index.dart';
import 'package:PiliPalaX/pages/dynamics/widgets/author_panel.dart';
import 'package:PiliPalaX/pages/video/detail/reply/widgets/reply_item.dart';
import 'package:PiliPalaX/pages/video/detail/reply_reply/index.dart';
import 'package:PiliPalaX/utils/feed_back.dart';
import 'package:PiliPalaX/utils/id_utils.dart';
@@ -24,7 +23,7 @@ import '../widgets/dynamic_panel.dart';
class DynamicDetailPage extends StatefulWidget {
// const DynamicDetailPage({super.key});
const DynamicDetailPage({Key? key}) : super(key: key);
const DynamicDetailPage({super.key});
@override
State<DynamicDetailPage> createState() => _DynamicDetailPageState();

View File

@@ -21,8 +21,7 @@ import '../widgets/dynamic_panel.dart';
import 'controller.dart';
class DynamicsTabPage extends StatefulWidget {
const DynamicsTabPage({Key? key, required this.dynamicsType})
: super(key: key);
const DynamicsTabPage({super.key, required this.dynamicsType});
final String dynamicsType;
@@ -70,7 +69,7 @@ class _DynamicsTabPageState extends State<DynamicsTabPage>
}
});
dynamicsController.mid.listen((mid) {
print('midListen: $mid');
// debugPrint('midListen: $mid');
_dynamicsTabController.mid = mid;
_dynamicsTabController.scrollController.jumpTo(0);
_dynamicsTabController.onReload();
@@ -89,7 +88,7 @@ class _DynamicsTabPageState extends State<DynamicsTabPage>
@override
Widget build(BuildContext context) {
super.build(context);
// print(widget.dynamicsType + widget.mid.value.toString());
// debugPrint(widget.dynamicsType + widget.mid.value.toString());
return refreshIndicator(
// key:
// ValueKey<String>(widget.dynamicsType + widget.mid.value.toString()),

View File

@@ -84,7 +84,7 @@ class _DynamicsPageState extends State<DynamicsPage>
// ..addListener(() {
// if (!_dynamicsController.tabController.indexIsChanging) {
// // if (!mounted) return;
// // print('indexChanging: ${_dynamicsController.tabController.index}');
// // debugPrint('indexChanging: ${_dynamicsController.tabController.index}');
// _dynamicsController
// .onSelectType(_dynamicsController.tabController.index);
// }
@@ -99,7 +99,7 @@ class _DynamicsPageState extends State<DynamicsPage>
upPanelPosition = UpPanelPosition.values[setting.get(
SettingBoxKey.upPanelPosition,
defaultValue: UpPanelPosition.leftFixed.code)];
print('upPanelPosition: $upPanelPosition');
debugPrint('upPanelPosition: $upPanelPosition');
if (GStorage.setting
.get(SettingBoxKey.dynamicsShowAllFollowedUp, defaultValue: false)) {
_dynamicsController.scrollController.addListener(() {

View File

@@ -17,8 +17,7 @@ class ActionPanel extends StatefulWidget {
super.key,
this.item,
});
// ignore: prefer_typing_uninitialized_variables
final item;
final dynamic item;
@override
State<ActionPanel> createState() => _ActionPanelState();

View File

@@ -19,7 +19,7 @@ Widget addWidget(item, context, type, {floor = 1}) {
};
Color bgColor = floor == 1
? Theme.of(context).dividerColor.withOpacity(0.08)
: Theme.of(context).colorScheme.background;
: Theme.of(context).colorScheme.surface;
switch (type) {
case 'ADDITIONAL_TYPE_UGC':
// 转发的投稿
@@ -40,7 +40,7 @@ Widget addWidget(item, context, type, {floor = 1}) {
SmartDialog.showToast(err.toString());
}
} else {
print("No match found.");
debugPrint("No match found.");
}
},
child: Container(

View File

@@ -15,8 +15,8 @@ class DynamicPanel extends StatelessWidget {
required this.item,
this.source,
this.onRemove,
Key? key,
}) : super(key: key);
super.key,
});
final DynamicsController _dynamicsController = Get.put(DynamicsController());

View File

@@ -364,7 +364,7 @@ InlineSpan richNode(item, context) {
);
}
} catch (err) {
print('❌rich_node_panel err: $err');
debugPrint('❌rich_node_panel err: $err');
return spacer;
}
}

View File

@@ -12,8 +12,7 @@ import 'package:PiliPalaX/utils/utils.dart';
class UpPanel extends StatefulWidget {
final FollowUpModel? upData;
final ScrollController scrollController;
const UpPanel(this.upData, this.scrollController, {Key? key})
: super(key: key);
const UpPanel(this.upData, this.scrollController, {super.key});
@override
State<UpPanel> createState() => _UpPanelState();
@@ -49,7 +48,7 @@ class _UpPanelState extends State<UpPanel> {
height: 45,
child: TextButton(
style: ButtonStyle(
padding: MaterialStateProperty.all(const EdgeInsets.only()),
padding: WidgetStateProperty.all(const EdgeInsets.only()),
),
child: Column(
children: [

View File

@@ -5,8 +5,7 @@ import 'package:PiliPalaX/common/widgets/network_img_layer.dart';
import 'package:PiliPalaX/utils/utils.dart';
class FavItem extends StatelessWidget {
// ignore: prefer_typing_uninitialized_variables
final favFolderItem;
final dynamic favFolderItem;
const FavItem({super.key, required this.favFolderItem});
@override

View File

@@ -5,7 +5,6 @@ import 'package:PiliPalaX/utils/storage.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:PiliPalaX/http/video.dart';
import 'package:PiliPalaX/models/user/fav_folder.dart';
class FavDetailController extends CommonController {
// FavFolderItemData? item;

View File

@@ -19,11 +19,11 @@ class FavVideoCardH extends StatelessWidget {
final int? searchType;
const FavVideoCardH({
Key? key,
super.key,
required this.videoItem,
this.callFn,
this.searchType,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {
@@ -215,7 +215,7 @@ class VideoContent extends StatelessWidget {
child: IconButton(
tooltip: '取消收藏',
style: ButtonStyle(
padding: MaterialStateProperty.all(EdgeInsets.zero),
padding: WidgetStateProperty.all(EdgeInsets.zero),
),
onPressed: () {
showDialog(

View File

@@ -3,7 +3,6 @@ import 'package:get/get.dart';
import 'package:PiliPalaX/common/widgets/network_img_layer.dart';
import 'package:PiliPalaX/models/follow/result.dart';
import 'package:PiliPalaX/pages/follow/index.dart';
import 'package:PiliPalaX/pages/video/detail/introduction/widgets/group_panel.dart';
import 'package:PiliPalaX/utils/feed_back.dart';
import 'package:PiliPalaX/utils/utils.dart';

View File

@@ -265,8 +265,8 @@ class AppBarWidget extends StatelessWidget implements PreferredSizeWidget {
required this.child1,
required this.child2,
required this.visible,
Key? key,
}) : super(key: key);
super.key,
});
final PreferredSizeWidget child1;
final PreferredSizeWidget child2;

View File

@@ -9,9 +9,7 @@ import 'package:PiliPalaX/common/widgets/network_img_layer.dart';
import 'package:PiliPalaX/http/search.dart';
import 'package:PiliPalaX/http/user.dart';
import 'package:PiliPalaX/http/video.dart';
import 'package:PiliPalaX/models/bangumi/info.dart';
import 'package:PiliPalaX/models/common/business_type.dart';
import 'package:PiliPalaX/models/common/search_type.dart';
import 'package:PiliPalaX/models/live/item.dart';
import 'package:PiliPalaX/utils/feed_back.dart';
import 'package:PiliPalaX/utils/id_utils.dart';
@@ -82,7 +80,7 @@ class HistoryItem extends StatelessWidget {
if (result['status']) {
String bvid = result['data'].bvid!;
int cid = result['data'].cid!;
String pic = result['data'].pic!;
// String pic = result['data'].pic!;
String heroTag = Utils.makeHeroTag(cid);
var epid = result['data'].epId;
if (epid != null) {
@@ -254,11 +252,10 @@ class HistoryItem extends StatelessWidget {
child: IconButton(
tooltip: '取消选择',
style: ButtonStyle(
padding: MaterialStateProperty.all(
padding: WidgetStateProperty.all(
EdgeInsets.zero),
backgroundColor:
MaterialStateProperty
.resolveWith(
WidgetStateProperty.resolveWith(
(states) {
return Colors.white
.withOpacity(0.8);

View File

@@ -8,7 +8,7 @@ import 'package:PiliPalaX/utils/feed_back.dart';
import './controller.dart';
class HomePage extends StatefulWidget {
const HomePage({Key? key}) : super(key: key);
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
@@ -135,9 +135,9 @@ class CustomAppBar extends StatelessWidget implements PreferredSizeWidget {
class SearchBarAndUser extends StatelessWidget {
const SearchBarAndUser({
Key? key,
super.key,
required this.ctr,
}) : super(key: key);
});
final HomeController ctr;
@@ -198,9 +198,9 @@ class SearchBarAndUser extends StatelessWidget {
class UserAndSearchVertical extends StatelessWidget {
const UserAndSearchVertical({
Key? key,
super.key,
required this.ctr,
}) : super(key: key);
});
final HomeController ctr;
@@ -274,8 +274,8 @@ class DefaultUser extends StatelessWidget {
child: IconButton(
tooltip: '默认用户头像',
style: ButtonStyle(
padding: MaterialStateProperty.all(EdgeInsets.zero),
backgroundColor: MaterialStateProperty.resolveWith((states) {
padding: WidgetStateProperty.all(EdgeInsets.zero),
backgroundColor: WidgetStateProperty.resolveWith((states) {
return Theme.of(context).colorScheme.onInverseSurface;
}),
),
@@ -367,8 +367,7 @@ class CustomChip extends StatelessWidget {
: BorderSide.none,
// backgroundColor: colorTheme.primaryContainer.withOpacity(0.1),
// selectedColor: colorTheme.secondaryContainer.withOpacity(0.8),
color:
MaterialStateProperty.resolveWith<Color>((Set<MaterialState> states) {
color: WidgetStateProperty.resolveWith<Color>((Set<WidgetState> states) {
return colorTheme.secondaryContainer.withOpacity(0.6);
}),
padding: const EdgeInsets.fromLTRB(6, 1, 6, 1),
@@ -383,9 +382,9 @@ class CustomChip extends StatelessWidget {
class SearchBar extends StatelessWidget {
const SearchBar({
Key? key,
super.key,
required this.ctr,
}) : super(key: key);
});
final HomeController? ctr;

View File

@@ -4,8 +4,6 @@ import 'package:PiliPalaX/pages/common/popup_controller.dart';
import 'package:PiliPalaX/http/video.dart';
class HotController extends PopupController {
final int _count = 20;
int idx = 0;
@override

View File

@@ -10,7 +10,6 @@ import 'package:PiliPalaX/common/constants.dart';
import 'package:PiliPalaX/common/widgets/animated_dialog.dart';
import 'package:PiliPalaX/common/skeleton/video_card_h.dart';
import 'package:PiliPalaX/common/widgets/http_error.dart';
import 'package:PiliPalaX/common/widgets/video_card_h.dart';
import 'package:PiliPalaX/pages/home/index.dart';
import 'package:PiliPalaX/pages/hot/controller.dart';
import 'package:PiliPalaX/pages/main/index.dart';
@@ -18,7 +17,7 @@ import 'package:PiliPalaX/pages/main/index.dart';
import '../../utils/grid.dart';
class HotPage extends StatefulWidget {
const HotPage({Key? key}) : super(key: key);
const HotPage({super.key});
@override
State<HotPage> createState() => _HotPageState();

View File

@@ -14,7 +14,6 @@ import 'package:PiliPalaX/common/skeleton/video_reply.dart';
import 'package:PiliPalaX/common/widgets/html_render.dart';
import 'package:PiliPalaX/common/widgets/network_img_layer.dart';
import 'package:PiliPalaX/models/common/reply_type.dart';
import 'package:PiliPalaX/pages/video/detail/reply/widgets/reply_item.dart';
import 'package:PiliPalaX/pages/video/detail/reply_reply/index.dart';
import 'package:PiliPalaX/utils/feed_back.dart';
import 'package:share_plus/share_plus.dart';

View File

@@ -12,11 +12,11 @@ class LiveCardV extends StatelessWidget {
final Function()? longPressEnd;
const LiveCardV({
Key? key,
super.key,
required this.liveItem,
this.longPress,
this.longPressEnd,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {
@@ -80,7 +80,7 @@ class LiveCardV extends StatelessWidget {
class LiveContent extends StatelessWidget {
final dynamic liveItem;
const LiveContent({Key? key, required this.liveItem}) : super(key: key);
const LiveContent({super.key, required this.liveItem});
@override
Widget build(BuildContext context) {
return Expanded(
@@ -129,9 +129,9 @@ class VideoStat extends StatelessWidget {
final LiveItemModel? liveItem;
const VideoStat({
Key? key,
super.key,
required this.liveItem,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

View File

@@ -17,8 +17,8 @@ class BottomControl extends StatefulWidget implements PreferredSizeWidget {
this.controller,
this.liveRoomCtr,
this.floating,
Key? key,
}) : super(key: key);
super.key,
});
@override
State<BottomControl> createState() => _BottomControlState();
@@ -91,7 +91,7 @@ class _BottomControlState extends State<BottomControl> {
child: IconButton(
tooltip: '画中画',
style: ButtonStyle(
padding: MaterialStateProperty.all(EdgeInsets.zero),
padding: WidgetStateProperty.all(EdgeInsets.zero),
),
onPressed: () async {
bool canUsePiP = false;

View File

@@ -67,7 +67,7 @@ class _LiveRoomChatState extends State<LiveRoomChat> {
},
);
} catch (err) {
print(err.toString());
debugPrint(err.toString());
// SmartDialog.showToast(err.toString());
}
},

View File

@@ -69,8 +69,8 @@ class LoginPageController extends GetxController
qrCodeTimer?.cancel();
codeInfo.value = res;
codeInfo.refresh();
print("codeInfo");
print(codeInfo);
debugPrint("codeInfo");
debugPrint(codeInfo.toString());
qrCodeTimer = Timer.periodic(const Duration(milliseconds: 1000), (t) {
qrCodeLeftTime.value = 180 - t.tick;
if (qrCodeLeftTime <= 0) {
@@ -85,7 +85,6 @@ class LoginPageController extends GetxController
if (value['status']) {
t.cancel();
statusQRCode.value = '扫码成功';
print(value['data']);
await afterLoginByApp(
value['data'], value['data']['cookie_info']);
Get.back();
@@ -104,7 +103,7 @@ class LoginPageController extends GetxController
}
void _handleTabChange() {
print('tabController.index ${tabController.index}');
debugPrint('tabController.index ${tabController.index}');
if (tabController.index == 2) {
if (qrCodeTimer == null || qrCodeTimer!.isActive == false) {
refreshQRCode();
@@ -121,8 +120,8 @@ class LoginPageController extends GetxController
'refresh': token_info['refresh_token']
});
List<dynamic> cookieInfo = cookie_info['cookies'];
print("cookieInfo");
print(cookieInfo);
debugPrint("cookieInfo");
debugPrint(cookieInfo.toString());
List<Cookie> cookies = [];
String cookieStrings = cookieInfo.map((cookie) {
String cstr =
@@ -139,11 +138,7 @@ class LoginPageController extends GetxController
await Request.cookieManager.cookieJar
.saveFromResponse(Uri.parse(url), cookies);
}
print(cookieStrings);
print(Request.cookieManager.cookieJar
.loadForRequest(Uri.parse(HttpString.apiBaseUrl)));
Request.dio.options.headers['cookie'] = cookieStrings;
print(Request.dio.options);
await WebviewCookieManager().setCookies(cookies);
for (Cookie item in cookies) {
await web.CookieManager().setCookie(
@@ -285,14 +280,12 @@ class LoginPageController extends GetxController
}
// if ((passwordFormKey.currentState as FormState).validate()) {
var webKeyRes = await LoginHttp.getWebKey();
print(webKeyRes);
if (!webKeyRes['status']) {
SmartDialog.showToast(webKeyRes['msg']);
return;
}
String salt = webKeyRes['data']['hash'];
String key = webKeyRes['data']['key'];
print(key);
var res = await LoginHttp.loginByPwd(
username: username,
password: password,
@@ -303,11 +296,10 @@ class LoginPageController extends GetxController
gee_challenge: captchaData.geetest?.challenge,
recaptcha_token: captchaData.token,
);
print(res);
if (res['status']) {
var data = res['data'];
for (var key in data.keys) {
print('$key: ${data[key]}');
debugPrint('$key: ${data[key]}');
}
if (data == null) {
SmartDialog.showToast('登录异常,接口未返回数据:${res["msg"]}');
@@ -318,100 +310,100 @@ class LoginPageController extends GetxController
return;
//{"code":0,"message":"0","ttl":1,"data":{"status":2,"message":"本次登录环境存在风险, 需使用手机号进行验证或绑定","url":"https://passport.bilibili.com/h5-app/passport/risk/verify?tmp_token=9e785433940891dfa78f033fb7928181&request_id=e5a6d6480df04097870be56c6e60f7ef&source=risk","token_info":null,"cookie_info":null,"sso":null,"is_new":false,"is_tourist":false}}
//todo: 后续登录流程https://ivan.hanloth.cn/archives/530/
String Url = data['url']!;
Uri currentUri = Uri.parse(Url);
var safeCenterRes = await LoginHttp.safeCenterGetInfo(
tmpCode: currentUri.queryParameters['tmp_token']!);
//{"code":0,"message":"0","ttl":1,"data":{"account_info":{"hide_tel":"111*****111","hide_mail":"aaa*****aaaa.aaa","bind_mail":true,"bind_tel":true,"tel_verify":true,"mail_verify":true,"unneeded_check":false,"bind_safe_question":false,"mid":1111111},"member_info":{"nickname":"xxxxxxx","face":"https://i0.hdslb.com/bfs/face/xxxxxxx.jpg","realname_status":false},"sns_info":{"bind_google":false,"bind_fb":false,"bind_apple":false,"bind_qq":true,"bind_weibo":true,"bind_wechat":false},"account_safe":{"score":80}}}
if (!safeCenterRes['status']) {
SmartDialog.showToast("获取安全验证信息失败,请尝试其它登录方式\n"
"(${safeCenterRes['code']}) ${safeCenterRes['msg']}");
return;
}
Map<String, String> accountInfo = {
"hindTel": safeCenterRes['data']['account_info']!["hide_tel"],
"hindMail": safeCenterRes['data']['account_info']!["hide_mail"],
};
if (!safeCenterRes['data']['account_info']!['tel_verify']) {
SmartDialog.showToast("当前账号未支持手机号验证,请尝试其它登录方式");
return;
}
TextEditingController _textFieldController = TextEditingController();
String captchaKey = '';
Get.dialog(AlertDialog(
title: const Text("本次登录需要验证您的手机号"),
content: Column(children: [
Text(accountInfo['hindTel'] ?? '未能获取手机号'),
TextField(
controller: _textFieldController,
decoration: const InputDecoration(hintText: "请输入短信验证码"),
),
]),
actions: <Widget>[
TextButton(
child: const Text("发送验证码 "),
onPressed: () async {
var preCaptureRes = await LoginHttp.preCapture();
if (!preCaptureRes['status']) {
SmartDialog.showToast("获取验证码失败,请尝试其它登录方式\n"
"(${preCaptureRes['code']}) ${preCaptureRes['msg']}");
return;
}
String geeGt = preCaptureRes['data']['gee_gt']!;
String geeChallenge = preCaptureRes['data']['gee_challenge'];
captchaData.token = preCaptureRes['data']['recaptcha_token']!;
// String Url = data['url']!;
// Uri currentUri = Uri.parse(Url);
// var safeCenterRes = await LoginHttp.safeCenterGetInfo(
// tmpCode: currentUri.queryParameters['tmp_token']!);
// //{"code":0,"message":"0","ttl":1,"data":{"account_info":{"hide_tel":"111*****111","hide_mail":"aaa*****aaaa.aaa","bind_mail":true,"bind_tel":true,"tel_verify":true,"mail_verify":true,"unneeded_check":false,"bind_safe_question":false,"mid":1111111},"member_info":{"nickname":"xxxxxxx","face":"https://i0.hdslb.com/bfs/face/xxxxxxx.jpg","realname_status":false},"sns_info":{"bind_google":false,"bind_fb":false,"bind_apple":false,"bind_qq":true,"bind_weibo":true,"bind_wechat":false},"account_safe":{"score":80}}}
// if (!safeCenterRes['status']) {
// SmartDialog.showToast("获取安全验证信息失败,请尝试其它登录方式\n"
// "(${safeCenterRes['code']}) ${safeCenterRes['msg']}");
// return;
// }
// Map<String, String> accountInfo = {
// "hindTel": safeCenterRes['data']['account_info']!["hide_tel"],
// "hindMail": safeCenterRes['data']['account_info']!["hide_mail"],
// };
// if (!safeCenterRes['data']['account_info']!['tel_verify']) {
// SmartDialog.showToast("当前账号未支持手机号验证,请尝试其它登录方式");
// return;
// }
// TextEditingController _textFieldController = TextEditingController();
// String captchaKey = '';
// Get.dialog(AlertDialog(
// title: const Text("本次登录需要验证您的手机号"),
// content: Column(children: [
// Text(accountInfo['hindTel'] ?? '未能获取手机号'),
// TextField(
// controller: _textFieldController,
// decoration: const InputDecoration(hintText: "请输入短信验证码"),
// ),
// ]),
// actions: <Widget>[
// TextButton(
// child: const Text("发送验证码 "),
// onPressed: () async {
// var preCaptureRes = await LoginHttp.preCapture();
// if (!preCaptureRes['status']) {
// SmartDialog.showToast("获取验证码失败,请尝试其它登录方式\n"
// "(${preCaptureRes['code']}) ${preCaptureRes['msg']}");
// return;
// }
// String geeGt = preCaptureRes['data']['gee_gt']!;
// String geeChallenge = preCaptureRes['data']['gee_challenge'];
// captchaData.token = preCaptureRes['data']['recaptcha_token']!;
getCaptcha(geeGt, geeChallenge, () async {
var safeCenterSendSmsCodeRes =
await LoginHttp.safeCenterSmsCode(
tmpCode: currentUri.queryParameters['tmp_token']!,
geeChallenge: geeChallenge,
geeSeccode: captchaData.seccode!,
geeValidate: captchaData.validate!,
recaptchaToken: captchaData.token!);
if (!safeCenterSendSmsCodeRes['status']) {
SmartDialog.showToast("发送短信验证码失败,请尝试其它登录方式\n"
"(${safeCenterSendSmsCodeRes['code']}) ${safeCenterSendSmsCodeRes['msg']}");
return;
}
SmartDialog.showToast("短信验证码已发送,请查收");
captchaKey = safeCenterSendSmsCodeRes['data']['captcha_key'];
});
},
),
TextButton(
onPressed: Get.back,
child: const Text(" 取消"),
),
TextButton(
onPressed: () async {
String? code = _textFieldController.text;
if (code.isEmpty) {
SmartDialog.showToast("请输入短信验证码");
return;
}
var safeCenterSmsVerifyRes =
await LoginHttp.safeCenterSmsVerify(
code: code,
tmpCode: currentUri.queryParameters['tmp_token']!,
requestId: currentUri.queryParameters['request_id']!,
source: currentUri.queryParameters['source']!,
captchaKey: captchaKey,
);
if (!safeCenterSmsVerifyRes['status']) {
SmartDialog.showToast("验证短信验证码失败,请尝试其它登录方式\n"
"(${safeCenterSmsVerifyRes['code']}) ${safeCenterSmsVerifyRes['msg']}");
return;
}
SmartDialog.showToast("验证成功,正在登录");
// loginByPassword();
},
child: const Text("确认"),
),
],
));
// getCaptcha(geeGt, geeChallenge, () async {
// var safeCenterSendSmsCodeRes =
// await LoginHttp.safeCenterSmsCode(
// tmpCode: currentUri.queryParameters['tmp_token']!,
// geeChallenge: geeChallenge,
// geeSeccode: captchaData.seccode!,
// geeValidate: captchaData.validate!,
// recaptchaToken: captchaData.token!);
// if (!safeCenterSendSmsCodeRes['status']) {
// SmartDialog.showToast("发送短信验证码失败,请尝试其它登录方式\n"
// "(${safeCenterSendSmsCodeRes['code']}) ${safeCenterSendSmsCodeRes['msg']}");
// return;
// }
// SmartDialog.showToast("短信验证码已发送,请查收");
// captchaKey = safeCenterSendSmsCodeRes['data']['captcha_key'];
// });
// },
// ),
// TextButton(
// onPressed: Get.back,
// child: const Text(" 取消"),
// ),
// TextButton(
// onPressed: () async {
// String? code = _textFieldController.text;
// if (code.isEmpty) {
// SmartDialog.showToast("请输入短信验证码");
// return;
// }
// var safeCenterSmsVerifyRes =
// await LoginHttp.safeCenterSmsVerify(
// code: code,
// tmpCode: currentUri.queryParameters['tmp_token']!,
// requestId: currentUri.queryParameters['request_id']!,
// source: currentUri.queryParameters['source']!,
// captchaKey: captchaKey,
// );
// if (!safeCenterSmsVerifyRes['status']) {
// SmartDialog.showToast("验证短信验证码失败,请尝试其它登录方式\n"
// "(${safeCenterSmsVerifyRes['code']}) ${safeCenterSmsVerifyRes['msg']}");
// return;
// }
// SmartDialog.showToast("验证成功,正在登录");
// // loginByPassword();
// },
// child: const Text("确认"),
// ),
// ],
// ));
return;
// return;
}
if (data['token_info'] == null || data['cookie_info'] == null) {
SmartDialog.showToast(
@@ -479,12 +471,11 @@ class LoginPageController extends GetxController
cid: selectedCountryCodeId['country_id'],
key: key,
);
print(res);
if (res['status']) {
SmartDialog.showToast('登录成功');
var data = res['data'];
for (var key in data.keys) {
print('$key: ${data[key]}');
debugPrint('$key: ${data[key]}');
}
await afterLoginByApp(data['token_info'], data['cookie_info']);
Get.back();
@@ -522,7 +513,6 @@ class LoginPageController extends GetxController
gee_challenge: captchaData.geetest?.challenge,
recaptcha_token: captchaData.token,
);
print(res);
if (res['status']) {
SmartDialog.showToast('发送成功');
smsSendTimestamp = DateTime.now().millisecondsSinceEpoch;

View File

@@ -95,7 +95,7 @@ class _LoginPageState extends State<LoginPage> {
RepaintBoundary(
key: globalKey,
child: Obx(() => QrImageView(
backgroundColor: Theme.of(context).colorScheme.background,
backgroundColor: Theme.of(context).colorScheme.surface,
eyeStyle: QrEyeStyle(
eyeShape: QrEyeShape.square,
color: Theme.of(context).colorScheme.primary,

View File

@@ -25,7 +25,6 @@ class MainController extends GetxController {
final StreamController<bool> bottomBarStream =
StreamController<bool>.broadcast();
Box setting = GStorage.setting;
DateTime? _lastPressedAt;
late bool hideTabBar;
late PageController pageController;
int selectedIndex = 0;

View File

@@ -7,7 +7,6 @@ import 'package:hive/hive.dart';
import 'package:PiliPalaX/models/common/dynamic_badge_mode.dart';
import 'package:PiliPalaX/pages/dynamics/index.dart';
import 'package:PiliPalaX/pages/home/index.dart';
import 'package:PiliPalaX/pages/media/index.dart';
import 'package:PiliPalaX/utils/event_bus.dart';
import 'package:PiliPalaX/utils/feed_back.dart';
import 'package:PiliPalaX/utils/storage.dart';
@@ -24,7 +23,6 @@ class _MainAppState extends State<MainApp> with SingleTickerProviderStateMixin {
final MainController _mainController = Get.put(MainController());
final HomeController _homeController = Get.put(HomeController());
final DynamicsController _dynamicController = Get.put(DynamicsController());
final MediaController _mediaController = Get.put(MediaController());
int? _lastSelectTime; //上次点击时间
Box setting = GStorage.setting;

View File

@@ -73,7 +73,7 @@ class MemberController extends GetxController {
wwebid = jsonDecode(
Uri.decodeComponent(scriptElement?.text ?? ''))['access_id'];
} catch (e) {
print('failed to get wwebid: $e');
debugPrint('failed to get wwebid: $e');
}
}
@@ -109,7 +109,7 @@ class MemberController extends GetxController {
SmartDialog.showToast('账号未登录');
return;
}
if (memberInfo.value == null) {
if (memberInfo.value.mid == null) {
SmartDialog.showToast('尚未获取到用户信息');
return;
}

View File

@@ -4,9 +4,8 @@ import 'package:PiliPalaX/http/loading_state.dart';
import 'package:PiliPalaX/http/member.dart';
import 'package:PiliPalaX/models/space_fav/datum.dart';
import 'package:PiliPalaX/models/space_fav/list.dart';
import 'package:PiliPalaX/models/space_fav/space_fav.dart';
import 'package:PiliPalaX/models/user/fav_folder.dart';
import 'package:PiliPalaX/pages/common/common_controller.dart';
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
@@ -51,7 +50,7 @@ class MemberFavoriteCtr extends CommonController {
secondEnd.value = (res[1].mediaListResponse?.count ?? -1) <=
(res[1].mediaListResponse?.list?.length ?? -1);
} catch (e) {
print(e.toString());
debugPrint(e.toString());
}
loadingState.value = response;
return true;

View File

@@ -28,13 +28,6 @@ class _MemberDynamicState extends State<MemberDynamic>
@override
Widget build(BuildContext context) {
super.build(context);
return ListView.separated(
itemCount: 100,
itemBuilder: (_, index) {
return ListTile(title: Text(index.toString()));
},
separatorBuilder: (_, index) => const SizedBox(height: 10),
);
return Obx(() => _buildBody(_controller.loadingState.value));
}

View File

@@ -250,10 +250,10 @@ class _MemberHomeState extends State<MemberHome>
if (contributeCtr.tabController?.index != index1) {
contributeCtr.tabController?.index = index1;
}
print('initialized');
debugPrint('initialized');
} catch (e) {
_ctr.contributeInitialIndex.value = index1;
print('not initialized');
debugPrint('not initialized');
}
}
_ctr.tabController?.animateTo(index);

View File

@@ -6,7 +6,6 @@ import 'package:PiliPalaX/http/loading_state.dart';
import 'package:PiliPalaX/pages/member/new/content/member_contribute/content/bangumi/member_bangumi.dart';
import 'package:PiliPalaX/pages/member/new/content/member_contribute/content/favorite/member_favorite.dart';
import 'package:PiliPalaX/pages/member/new/content/member_contribute/member_contribute.dart';
import 'package:PiliPalaX/pages/member/new/content/member_dynamic/member_dynamic.dart';
import 'package:PiliPalaX/pages/member/new/content/member_home/member_home.dart';
import 'package:PiliPalaX/pages/member/new/controller.dart';
import 'package:PiliPalaX/pages/member/new/widget/user_info_card.dart';

View File

@@ -1,10 +1,6 @@
import 'dart:async';
import 'package:PiliPalaX/grpc/app/dynamic/v2/dynamic.pb.dart' as dyn;
import 'package:PiliPalaX/grpc/grpc_repo.dart';
import 'package:PiliPalaX/http/member.dart';
import 'package:PiliPalaX/http/user.dart';
import 'package:PiliPalaX/models/member/info.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';

View File

@@ -48,7 +48,7 @@ class MemberSeasonsPanel extends StatelessWidget {
onPressed: () => Get.toNamed(
'/memberSeasons?mid=${item.meta!.mid}&seasonId=${item.meta!.seasonId}'),
style: ButtonStyle(
padding: MaterialStateProperty.all(EdgeInsets.zero),
padding: WidgetStateProperty.all(EdgeInsets.zero),
),
icon: const Icon(
Icons.arrow_forward_ios,

View File

@@ -12,9 +12,9 @@ class MemberCoinsItem extends StatelessWidget {
final MemberCoinsDataModel coinItem;
const MemberCoinsItem({
Key? key,
super.key,
required this.coinItem,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

View File

@@ -11,9 +11,9 @@ class MemberSeasonsItem extends StatelessWidget {
final dynamic seasonItem;
const MemberSeasonsItem({
Key? key,
super.key,
required this.seasonItem,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {
@@ -25,7 +25,7 @@ class MemberSeasonsItem extends StatelessWidget {
child: InkWell(
onTap: () async {
int cid =
await SearchHttp.ab2c(aid: seasonItem.aid, bvid: seasonItem.bvid);
await SearchHttp.ab2c(aid: seasonItem.aid, bvid: seasonItem.bvid);
Get.toNamed('/video?bvid=${seasonItem.bvid}&cid=$cid',
arguments: {'videoItem': seasonItem, 'heroTag': heroTag});
},

View File

@@ -363,11 +363,11 @@ class ActionItem extends StatelessWidget {
final String? text;
const ActionItem({
Key? key,
super.key,
this.icon,
this.onTap,
this.text,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

View File

@@ -171,7 +171,7 @@ class _SysMsgPageState extends State<SysMsgPage> {
InlineSpan _buildContent(String content) {
final List<InlineSpan> spanChildren = <InlineSpan>[];
RegExp urlRegExp = RegExp(
r'#\{([^}]*)\}\{([^}]*)\}|https?:\/\/[^\s/\$.?#].[^\s]*|www\.[^\s/\$.?#].[^\s]*|\【(.*?)\】');
r'#\{([^}]*)\}\{([^}]*)\}|https?:\/\/[^\s/\$.?#].[^\s]*|www\.[^\s/\$.?#].[^\s]*|【(.*?)】');
content.splitMapJoin(
urlRegExp,
onMatch: (Match match) {

View File

@@ -18,10 +18,10 @@ class ImagePreview extends StatefulWidget {
final int? initialPage;
final List<String>? imgList;
const ImagePreview({
Key? key,
super.key,
this.initialPage,
this.imgList,
}) : super(key: key);
});
@override
_ImagePreviewState createState() => _ImagePreviewState();
@@ -35,7 +35,6 @@ class _ImagePreviewState extends State<ImagePreview>
Animation<double>? _doubleClickAnimation;
late DoubleClickAnimationListener _doubleClickAnimationListener;
List<double> doubleTapScales = <double>[1.0, 2.0];
bool _dismissDisabled = false;
List<String>? imgList;
@override
@@ -192,14 +191,10 @@ class _ImagePreviewState extends State<ImagePreview>
_doubleClickAnimationController.reset();
if (begin == doubleTapScales[0]) {
setState(() {
_dismissDisabled = true;
});
setState(() {});
end = doubleTapScales[1];
} else {
setState(() {
_dismissDisabled = false;
});
setState(() {});
end = doubleTapScales[0];
}

View File

@@ -3,7 +3,7 @@ import 'package:get/get.dart';
import './controller.dart';
class RankPage extends StatefulWidget {
const RankPage({Key? key}) : super(key: key);
const RankPage({super.key});
@override
State<RankPage> createState() => _RankPageState();

View File

@@ -17,7 +17,7 @@ import 'package:PiliPalaX/pages/rank/zone/index.dart';
import '../../../utils/grid.dart';
class ZonePage extends StatefulWidget {
const ZonePage({Key? key, required this.rid}) : super(key: key);
const ZonePage({super.key, required this.rid});
final int rid;

View File

@@ -20,9 +20,12 @@ class SearchPanel extends StatefulWidget {
final String? keyword;
final SearchType? searchType;
final String? tag;
const SearchPanel(
{required this.keyword, required this.searchType, this.tag, Key? key})
: super(key: key);
const SearchPanel({
super.key,
required this.keyword,
required this.searchType,
this.tag,
});
@override
State<SearchPanel> createState() => _SearchPanelState();

View File

@@ -42,7 +42,7 @@ Widget searchLivePanel(BuildContext context, ctr, loadingState) {
class LiveItem extends StatelessWidget {
final dynamic liveItem;
const LiveItem({Key? key, required this.liveItem}) : super(key: key);
const LiveItem({super.key, required this.liveItem});
@override
Widget build(BuildContext context) {
@@ -109,7 +109,7 @@ class LiveItem extends StatelessWidget {
class LiveContent extends StatelessWidget {
final dynamic liveItem;
const LiveContent({Key? key, required this.liveItem}) : super(key: key);
const LiveContent({super.key, required this.liveItem});
@override
Widget build(BuildContext context) {
return Expanded(
@@ -159,8 +159,7 @@ class LiveStat extends StatelessWidget {
final int? online;
final String? cateName;
const LiveStat({Key? key, required this.online, this.cateName})
: super(key: key);
const LiveStat({super.key, required this.online, this.cateName});
@override
Widget build(BuildContext context) {

View File

@@ -1,14 +1,9 @@
import 'package:PiliPalaX/common/widgets/http_error.dart';
import 'package:PiliPalaX/http/loading_state.dart';
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:PiliPalaX/common/constants.dart';
import 'package:PiliPalaX/common/widgets/badge.dart';
import 'package:PiliPalaX/common/widgets/network_img_layer.dart';
import 'package:PiliPalaX/http/search.dart';
import 'package:PiliPalaX/models/bangumi/info.dart';
import 'package:PiliPalaX/models/common/search_type.dart';
import 'package:PiliPalaX/utils/utils.dart';
import '../../../utils/grid.dart';

View File

@@ -18,8 +18,8 @@ class SearchVideoPanel extends StatelessWidget {
SearchVideoPanel({
required this.ctr,
required this.loadingState,
Key? key,
}) : super(key: key);
super.key,
});
final SearchPanelController ctr;
final dynamic loadingState;
@@ -55,7 +55,7 @@ class SearchVideoPanel extends StatelessWidget {
type: i['type'],
selectedType: controller.selectedType.value,
callFn: (bool selected) async {
print('selected: $selected');
debugPrint('selected: $selected');
controller.selectedType.value = i['type'];
ctr.order.value =
i['type'].toString().split('.').last;
@@ -136,8 +136,8 @@ class CustomFilterChip extends StatelessWidget {
this.type,
this.selectedType,
this.callFn,
Key? key,
}) : super(key: key);
super.key,
});
final String? label;
final ArchiveFilterType? type;

View File

@@ -79,7 +79,7 @@ class SettingController extends GetxController {
controller.clearLocalStorage();
WebViewCookieManager().clearCookies();
} catch (e) {
print(e);
debugPrint(e.toString());
}
userLogin.value = false;
if (Get.isRegistered<MainController>()) {

View File

@@ -158,10 +158,10 @@ class _ExtraSettingState extends State<ExtraSetting> {
alignment: Alignment.centerRight,
scale: 0.8,
child: Switch(
thumbIcon: MaterialStateProperty.resolveWith<Icon?>(
(Set<MaterialState> states) {
thumbIcon: WidgetStateProperty.resolveWith<Icon?>(
(Set<WidgetState> states) {
if (states.isNotEmpty &&
states.first == MaterialState.selected) {
states.first == WidgetState.selected) {
return const Icon(Icons.done);
}
return null; // All other states will use the default thumbIcon.
@@ -287,10 +287,10 @@ class _ExtraSettingState extends State<ExtraSetting> {
alignment: Alignment.centerRight,
scale: 0.8,
child: Switch(
thumbIcon: MaterialStateProperty.resolveWith<Icon?>(
(Set<MaterialState> states) {
thumbIcon: WidgetStateProperty.resolveWith<Icon?>(
(Set<WidgetState> states) {
if (states.isNotEmpty &&
states.first == MaterialState.selected) {
states.first == WidgetState.selected) {
return const Icon(Icons.done);
}
return null; // All other states will use the default thumbIcon.

View File

@@ -1,89 +0,0 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
class HiddenSetting extends StatefulWidget {
const HiddenSetting({super.key});
@override
State<HiddenSetting> createState() => _HiddenSettingState();
}
class _HiddenSettingState extends State<HiddenSetting> {
@override
void initState() {
super.initState();
}
void test(Object? val) {
print(val);
}
@override
Widget build(BuildContext context) {
TextStyle titleStyle = Theme.of(context).textTheme.titleMedium!;
return Scaffold(
appBar: AppBar(
centerTitle: false,
titleSpacing: 0,
title: Text(
'开发人员选项',
style: Theme.of(context).textTheme.titleMedium,
),
),
body: Column(
children: [
ListTile(
title: Text('手动产生异常', style: titleStyle),
dense: false,
subtitle: Column(
children: [
ListTile(
onTap: () {
test([][0]);
},
dense: true,
title: const Text('数组越界'),
),
ListTile(
onTap: () {
test(null!.value);
},
dense: true,
title: const Text('非空断言'),
),
ListTile(
onTap: () {
test(int.parse(""));
},
dense: true,
title: const Text('非法整数解析'),
),
ListTile(
onTap: () {
test(DateTime.parse("2050-01-aa"));
},
dense: true,
title: const Text('非法日期解析'),
),
ListTile(
onTap: () {
throw Exception("测试异常");
},
dense: true,
title: const Text('抛出测试异常'),
),
],
),
),
ListTile(
title: const Text('查看日志'),
onTap: () {
Get.toNamed('/logs');
},
),
],
),
);
}
}

View File

@@ -52,7 +52,7 @@ class _SetDisplayModeState extends State<SetDisplayMode> {
try {
modes = await FlutterDisplayMode.supported;
} on PlatformException catch (e) {
print(e);
debugPrint(e.toString());
}
var res = await getDisplayModeType(modes);

View File

@@ -1,17 +1,11 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:hive/hive.dart';
import 'package:PiliPalaX/http/interceptor_anonymity.dart';
import 'package:PiliPalaX/http/member.dart';
import 'package:PiliPalaX/utils/storage.dart';
import '../../http/user.dart';
import '../../models/user/info.dart';
import '../../utils/login.dart';
import '../home/controller.dart';
import '../media/controller.dart';
import '../mine/controller.dart';
class PrivacySetting extends StatefulWidget {
@@ -132,5 +126,4 @@ class _PrivacySettingState extends State<PrivacySetting> {
),
);
}
}

View File

@@ -1,12 +1,10 @@
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:hive/hive.dart';
import 'package:PiliPalaX/http/member.dart';
import 'package:PiliPalaX/models/common/rcmd_type.dart';
import 'package:PiliPalaX/pages/setting/widgets/select_dialog.dart';
import 'package:PiliPalaX/utils/recommend_filter.dart';
import 'package:PiliPalaX/utils/storage.dart';
import 'package:get/get.dart';
import 'widgets/switch_item.dart';
@@ -94,12 +92,10 @@ class _RecommendSettingState extends State<RecommendSetting> {
SmartDialog.showToast('尚未登录,无法收到个性化推荐');
}
}
if (result != null) {
defaultRcmdType = result;
setting.put(SettingBoxKey.defaultRcmdType, result);
SmartDialog.showToast('下次启动时生效');
setState(() {});
}
defaultRcmdType = result;
setting.put(SettingBoxKey.defaultRcmdType, result);
SmartDialog.showToast('下次启动时生效');
setState(() {});
}
},
),

View File

@@ -11,8 +11,8 @@ class SetSelectItem extends StatefulWidget {
this.title,
this.subTitle,
this.setKey,
Key? key,
}) : super(key: key);
super.key,
});
@override
State<SetSelectItem> createState() => _SetSelectItemState();

View File

@@ -23,8 +23,8 @@ class SetSwitchItem extends StatefulWidget {
this.needReboot,
this.leading,
this.onTap,
Key? key,
}) : super(key: key);
super.key,
});
@override
State<SetSwitchItem> createState() => _SetSwitchItemState();

View File

@@ -16,10 +16,10 @@ class SubVideoCardH extends StatelessWidget {
final int? searchType;
const SubVideoCardH({
Key? key,
super.key,
required this.videoItem,
this.searchType,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

View File

@@ -282,7 +282,7 @@ class VideoDetailController extends GetxController
);
}).toList();
} catch (e) {
print(e.toString());
debugPrint(e.toString());
}
}
}
@@ -572,7 +572,7 @@ class VideoDetailController extends GetxController
return result;
}
final List<VideoItem> allVideosList = data.dash!.video!;
// print("allVideosList:${allVideosList}");
// debugPrint("allVideosList:${allVideosList}");
// 当前可播放的最高质量视频
int currentHighVideoQa = allVideosList.first.quality!.code;
// 预设的画质为null则当前可用的最高质量

View File

@@ -3,7 +3,6 @@ import 'dart:math';
import 'package:PiliPalaX/grpc/grpc_repo.dart';
import 'package:PiliPalaX/http/loading_state.dart';
import 'package:PiliPalaX/http/member.dart';
import 'package:PiliPalaX/utils/utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
@@ -24,8 +23,6 @@ import 'package:PiliPalaX/utils/feed_back.dart';
import 'package:PiliPalaX/utils/id_utils.dart';
import 'package:PiliPalaX/utils/storage.dart';
import 'package:share_plus/share_plus.dart';
import 'package:PiliPalaX/pages/member/controller.dart';
import 'package:url_launcher/url_launcher.dart';
import '../../../../http/search.dart';
import '../../../../models/model_hot_video_item.dart';
@@ -180,7 +177,6 @@ class VideoIntroController extends GetxController
Future queryUserStat() async {
var result = await UserHttp.userStat(mid: videoDetail.value.owner!.mid!);
if (result['status']) {
print(result['data']);
userStat.value = result['data'];
userStat.refresh();
}
@@ -288,7 +284,6 @@ class VideoIntroController extends GetxController
void coinVideo(int coin) async {
var res = await VideoHttp.coinVideo(bvid: bvid, multiply: coin);
if (res['status']) {
print(res);
SmartDialog.showToast('投币成功');
hasCoin.value = true;
videoDetail.value.stat!.coin = videoDetail.value.stat!.coin! + coin;
@@ -393,7 +388,7 @@ class VideoIntroController extends GetxController
}
} catch (e) {
// ignore: avoid_print
print(e);
debugPrint(e.toString());
}
SmartDialog.showLoading(msg: '请求中');
var result = await VideoHttp.favVideo(

View File

@@ -115,14 +115,14 @@ class VideoInfo extends StatefulWidget {
final Function showEpisodes;
const VideoInfo({
Key? key,
super.key,
this.loadingStatus = false,
this.videoDetail,
this.heroTag,
required this.showAiBottomSheet,
required this.showIntroDetail,
required this.showEpisodes,
}) : super(key: key);
});
@override
State<VideoInfo> createState() => _VideoInfoState();
@@ -300,10 +300,7 @@ class _VideoInfoState extends State<VideoInfo> with TickerProviderStateMixin {
const SizedBox(height: 0),
Obx(
() => Text(
Utils.numFormat(videoIntroController
.userStat.value['follower']),
semanticsLabel:
"${Utils.numFormat(videoIntroController.userStat.value['follower'])}粉丝",
'${Utils.numFormat(videoIntroController.userStat.value['follower'])}粉丝',
style: TextStyle(
fontSize: 12,
color: t.colorScheme.outline,

View File

@@ -17,7 +17,7 @@ class ActionItem extends StatefulWidget {
final Function? callBack;
const ActionItem({
Key? key,
super.key,
this.icon,
this.selectIcon,
this.onTap,
@@ -29,7 +29,7 @@ class ActionItem extends StatefulWidget {
this.hasOneThree = false,
this.callBack,
required this.semanticsLabel,
}) : super(key: key);
});
@override
State<ActionItem> createState() => ActionItemState();

View File

@@ -11,7 +11,7 @@ class ActionRowItem extends StatelessWidget {
final Function? onLongPress;
const ActionRowItem({
Key? key,
super.key,
this.icon,
this.selectIcon,
this.onTap,
@@ -19,7 +19,7 @@ class ActionRowItem extends StatelessWidget {
this.text,
this.selectStatus = false,
this.onLongPress,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

View File

@@ -6,8 +6,6 @@ import 'package:PiliPalaX/http/member.dart';
import 'package:PiliPalaX/models/member/tags.dart';
import 'package:PiliPalaX/utils/feed_back.dart';
import '../../../../../utils/utils.dart';
class GroupPanel extends StatefulWidget {
final int? mid;
final List? tags;

View File

@@ -12,7 +12,7 @@ class MenuRow extends StatelessWidget {
Widget build(BuildContext context) {
return Container(
width: double.infinity,
color: Theme.of(context).colorScheme.background,
color: Theme.of(context).colorScheme.surface,
padding: const EdgeInsets.only(top: 9, bottom: 9, left: 12),
child: SingleChildScrollView(
scrollDirection: Axis.horizontal,
@@ -84,7 +84,7 @@ class MenuRow extends StatelessWidget {
style: TextStyle(
fontSize: 13,
color: selectStatus
? Theme.of(context).colorScheme.onBackground
? Theme.of(context).colorScheme.onSurface
: Theme.of(context).colorScheme.outline),
),
),

View File

@@ -770,7 +770,7 @@ InlineSpan buildContent(
0;
isValid = seek * 1000 <= duration;
} catch (e) {
print('failed to validate: $e');
debugPrint('failed to validate: $e');
}
spanChildren.add(
TextSpan(

View File

@@ -155,7 +155,7 @@ class _VideoReplyNewDialogState extends State<VideoReplyNewDialog>
topLeft: Radius.circular(12),
topRight: Radius.circular(12),
),
color: Theme.of(context).colorScheme.background,
color: Theme.of(context).colorScheme.surface,
),
child: Column(
mainAxisSize: MainAxisSize.min,

View File

@@ -43,7 +43,7 @@ import '../../../services/shutdown_timer_service.dart';
import 'widgets/header_control.dart';
class VideoDetailPage extends StatefulWidget {
const VideoDetailPage({Key? key}) : super(key: key);
const VideoDetailPage({super.key});
@override
State<VideoDetailPage> createState() => _VideoDetailPageState();
@@ -355,7 +355,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
}
super.didPopNext();
videoDetailController.isFirstTime = false;
final bool autoplay = autoPlayEnable;
// final bool autoplay = autoPlayEnable;
videoDetailController.autoPlay.value =
!videoDetailController.isShowCover.value;
if (videoDetailController.videoUrl != null) {
@@ -372,11 +372,11 @@ class _VideoDetailPageState extends State<VideoDetailPage>
videoIntroController.isPaused = false;
// if (autoplay) {
// // await Future.delayed(const Duration(milliseconds: 300));
// print(plPlayerController);
// debugPrint(plPlayerController);
// if (plPlayerController?.buffered.value == Duration.zero) {
// _bufferedListener = plPlayerController?.buffered.listen((p0) {
// print("p0");
// print(p0);
// debugPrint("p0");
// debugPrint(p0);
// if (p0 > Duration.zero) {
// _bufferedListener!.cancel();
// plPlayerController?.seekTo(videoDetailController.defaultST);
@@ -463,7 +463,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
() {
double videoHeight = context.width * 9 / 16;
final double videoWidth = context.width;
// print(videoDetailController.tabCtr.index);
// debugPrint(videoDetailController.tabCtr.index);
if (enableVerticalExpand &&
plPlayerController?.direction.value == 'vertical') {
videoHeight = context.width;

View File

@@ -10,9 +10,9 @@ class AiDetail extends StatelessWidget {
final ModelResult? modelResult;
const AiDetail({
Key? key,
super.key,
this.modelResult,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

View File

@@ -6,12 +6,12 @@ class ScrollAppBar extends StatelessWidget {
final Function callback;
final PlayerStatus playerStatus;
const ScrollAppBar(
this.scrollVal,
this.callback,
this.playerStatus,
Key? key,
) : super(key: key);
const ScrollAppBar({
super.key,
required this.scrollVal,
required this.callback,
required this.playerStatus,
});
@override
Widget build(BuildContext context) {
@@ -29,7 +29,7 @@ class ScrollAppBar extends StatelessWidget {
opacity: scrollDistance / (videoHeight - kToolbarHeight),
child: Container(
height: statusBarHeight + kToolbarHeight,
color: Theme.of(context).colorScheme.background,
color: Theme.of(context).colorScheme.surface,
padding: EdgeInsets.only(top: statusBarHeight),
child: AppBar(
primary: false,

View File

@@ -167,9 +167,9 @@ class _HeaderControlState extends State<HeaderControl> {
// scale: 0.75,
// child: Switch(
// thumbIcon: WidgetStateProperty.resolveWith<Icon?>(
// (Set<MaterialState> states) {
// (Set<WidgetState> states) {
// if (states.isNotEmpty &&
// states.first == MaterialState.selected) {
// states.first == WidgetState.selected) {
// return const Icon(Icons.done);
// }
// return null; // All other states will use the default thumbIcon.
@@ -1328,7 +1328,7 @@ class _HeaderControlState extends State<HeaderControl> {
@override
Widget build(BuildContext context) {
final _ = widget.controller!;
final plPlayerController = widget.controller!;
// final bool isLandscape =
// MediaQuery.of(context).orientation == Orientation.landscape;
@@ -1475,20 +1475,22 @@ class _HeaderControlState extends State<HeaderControl> {
height: 34,
child: Obx(
() => IconButton(
tooltip: "${_.isOpenDanmu.value ? '关闭' : '开启'}弹幕",
tooltip:
"${plPlayerController.isOpenDanmu.value ? '关闭' : '开启'}弹幕",
style: ButtonStyle(
padding: WidgetStateProperty.all(EdgeInsets.zero),
),
onPressed: () {
_.isOpenDanmu.value = !_.isOpenDanmu.value;
setting.put(
SettingBoxKey.enableShowDanmaku, _.isOpenDanmu.value);
plPlayerController.isOpenDanmu.value =
!plPlayerController.isOpenDanmu.value;
setting.put(SettingBoxKey.enableShowDanmaku,
plPlayerController.isOpenDanmu.value);
SmartDialog.showToast(
"${_.isOpenDanmu.value ? '开启' : '关闭'}弹幕",
"${plPlayerController.isOpenDanmu.value ? '开启' : '关闭'}弹幕",
displayTime: const Duration(seconds: 1));
},
icon: Icon(
_.isOpenDanmu.value
plPlayerController.isOpenDanmu.value
? Icons.subtitles_outlined
: Icons.subtitles_off_outlined,
size: 19,
@@ -1514,7 +1516,7 @@ class _HeaderControlState extends State<HeaderControl> {
bool enableBackgroundPlay = setting.get(
SettingBoxKey.enableBackgroundPlay,
defaultValue: false);
if (!enableBackgroundPlay) {
if (!enableBackgroundPlay && context.mounted) {
// SmartDialog.showToast('建议开启【后台播放】功能\n避免画中画没有暂停按钮');
// await Future.delayed(const Duration(seconds: 2), () {
// });
@@ -1551,7 +1553,8 @@ class _HeaderControlState extends State<HeaderControl> {
}),
),
onPressed: () async {
_.setBackgroundPlay(true);
plPlayerController
.setBackgroundPlay(true);
SmartDialog.showToast("请重新载入本页面刷新");
// Get.back();
},

View File

@@ -1,5 +1,6 @@
// ignore_for_file: avoid_print
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:PiliPalaX/http/init.dart';
import 'package:PiliPalaX/utils/event_bus.dart';
@@ -56,17 +57,16 @@ class WebviewController extends GetxController {
},
onPageFinished: (String url) async {
if (type.value == 'liveRoom') {
print("adding");
//注入js
controller.runJavaScriptReturningResult('''
document.styleSheets[0].insertRule('div.open-app-btn.bili-btn-warp {display:none;}', 0);
document.styleSheets[0].insertRule('#app__display-area > div.control-panel {display:none;}', 0);
''').then((value) => print(value));
''').then((value) => debugPrint(value.toString()));
} else if (type.value == 'whisper') {
controller.runJavaScriptReturningResult('''
document.querySelector('#internationalHeader').remove();
document.querySelector('#message-navbar').remove();
''').then((value) => print(value));
''').then((value) => debugPrint(value.toString()));
}
pageTitle.value = await controller.getTitle() ?? '';
},

View File

@@ -3,7 +3,6 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:url_launcher/url_launcher.dart';
import 'controller.dart';
import 'package:webview_flutter/webview_flutter.dart';

View File

@@ -39,8 +39,8 @@ class WhisperDetailController extends GetxController {
if (messageList.length == 1 &&
messageList.last.msgType == 18 &&
messageList.last.msgSource == 18) {
// print(messageList.last);
// print(messageList.last.content);
// debugPrint(messageList.last);
// debugPrint(messageList.last.content);
//{content: [{"text":"对方主动回复或关注你前最多发送1条消息","color_day":"#9499A0","color_nig":"#9499A0"}]}
} else {
ackSessionMsg();
@@ -96,7 +96,7 @@ class WhisperDetailController extends GetxController {
msgType: picMsg != null ? 2 : 1,
);
if (result['status']) {
// print(result['data']);
// debugPrint(result['data']);
querySessionMsg();
replyContentController.text = "";
SmartDialog.dismiss();

View File

@@ -163,7 +163,7 @@ class _WhisperDetailPageState extends State<WhisperDetailPage> {
itemBuilder: (_, int i) {
return ChatItem(
item: messageList[i],
e_infos: _whisperDetailController.eInfos,
eInfos: _whisperDetailController.eInfos,
);
},
padding: const EdgeInsets.only(bottom: 20),

View File

@@ -1,5 +1,3 @@
// ignore_for_file: must_be_immutable
import 'dart:convert';
import 'package:flutter/material.dart';
@@ -40,13 +38,13 @@ enum MsgType {
}
class ChatItem extends StatelessWidget {
dynamic item;
List? e_infos;
final dynamic item;
final List? eInfos;
ChatItem({
const ChatItem({
super.key,
this.item,
this.e_infos,
this.eInfos,
});
@override
@@ -55,11 +53,11 @@ class ChatItem extends StatelessWidget {
item.senderUid == GStorage.userInfo.get('userInfoCache')?.mid;
bool isPic = item.msgType == MsgType.pic.value; // 图片
bool isText = item.msgType == MsgType.text.value; // 文本
// bool isText = item.msgType == MsgType.text.value; // 文本
// bool isArchive = item.msgType == 11; // 投稿
// bool isArticle = item.msgType == 12; // 专栏
bool isRevoke = item.msgType == MsgType.revoke.value; // 撤回消息
bool isShareV2 = item.msgType == MsgType.share_v2.value;
// bool isShareV2 = item.msgType == MsgType.share_v2.value;
bool isSystem = item.msgType == MsgType.notify_text.value ||
item.msgType == MsgType.notify_msg.value ||
item.msgType == MsgType.pic_card.value ||
@@ -73,17 +71,16 @@ class ChatItem extends StatelessWidget {
Widget richTextMessage(BuildContext context) {
var text = content['content'];
if (e_infos != null) {
if (eInfos != null) {
final List<InlineSpan> children = [];
Map<String, String> emojiMap = {};
for (var e in e_infos!) {
for (var e in eInfos!) {
emojiMap[e['text']] = e['url'];
}
text.splitMapJoin(
RegExp(r"\[[^\[\]]+\]"),
onMatch: (Match match) {
final String emojiKey = match[0]!;
print(emojiKey);
if (emojiMap.containsKey(emojiKey)) {
children.add(WidgetSpan(
child: NetworkImgLayer(
@@ -457,8 +454,8 @@ class ChatItem extends StatelessWidget {
}
class SystemNotice extends StatelessWidget {
dynamic item;
SystemNotice({super.key, this.item});
final dynamic item;
const SystemNotice({super.key, this.item});
@override
Widget build(BuildContext context) {
@@ -515,8 +512,8 @@ class SystemNotice extends StatelessWidget {
}
class SystemNotice2 extends StatelessWidget {
dynamic item;
SystemNotice2({super.key, this.item});
final dynamic item;
const SystemNotice2({super.key, this.item});
@override
Widget build(BuildContext context) {