fix: bangumi

This commit is contained in:
bggRGjQaUbCoE
2024-10-29 11:07:48 +08:00
parent b2493de58e
commit 1f34c19df4
2 changed files with 127 additions and 114 deletions

View File

@@ -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;

View File

@@ -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<SponsorBlockPage> {
late double _blockLimit;
late List<Pair<SegmentType, SkipType>> _blockSettings;
final _url = 'https://github.com/hanydd/BilibiliSponsorBlock';
@override
void initState() {
@@ -37,122 +39,133 @@ class _SponsorBlockPageState extends State<SponsorBlockPage> {
),
),
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<SkipType>(
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<SkipType>(
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),
),
);