diff --git a/lib/pages/bangumi/introduction/controller.dart b/lib/pages/bangumi/introduction/controller.dart index 58f822896..e17451a3d 100644 --- a/lib/pages/bangumi/introduction/controller.dart +++ b/lib/pages/bangumi/introduction/controller.dart @@ -457,10 +457,10 @@ class BangumiIntroController extends CommonController { return false; } } - int epid = episodes[prevIndex].epid!; - int cid = episodes[prevIndex].cid!; - String bvid = episodes[prevIndex].bvid!; - int aid = episodes[prevIndex].aid!; + int epid = episodes[prevIndex].epId; + int cid = episodes[prevIndex].cid; + String bvid = episodes[prevIndex].bvid; + int aid = episodes[prevIndex].aid; dynamic cover = episodes[prevIndex].cover; changeSeasonOrbangu(epid, bvid, cid, aid, cover); return true; @@ -493,10 +493,10 @@ class BangumiIntroController extends CommonController { return false; } } - int epid = episodes[nextIndex].epid!; - int cid = episodes[nextIndex].cid!; - String bvid = episodes[nextIndex].bvid!; - int aid = episodes[nextIndex].aid!; + int epid = episodes[nextIndex].epId; + int cid = episodes[nextIndex].cid; + String bvid = episodes[nextIndex].bvid; + int aid = episodes[nextIndex].aid; dynamic cover = episodes[nextIndex].cover; changeSeasonOrbangu(epid, bvid, cid, aid, cover); return true; diff --git a/lib/pages/setting/sponsor_block_page.dart b/lib/pages/setting/sponsor_block_page.dart index f2e0defb1..47820c5d0 100644 --- a/lib/pages/setting/sponsor_block_page.dart +++ b/lib/pages/setting/sponsor_block_page.dart @@ -4,6 +4,7 @@ import 'package:PiliPalaX/common/widgets/pair.dart'; import 'package:PiliPalaX/pages/video/detail/controller.dart' show SegmentType, SegmentTypeExt, SkipType, SkipTypeExt; import 'package:PiliPalaX/utils/storage.dart'; +import 'package:PiliPalaX/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -17,6 +18,7 @@ class SponsorBlockPage extends StatefulWidget { class _SponsorBlockPageState extends State { late double _blockLimit; late List> _blockSettings; + final _url = 'https://github.com/hanydd/BilibiliSponsorBlock'; @override void initState() { @@ -37,122 +39,133 @@ class _SponsorBlockPageState extends State { ), ), body: ListView.separated( - itemCount: _blockSettings.length + 1, - itemBuilder: (_, index) => index == 0 + itemCount: _blockSettings.length + 2, + itemBuilder: (_, index) => index == _blockSettings.length + 1 ? ListTile( - onTap: () { - final textController = - TextEditingController(text: _blockLimit.toString()); - showDialog( - context: context, - builder: (BuildContext context) { - return AlertDialog( - title: const Text('Block Limit'), - content: TextFormField( - keyboardType: - TextInputType.numberWithOptions(decimal: true), - controller: textController, - autofocus: true, - decoration: InputDecoration(suffixText: 's'), - ), - actions: [ - TextButton( - onPressed: Get.back, - child: Text( - '取消', - style: TextStyle( - color: Theme.of(context).colorScheme.outline, - ), + leading: Icon(Icons.code), + title: const Text('About'), + subtitle: Text(_url), + onTap: () => Utils.launchURL(_url), + ) + : index == 0 + ? ListTile( + onTap: () { + final textController = + TextEditingController(text: _blockLimit.toString()); + showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: const Text('Block Limit'), + content: TextFormField( + keyboardType: TextInputType.numberWithOptions( + decimal: true), + controller: textController, + autofocus: true, + decoration: InputDecoration(suffixText: 's'), ), - ), - TextButton( - onPressed: () async { - Get.back(); - _blockLimit = max(0.0, - double.tryParse(textController.text) ?? 0.0); - await GStorage.setting - .put(SettingBoxKey.blockLimit, _blockLimit); - setState(() {}); - }, - child: Text('确定'), - ) - ], + actions: [ + TextButton( + onPressed: Get.back, + child: Text( + '取消', + style: TextStyle( + color: + Theme.of(context).colorScheme.outline, + ), + ), + ), + TextButton( + onPressed: () async { + Get.back(); + _blockLimit = max( + 0.0, + double.tryParse(textController.text) ?? + 0.0); + await GStorage.setting.put( + SettingBoxKey.blockLimit, _blockLimit); + setState(() {}); + }, + child: Text('确定'), + ) + ], + ); + }, ); }, - ); - }, - leading: Icon(Icons.av_timer), - title: const Text('Block Limit'), - trailing: Text( - '${_blockLimit}s', - style: TextStyle(fontSize: 13), - ), - ) - : ListTile( - leading: Container( - height: 24, - width: 24, - alignment: Alignment.center, - child: Container( - height: 10, - width: 10, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: _blockSettings[index - 1].first.color, + leading: Icon(Icons.av_timer), + title: const Text('Block Limit'), + trailing: Text( + '${_blockLimit}s', + style: TextStyle(fontSize: 13), ), - ), - ), - title: Text( - _blockSettings[index - 1].first.name, - style: _blockSettings[index - 1].second == SkipType.disable - ? TextStyle( - color: Theme.of(context).colorScheme.outline, - ) - : null, - ), - trailing: PopupMenuButton( - initialValue: _blockSettings[index - 1].second, - onSelected: (item) async { - _blockSettings[index - 1].second = item; - await GStorage.setting.put( - SettingBoxKey.blockSettings, - _blockSettings - .map((item) => item.second.index) - .toList()); - setState(() {}); - }, - itemBuilder: (context) => SkipType.values - .map((item) => PopupMenuItem( - value: item, - child: Text(item.title), - )) - .toList(), - child: Row( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - _blockSettings[index - 1].second.title, - style: TextStyle( - fontSize: 13, - color: _blockSettings[index - 1].second == - SkipType.disable - ? Theme.of(context).colorScheme.error - : Theme.of(context).colorScheme.primary, + ) + : ListTile( + leading: Container( + height: 24, + width: 24, + alignment: Alignment.center, + child: Container( + height: 10, + width: 10, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: _blockSettings[index - 1].first.color, ), ), - Icon( - size: 20, - Icons.keyboard_arrow_right, - color: - _blockSettings[index - 1].second == SkipType.disable + ), + title: Text( + _blockSettings[index - 1].first.name, + style: + _blockSettings[index - 1].second == SkipType.disable + ? TextStyle( + color: Theme.of(context).colorScheme.outline, + ) + : null, + ), + trailing: PopupMenuButton( + initialValue: _blockSettings[index - 1].second, + onSelected: (item) async { + _blockSettings[index - 1].second = item; + await GStorage.setting.put( + SettingBoxKey.blockSettings, + _blockSettings + .map((item) => item.second.index) + .toList()); + setState(() {}); + }, + itemBuilder: (context) => SkipType.values + .map((item) => PopupMenuItem( + value: item, + child: Text(item.title), + )) + .toList(), + child: Row( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + _blockSettings[index - 1].second.title, + style: TextStyle( + fontSize: 13, + color: _blockSettings[index - 1].second == + SkipType.disable + ? Theme.of(context).colorScheme.error + : Theme.of(context).colorScheme.primary, + ), + ), + Icon( + size: 20, + Icons.keyboard_arrow_right, + color: _blockSettings[index - 1].second == + SkipType.disable ? Theme.of(context).colorScheme.error : Theme.of(context).colorScheme.primary, - ) - ], + ) + ], + ), + ), ), - ), - ), separatorBuilder: (_, index) => Divider(height: 1), ), );