添加异常测试功能

增加隐藏设置页

修复无法跳转到隐藏设置页面
This commit is contained in:
KoolShow
2024-02-16 23:06:18 +08:00
committed by orz12
parent 125b7050c1
commit 3109e30f9e
6 changed files with 121 additions and 1 deletions

View File

@@ -2,9 +2,12 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:hive/hive.dart';
import 'package:package_info_plus/package_info_plus.dart'; import 'package:package_info_plus/package_info_plus.dart';
import 'package:pilipala/http/index.dart'; import 'package:pilipala/http/index.dart';
import 'package:pilipala/models/github/latest.dart'; import 'package:pilipala/models/github/latest.dart';
import 'package:pilipala/pages/setting/controller.dart';
import 'package:pilipala/utils/storage.dart';
import 'package:pilipala/utils/utils.dart'; import 'package:pilipala/utils/utils.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import '../../utils/cache_manage.dart'; import '../../utils/cache_manage.dart';
@@ -64,6 +67,7 @@ class _AboutPageState extends State<AboutPage> {
), ),
Obx( Obx(
() => ListTile( () => ListTile(
onTap: () => _aboutController.tapOnVersion(),
title: const Text('当前版本'), title: const Text('当前版本'),
trailing: Text(_aboutController.currentVersion.value, trailing: Text(_aboutController.currentVersion.value,
style: subTitleStyle), style: subTitleStyle),
@@ -174,12 +178,15 @@ class _AboutPageState extends State<AboutPage> {
} }
class AboutController extends GetxController { class AboutController extends GetxController {
Box setting = GStrorage.setting;
final SettingController settingController = Get.put(SettingController());
RxString currentVersion = ''.obs; RxString currentVersion = ''.obs;
RxString remoteVersion = ''.obs; RxString remoteVersion = ''.obs;
late LatestDataModel remoteAppInfo; late LatestDataModel remoteAppInfo;
RxBool isUpdate = true.obs; RxBool isUpdate = true.obs;
RxBool isLoading = true.obs; RxBool isLoading = true.obs;
late LatestDataModel data; late LatestDataModel data;
RxInt count = 0.obs;
@override @override
void onInit() { void onInit() {
@@ -298,4 +305,16 @@ class AboutController extends GetxController {
logs() { logs() {
Get.toNamed('/logs'); Get.toNamed('/logs');
} }
tapOnVersion() {
if (settingController.hiddenSettingUnlocked.value) {
SmartDialog.showToast('您已解锁隐藏设置, 无需再次操作');
return;
}
count.value++;
if (count.value == 5) {
setting.put(SettingBoxKey.hiddenSettingUnlocked, true);
SmartDialog.showToast('恭喜您发现了隐藏设置!');
}
}
} }

View File

@@ -17,6 +17,7 @@ class SettingController extends GetxController {
Box localCache = GStrorage.localCache; Box localCache = GStrorage.localCache;
RxBool userLogin = false.obs; RxBool userLogin = false.obs;
RxBool hiddenSettingUnlocked = false.obs;
RxBool feedBackEnable = false.obs; RxBool feedBackEnable = false.obs;
RxDouble toastOpacity = (1.0).obs; RxDouble toastOpacity = (1.0).obs;
RxInt picQuality = 10.obs; RxInt picQuality = 10.obs;
@@ -29,6 +30,7 @@ class SettingController extends GetxController {
super.onInit(); super.onInit();
userInfo = userInfoCache.get('userInfoCache'); userInfo = userInfoCache.get('userInfoCache');
userLogin.value = userInfo != null; userLogin.value = userInfo != null;
hiddenSettingUnlocked.value = setting.get(SettingBoxKey.hiddenSettingUnlocked, defaultValue: false);
feedBackEnable.value = feedBackEnable.value =
setting.get(SettingBoxKey.feedBackEnable, defaultValue: false); setting.get(SettingBoxKey.feedBackEnable, defaultValue: false);
toastOpacity.value = toastOpacity.value =

View File

@@ -0,0 +1,85 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:hive/hive.dart';
import 'package:pilipala/utils/storage.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!;
TextStyle subTitleStyle = Theme.of(context)
.textTheme
.labelMedium!
.copyWith(color: Theme.of(context).colorScheme.outline);
return Scaffold(
appBar: AppBar(
centerTitle: false,
titleSpacing: 0,
title: Text(
'隐藏设置',
style: Theme.of(context).textTheme.titleMedium,
),
),
body: Column(
children: [
ListTile(
onTap: () {
RxInt zero = 0.obs;
1 / zero.value;
},
dense: false,
title: Text('产生除以0异常', style: titleStyle),
),
ListTile(
onTap: () {
List list = [];
test(list[0]);
},
dense: false,
title: Text('产生数组越界异常', style: titleStyle),
),
ListTile(
onTap: () {
RxInt? integer;
test(integer!.value);
},
dense: false,
title: Text('产生空异常', style: titleStyle),
subtitle: Text('空安全: 喵喵喵?', style: subTitleStyle),
),
ListTile(
onTap: () {
int.parse("");
},
dense: false,
title: Text('产生整数解析异常', style: titleStyle),
),
ListTile(
onTap: () {
throw Exception("测试异常");
},
dense: false,
title: Text('产生测试异常', style: titleStyle),
),
],
),
);
}
}

View File

@@ -44,6 +44,16 @@ class SettingPage extends StatelessWidget {
dense: false, dense: false,
title: const Text('其他设置'), title: const Text('其他设置'),
), ),
Obx(
() => Visibility(
visible: settingController.hiddenSettingUnlocked.value,
child: ListTile(
onTap: () => Get.toNamed('/hiddenSetting'),
dense: false,
title: const Text('隐藏设置'),
),
),
),
Obx( Obx(
() => Visibility( () => Visibility(
visible: settingController.userLogin.value, visible: settingController.userLogin.value,

View File

@@ -47,6 +47,7 @@ import '../pages/setting/recommend_setting.dart';
import '../pages/setting/play_setting.dart'; import '../pages/setting/play_setting.dart';
import '../pages/setting/privacy_setting.dart'; import '../pages/setting/privacy_setting.dart';
import '../pages/setting/style_setting.dart'; import '../pages/setting/style_setting.dart';
import '../pages/setting/hidden_settings.dart';
import '../pages/video/detail/index.dart'; import '../pages/video/detail/index.dart';
import '../pages/video/detail/reply_reply/index.dart'; import '../pages/video/detail/reply_reply/index.dart';
import '../pages/webview/index.dart'; import '../pages/webview/index.dart';
@@ -121,6 +122,8 @@ class Routes {
// //
CustomGetPage(name: '/blackListPage', page: () => const BlackListPage()), CustomGetPage(name: '/blackListPage', page: () => const BlackListPage()),
CustomGetPage(name: '/colorSetting', page: () => const ColorSelectPage()), CustomGetPage(name: '/colorSetting', page: () => const ColorSelectPage()),
// 隐藏设置
CustomGetPage(name: '/hiddenSetting', page: () => const HiddenSetting()),
// 首页tabbar // 首页tabbar
CustomGetPage(name: '/tabbarSetting', page: () => const TabbarSetPage()), CustomGetPage(name: '/tabbarSetting', page: () => const TabbarSetPage()),
CustomGetPage( CustomGetPage(

View File

@@ -138,7 +138,8 @@ class SettingBoxKey {
hideSearchBar = 'hideSearchBar', // 收起顶栏 hideSearchBar = 'hideSearchBar', // 收起顶栏
hideTabBar = 'hideTabBar', // 收起底栏 hideTabBar = 'hideTabBar', // 收起底栏
tabbarSort = 'tabbarSort', // 首页tabbar tabbarSort = 'tabbarSort', // 首页tabbar
dynamicBadgeMode = 'dynamicBadgeMode'; dynamicBadgeMode = 'dynamicBadgeMode',
hiddenSettingUnlocked = 'hiddenSettingUnlocked';
} }
class LocalCacheKey { class LocalCacheKey {