mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-06-26 12:20:17 +08:00
fix: danmaku block
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -2,22 +2,18 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
|
||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
import 'package:PiliPalaX/http/init.dart';
|
||||
import 'package:PiliPalaX/models/common/theme_type.dart';
|
||||
import 'package:PiliPalaX/utils/feed_back.dart';
|
||||
import 'package:PiliPalaX/utils/login.dart';
|
||||
import 'package:PiliPalaX/utils/storage.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
import '../../models/common/dynamic_badge_mode.dart';
|
||||
import '../../models/common/nav_bar_config.dart';
|
||||
import '../main/index.dart';
|
||||
import 'widgets/select_dialog.dart';
|
||||
|
||||
class SettingController extends GetxController {
|
||||
Box userInfoCache = GStorage.userInfo;
|
||||
Box setting = GStorage.setting;
|
||||
Box localCache = GStorage.localCache;
|
||||
|
||||
RxBool userLogin = false.obs;
|
||||
RxBool hiddenSettingUnlocked = false.obs;
|
||||
RxBool feedBackEnable = false.obs;
|
||||
@@ -29,10 +25,12 @@ class SettingController extends GetxController {
|
||||
Rx<DynamicBadgeMode> dynamicBadgeType = DynamicBadgeMode.number.obs;
|
||||
RxInt defaultHomePage = 0.obs;
|
||||
|
||||
Box get setting => GStorage.setting;
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
super.onInit();
|
||||
userInfo = userInfoCache.get('userInfoCache');
|
||||
userInfo = GStorage.userInfo.get('userInfoCache');
|
||||
userLogin.value = userInfo != null;
|
||||
hiddenSettingUnlocked.value =
|
||||
setting.get(SettingBoxKey.hiddenSettingUnlocked, defaultValue: false);
|
||||
@@ -71,8 +69,8 @@ class SettingController extends GetxController {
|
||||
await CookieManager().deleteAllCookies();
|
||||
Request.dio.options.headers['cookie'] = '';
|
||||
// 清空本地存储的用户标识
|
||||
userInfoCache.put('userInfoCache', null);
|
||||
localCache.put(LocalCacheKey.accessKey,
|
||||
GStorage.userInfo.put('userInfoCache', null);
|
||||
GStorage.localCache.put(LocalCacheKey.accessKey,
|
||||
{'mid': -1, 'value': '', 'refresh': ''});
|
||||
userLogin.value = false;
|
||||
if (Get.isRegistered<MainController>()) {
|
||||
|
||||
@@ -7,11 +7,11 @@ import 'package:PiliPalaX/utils/global_data.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
import 'package:PiliPalaX/models/common/dynamics_type.dart';
|
||||
import 'package:PiliPalaX/models/common/reply_sort_type.dart';
|
||||
import 'package:PiliPalaX/pages/setting/widgets/select_dialog.dart';
|
||||
import 'package:PiliPalaX/utils/storage.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
|
||||
|
||||
import '../home/index.dart';
|
||||
@@ -26,7 +26,6 @@ class ExtraSetting extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _ExtraSettingState extends State<ExtraSetting> {
|
||||
Box setting = GStorage.setting;
|
||||
final SettingController settingController = Get.put(SettingController());
|
||||
late dynamic defaultReplySort;
|
||||
late dynamic defaultDynamicType;
|
||||
@@ -36,6 +35,8 @@ class _ExtraSettingState extends State<ExtraSetting> {
|
||||
late String defaultSystemProxyPort;
|
||||
bool userLogin = false;
|
||||
|
||||
Box get setting => GStorage.setting;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
@@ -201,8 +202,8 @@ class _ExtraSettingState extends State<ExtraSetting> {
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
Get.back();
|
||||
GStorage.setting
|
||||
.put(SettingBoxKey.dynamicPeriod, dynamicPeriod);
|
||||
setting.put(
|
||||
SettingBoxKey.dynamicPeriod, dynamicPeriod);
|
||||
Get.find<MainController>().dynamicPeriod =
|
||||
dynamicPeriod;
|
||||
},
|
||||
|
||||
@@ -219,13 +219,14 @@ class _ColorSelectPageState extends State<ColorSelectPage> {
|
||||
}
|
||||
|
||||
class ColorSelectController extends GetxController {
|
||||
Box setting = GStorage.setting;
|
||||
RxBool dynamicColor = true.obs;
|
||||
RxInt type = 0.obs;
|
||||
late final List<Map<String, dynamic>> colorThemes;
|
||||
RxInt currentColor = 0.obs;
|
||||
RxDouble currentTextScale = 1.0.obs;
|
||||
|
||||
Box get setting => GStorage.setting;
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
colorThemes = colorThemeTypes;
|
||||
|
||||
@@ -16,7 +16,8 @@ class _SetDisplayModeState extends State<SetDisplayMode> {
|
||||
List<DisplayMode> modes = <DisplayMode>[];
|
||||
DisplayMode? active;
|
||||
DisplayMode? preferred;
|
||||
Box setting = GStorage.setting;
|
||||
|
||||
Box get setting => GStorage.setting;
|
||||
|
||||
final ValueNotifier<int> page = ValueNotifier<int>(0);
|
||||
late final PageController controller = PageController()
|
||||
|
||||
@@ -11,13 +11,14 @@ class FontSizeSelectPage extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _FontSizeSelectPageState extends State<FontSizeSelectPage> {
|
||||
Box setting = GStorage.setting;
|
||||
List<double> list = List.generate(16, (index) => 0.85 + index * 0.05);
|
||||
//[0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35];
|
||||
late double minSize;
|
||||
late double maxSize;
|
||||
late double currentSize;
|
||||
|
||||
Box get setting => GStorage.setting;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
import 'package:PiliPalaX/models/common/tab_type.dart';
|
||||
import 'package:PiliPalaX/utils/storage.dart';
|
||||
|
||||
@@ -12,7 +11,6 @@ class TabbarSetPage extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _TabbarSetPageState extends State<TabbarSetPage> {
|
||||
Box settingStorage = GStorage.setting;
|
||||
late List defaultTabs;
|
||||
late List<String> tabbarSort;
|
||||
|
||||
@@ -20,7 +18,7 @@ class _TabbarSetPageState extends State<TabbarSetPage> {
|
||||
void initState() {
|
||||
super.initState();
|
||||
defaultTabs = tabsConfig;
|
||||
tabbarSort = settingStorage
|
||||
tabbarSort = GStorage.setting
|
||||
.get(SettingBoxKey.tabbarSort,
|
||||
defaultValue: ['live', 'rcmd', 'hot', 'rank', 'bangumi'])
|
||||
.map<String>((i) => i.toString())
|
||||
@@ -43,7 +41,7 @@ class _TabbarSetPageState extends State<TabbarSetPage> {
|
||||
.where((i) => tabbarSort.contains((i['type'] as TabType).id))
|
||||
.map<String>((i) => (i['type'] as TabType).id)
|
||||
.toList();
|
||||
settingStorage.put(SettingBoxKey.tabbarSort, sortedTabbar);
|
||||
GStorage.setting.put(SettingBoxKey.tabbarSort, sortedTabbar);
|
||||
SmartDialog.showToast('保存成功,下次启动时生效');
|
||||
}
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ import 'package:flutter/services.dart';
|
||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:PiliPalaX/pages/setting/widgets/switch_item.dart';
|
||||
import 'package:PiliPalaX/plugin/pl_player/index.dart';
|
||||
import 'package:PiliPalaX/utils/storage.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
|
||||
class PlaySpeedPage extends StatefulWidget {
|
||||
const PlaySpeedPage({super.key});
|
||||
@@ -45,15 +45,17 @@ class _PlaySpeedPageState extends State<PlaySpeedPage> {
|
||||
},
|
||||
];
|
||||
|
||||
Box get video => GStorage.video;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
// 默认倍速
|
||||
playSpeedDefault =
|
||||
videoStorage.get(VideoBoxKey.playSpeedDefault, defaultValue: 1.0);
|
||||
video.get(VideoBoxKey.playSpeedDefault, defaultValue: 1.0);
|
||||
// 默认长按倍速
|
||||
longPressSpeedDefault =
|
||||
videoStorage.get(VideoBoxKey.longPressSpeedDefault, defaultValue: 3.0);
|
||||
video.get(VideoBoxKey.longPressSpeedDefault, defaultValue: 3.0);
|
||||
// 倍速
|
||||
speedList = GStorage.speedList;
|
||||
enableAutoLongPressSpeed = GStorage.setting
|
||||
@@ -113,7 +115,7 @@ class _PlaySpeedPageState extends State<PlaySpeedPage> {
|
||||
Get.back();
|
||||
speedList.add(customSpeed);
|
||||
speedList.sort();
|
||||
await videoStorage.put(VideoBoxKey.speedsList, speedList);
|
||||
await video.put(VideoBoxKey.speedsList, speedList);
|
||||
setState(() {});
|
||||
}
|
||||
},
|
||||
@@ -165,12 +167,11 @@ class _PlaySpeedPageState extends State<PlaySpeedPage> {
|
||||
if (id == 1) {
|
||||
// 设置默认倍速
|
||||
playSpeedDefault = speed;
|
||||
videoStorage.put(VideoBoxKey.playSpeedDefault, playSpeedDefault);
|
||||
video.put(VideoBoxKey.playSpeedDefault, playSpeedDefault);
|
||||
} else if (id == 2) {
|
||||
// 设置默认长按倍速
|
||||
longPressSpeedDefault = speed;
|
||||
videoStorage.put(
|
||||
VideoBoxKey.longPressSpeedDefault, longPressSpeedDefault);
|
||||
video.put(VideoBoxKey.longPressSpeedDefault, longPressSpeedDefault);
|
||||
} else if (id == -1) {
|
||||
if ([
|
||||
1.0,
|
||||
@@ -181,7 +182,7 @@ class _PlaySpeedPageState extends State<PlaySpeedPage> {
|
||||
return;
|
||||
}
|
||||
speedList.removeAt(index);
|
||||
await videoStorage.put(VideoBoxKey.speedsList, speedList);
|
||||
await video.put(VideoBoxKey.speedsList, speedList);
|
||||
}
|
||||
setState(() {});
|
||||
}
|
||||
@@ -194,7 +195,7 @@ class _PlaySpeedPageState extends State<PlaySpeedPage> {
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () async {
|
||||
await videoStorage.delete(VideoBoxKey.speedsList);
|
||||
await video.delete(VideoBoxKey.speedsList);
|
||||
speedList = GStorage.speedList;
|
||||
setState(() {});
|
||||
},
|
||||
|
||||
@@ -3,11 +3,11 @@ import 'dart:io';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
import 'package:PiliPalaX/pages/setting/widgets/select_dialog.dart';
|
||||
import 'package:PiliPalaX/plugin/pl_player/index.dart';
|
||||
import 'package:PiliPalaX/services/service_locator.dart';
|
||||
import 'package:PiliPalaX/utils/storage.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
|
||||
import '../../models/video/play/subtitle.dart';
|
||||
import 'widgets/switch_item.dart';
|
||||
@@ -20,11 +20,12 @@ class PlaySetting extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _PlaySettingState extends State<PlaySetting> {
|
||||
Box setting = GStorage.setting;
|
||||
late String defaultSubtitlePreference;
|
||||
late int defaultFullScreenMode;
|
||||
late int defaultBtmProgressBehavior;
|
||||
|
||||
Box get setting => GStorage.setting;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import 'package:flutter/material.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/utils/storage.dart';
|
||||
|
||||
@@ -17,14 +16,13 @@ class PrivacySetting extends StatefulWidget {
|
||||
|
||||
class _PrivacySettingState extends State<PrivacySetting> {
|
||||
bool userLogin = false;
|
||||
Box userInfoCache = GStorage.userInfo;
|
||||
UserInfoData? userInfo;
|
||||
late bool hiddenSettingUnlocked;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
userInfo = userInfoCache.get('userInfoCache');
|
||||
userInfo = GStorage.userInfo.get('userInfoCache');
|
||||
userLogin = userInfo != null;
|
||||
hiddenSettingUnlocked = GStorage.setting
|
||||
.get(SettingBoxKey.hiddenSettingUnlocked, defaultValue: false);
|
||||
|
||||
@@ -19,10 +19,7 @@ class RecommendSetting extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _RecommendSettingState extends State<RecommendSetting> {
|
||||
Box setting = GStorage.setting;
|
||||
static Box localCache = GStorage.localCache;
|
||||
late dynamic defaultRcmdType;
|
||||
Box userInfoCache = GStorage.userInfo;
|
||||
late dynamic userInfo;
|
||||
bool userLogin = false;
|
||||
late dynamic accessKeyInfo;
|
||||
@@ -31,15 +28,18 @@ class _RecommendSettingState extends State<RecommendSetting> {
|
||||
late int minLikeRatioForRecommend;
|
||||
late String banWordForRecommend;
|
||||
|
||||
Box get setting => GStorage.setting;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
// 首页默认推荐类型
|
||||
defaultRcmdType =
|
||||
setting.get(SettingBoxKey.defaultRcmdType, defaultValue: 'app');
|
||||
userInfo = userInfoCache.get('userInfoCache');
|
||||
userInfo = GStorage.userInfo.get('userInfoCache');
|
||||
userLogin = userInfo != null;
|
||||
accessKeyInfo = localCache.get(LocalCacheKey.accessKey, defaultValue: null);
|
||||
accessKeyInfo =
|
||||
GStorage.localCache.get(LocalCacheKey.accessKey, defaultValue: null);
|
||||
// filterUnfollowedRatio = setting
|
||||
// .get(SettingBoxKey.filterUnfollowedRatio, defaultValue: 0);
|
||||
minDurationForRcmd =
|
||||
|
||||
@@ -11,6 +11,7 @@ import 'package:dio/dio.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
|
||||
import 'package:uuid/uuid.dart';
|
||||
|
||||
@@ -33,6 +34,8 @@ class _SponsorBlockPageState extends State<SponsorBlockPage> {
|
||||
late bool _blockTrack;
|
||||
bool? _serverStatus;
|
||||
|
||||
Box get setting => GStorage.setting;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
@@ -116,8 +119,7 @@ class _SponsorBlockPageState extends State<SponsorBlockPage> {
|
||||
Get.back();
|
||||
_blockLimit = max(
|
||||
0.0, double.tryParse(_textController.text) ?? 0.0);
|
||||
await GStorage.setting
|
||||
.put(SettingBoxKey.blockLimit, _blockLimit);
|
||||
await setting.put(SettingBoxKey.blockLimit, _blockLimit);
|
||||
setState(() {});
|
||||
},
|
||||
child: Text('确定'),
|
||||
@@ -180,8 +182,7 @@ class _SponsorBlockPageState extends State<SponsorBlockPage> {
|
||||
onPressed: () async {
|
||||
Get.back();
|
||||
_userId = Uuid().v4().replaceAll('-', '');
|
||||
await GStorage.setting
|
||||
.put(SettingBoxKey.blockUserID, _userId);
|
||||
await setting.put(SettingBoxKey.blockUserID, _userId);
|
||||
setState(() {});
|
||||
},
|
||||
child: Text('随机'),
|
||||
@@ -200,8 +201,7 @@ class _SponsorBlockPageState extends State<SponsorBlockPage> {
|
||||
if (key.currentState?.validate() == true) {
|
||||
Get.back();
|
||||
_userId = _textController.text;
|
||||
await GStorage.setting
|
||||
.put(SettingBoxKey.blockUserID, _userId);
|
||||
await setting.put(SettingBoxKey.blockUserID, _userId);
|
||||
setState(() {});
|
||||
}
|
||||
},
|
||||
@@ -216,13 +216,13 @@ class _SponsorBlockPageState extends State<SponsorBlockPage> {
|
||||
|
||||
void _updateBlockToast() async {
|
||||
_blockToast = !_blockToast;
|
||||
await GStorage.setting.put(SettingBoxKey.blockToast, _blockToast);
|
||||
await setting.put(SettingBoxKey.blockToast, _blockToast);
|
||||
setState(() {});
|
||||
}
|
||||
|
||||
void _updateBlockTrack() async {
|
||||
_blockTrack = !_blockTrack;
|
||||
await GStorage.setting.put(SettingBoxKey.blockTrack, _blockTrack);
|
||||
await setting.put(SettingBoxKey.blockTrack, _blockTrack);
|
||||
setState(() {});
|
||||
}
|
||||
|
||||
@@ -298,8 +298,8 @@ class _SponsorBlockPageState extends State<SponsorBlockPage> {
|
||||
onPressed: () async {
|
||||
Get.back();
|
||||
_blockServer = HttpString.sponsorBlockBaseUrl;
|
||||
await GStorage.setting
|
||||
.put(SettingBoxKey.blockServer, _blockServer);
|
||||
await setting.put(
|
||||
SettingBoxKey.blockServer, _blockServer);
|
||||
setState(() {});
|
||||
},
|
||||
child: Text('重置'),
|
||||
@@ -317,8 +317,8 @@ class _SponsorBlockPageState extends State<SponsorBlockPage> {
|
||||
onPressed: () async {
|
||||
Get.back();
|
||||
_blockServer = _textController.text;
|
||||
await GStorage.setting
|
||||
.put(SettingBoxKey.blockServer, _blockServer);
|
||||
await setting.put(
|
||||
SettingBoxKey.blockServer, _blockServer);
|
||||
setState(() {});
|
||||
},
|
||||
child: Text('确定'),
|
||||
@@ -439,7 +439,7 @@ class _SponsorBlockPageState extends State<SponsorBlockPage> {
|
||||
callback: (Color? color) async {
|
||||
_blockColor[index] =
|
||||
color ?? _blockSettings[index].first.color;
|
||||
await GStorage.setting.put(
|
||||
await setting.put(
|
||||
SettingBoxKey.blockColor,
|
||||
_blockColor
|
||||
.map((item) =>
|
||||
@@ -491,7 +491,7 @@ class _SponsorBlockPageState extends State<SponsorBlockPage> {
|
||||
initialValue: _blockSettings[index].second,
|
||||
onSelected: (item) async {
|
||||
_blockSettings[index].second = item;
|
||||
await GStorage.setting.put(SettingBoxKey.blockSettings,
|
||||
await setting.put(SettingBoxKey.blockSettings,
|
||||
_blockSettings.map((item) => item.second.index).toList());
|
||||
setState(() {});
|
||||
},
|
||||
|
||||
@@ -4,13 +4,13 @@ import 'package:auto_orientation/auto_orientation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
import 'package:PiliPalaX/models/common/theme_type.dart';
|
||||
import 'package:PiliPalaX/pages/setting/pages/color_select.dart';
|
||||
import 'package:PiliPalaX/pages/setting/widgets/select_dialog.dart';
|
||||
import 'package:PiliPalaX/pages/setting/widgets/slide_dialog.dart';
|
||||
import 'package:PiliPalaX/utils/global_data.dart';
|
||||
import 'package:PiliPalaX/utils/storage.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
|
||||
import '../../models/common/dynamic_badge_mode.dart';
|
||||
import '../../models/common/up_panel_position.dart';
|
||||
@@ -31,11 +31,12 @@ class _StyleSettingState extends State<StyleSetting> {
|
||||
final ColorSelectController colorSelectController =
|
||||
Get.put(ColorSelectController());
|
||||
|
||||
Box setting = GStorage.setting;
|
||||
late ThemeType _tempThemeValue;
|
||||
late double maxRowWidth;
|
||||
late UpPanelPosition upPanelPosition;
|
||||
|
||||
Box get setting => GStorage.setting;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
@@ -18,7 +18,6 @@ class VideoSetting extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _VideoSettingState extends State<VideoSetting> {
|
||||
Box setting = GStorage.setting;
|
||||
late dynamic defaultVideoQa;
|
||||
late dynamic defaultVideoQaCellular;
|
||||
late dynamic defaultAudioQa;
|
||||
@@ -29,6 +28,8 @@ class _VideoSettingState extends State<VideoSetting> {
|
||||
late dynamic videoSync;
|
||||
late dynamic defaultCDNService;
|
||||
|
||||
Box get setting => GStorage.setting;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
import 'package:PiliPalaX/models/video/play/quality.dart';
|
||||
import 'package:PiliPalaX/utils/storage.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
|
||||
class SetSelectItem extends StatefulWidget {
|
||||
final String? title;
|
||||
@@ -19,12 +19,13 @@ class SetSelectItem extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _SetSelectItemState extends State<SetSelectItem> {
|
||||
Box setting = GStorage.setting;
|
||||
late dynamic currentVal;
|
||||
late int currentIndex;
|
||||
late List menus;
|
||||
late List<PopupMenuEntry> popMenuItems;
|
||||
|
||||
Box get setting => GStorage.setting;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
Reference in New Issue
Block a user