opt: simple dialog

This commit is contained in:
My-Responsitories
2026-06-13 11:58:33 +08:00
parent c63fe3866c
commit 3085d58508
26 changed files with 1184 additions and 1433 deletions

View File

@@ -285,40 +285,32 @@ mixin BlockMixin on GetxController {
void _showVoteDialog(SegmentModel segment) {
showDialog(
context: Get.context!,
builder: (context) => AlertDialog(
builder: (context) => SimpleDialog(
clipBehavior: Clip.hardEdge,
contentPadding: const EdgeInsets.fromLTRB(0, 10, 0, 10),
content: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
ListTile(
dense: true,
title: const Text('赞成票', style: TextStyle(fontSize: 14)),
onTap: () {
Get.back();
_doVote(segment.uuid, 1);
},
),
ListTile(
dense: true,
title: const Text('反对票', style: TextStyle(fontSize: 14)),
onTap: () {
Get.back();
_doVote(segment.uuid, 0);
},
),
ListTile(
dense: true,
title: const Text('更改类别', style: TextStyle(fontSize: 14)),
onTap: () {
Get.back();
_showCategoryDialog(segment);
},
),
],
children: [
SimpleDialogOption(
child: const Text('赞成票', style: TextStyle(fontSize: 14)),
onPressed: () {
Get.back();
_doVote(segment.uuid, 1);
},
),
),
SimpleDialogOption(
child: const Text('反对票', style: TextStyle(fontSize: 14)),
onPressed: () {
Get.back();
_doVote(segment.uuid, 0);
},
),
SimpleDialogOption(
child: const Text('更改类别', style: TextStyle(fontSize: 14)),
onPressed: () {
Get.back();
_showCategoryDialog(segment);
},
),
],
),
);
}
@@ -331,54 +323,49 @@ mixin BlockMixin on GetxController {
void _showCategoryDialog(SegmentModel segment) {
showDialog(
context: Get.context!,
builder: (context) => AlertDialog(
builder: (context) => SimpleDialog(
clipBehavior: Clip.hardEdge,
contentPadding: const EdgeInsets.fromLTRB(0, 10, 0, 10),
content: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
children: SegmentType.values
.map(
(item) => ListTile(
dense: true,
onTap: () {
Get.back();
SponsorBlock.voteOnSponsorTime(
uuid: segment.uuid,
category: item,
).then((i) {
SmartDialog.showToast(
'类别更改${i.isSuccess ? '成功' : '失败: $i'}',
);
});
},
title: Text.rich(
TextSpan(
children: [
WidgetSpan(
alignment: PlaceholderAlignment.middle,
child: Container(
height: 10,
width: 10,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: blockConfig._getColor(item),
),
),
style: const TextStyle(fontSize: 14, height: 1),
children: SegmentType.values
.map(
(item) => ListTile(
dense: true,
onTap: () {
Get.back();
SponsorBlock.voteOnSponsorTime(
uuid: segment.uuid,
category: item,
).then((i) {
SmartDialog.showToast(
'类别更改${i.isSuccess ? '成功' : '失败: $i'}',
);
});
},
title: Text.rich(
TextSpan(
children: [
WidgetSpan(
alignment: PlaceholderAlignment.middle,
child: Container(
height: 10,
width: 10,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: blockConfig._getColor(item),
),
TextSpan(
text: ' ${item.title}',
style: const TextStyle(fontSize: 14, height: 1),
),
],
),
style: const TextStyle(fontSize: 14, height: 1),
),
),
TextSpan(
text: ' ${item.title}',
style: const TextStyle(fontSize: 14, height: 1),
),
],
),
)
.toList(),
),
),
),
),
)
.toList(),
),
);
}
@@ -386,96 +373,91 @@ mixin BlockMixin on GetxController {
void showSBDetail() {
showDialog(
context: Get.context!,
builder: (context) => AlertDialog(
builder: (context) => SimpleDialog(
clipBehavior: Clip.hardEdge,
contentPadding: const EdgeInsets.fromLTRB(0, 10, 0, 10),
content: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
children: _segmentList
.map(
(item) => ListTile(
onTap: () {
Get.back();
if (isBlock) {
_showVoteDialog(item);
}
},
dense: true,
title: Text.rich(
TextSpan(
children: [
WidgetSpan(
alignment: PlaceholderAlignment.middle,
child: Container(
height: 10,
width: 10,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: blockConfig._getColor(item.segmentType),
),
),
style: const TextStyle(fontSize: 14, height: 1),
children: _segmentList
.map(
(item) => ListTile(
onTap: () {
Get.back();
if (isBlock) {
_showVoteDialog(item);
}
},
dense: true,
title: Text.rich(
TextSpan(
children: [
WidgetSpan(
alignment: PlaceholderAlignment.middle,
child: Container(
height: 10,
width: 10,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: blockConfig._getColor(item.segmentType),
),
TextSpan(
text: ' ${item.segmentType.title}',
style: const TextStyle(fontSize: 14, height: 1),
),
],
),
style: const TextStyle(fontSize: 14, height: 1),
),
),
contentPadding: const EdgeInsets.only(left: 16, right: 8),
subtitle: Text(
'${DurationUtils.formatDuration(item.segment.$1 / 1000)}${DurationUtils.formatDuration(item.segment.$2 / 1000)}',
TextSpan(
text: ' ${item.segmentType.title}',
style: const TextStyle(fontSize: 14, height: 1),
),
],
),
),
contentPadding: const EdgeInsets.only(left: 16, right: 8),
subtitle: Text(
'${DurationUtils.formatDuration(item.segment.$1 / 1000)}${DurationUtils.formatDuration(item.segment.$2 / 1000)}',
style: const TextStyle(fontSize: 13),
),
trailing: Row(
mainAxisSize: MainAxisSize.min,
children: [
Text(
item.skipType.label,
style: const TextStyle(fontSize: 13),
),
trailing: Row(
mainAxisSize: MainAxisSize.min,
children: [
Text(
item.skipType.label,
style: const TextStyle(fontSize: 13),
if (item.segment.$2 != 0)
SizedBox(
width: 36,
height: 36,
child: IconButton(
tooltip: item.skipType == SkipType.showOnly
? '跳至此片段'
: '跳过此片段',
onPressed: () {
Get.back();
onSkip(
item,
isSkip: item.skipType != SkipType.showOnly,
isSeek: false,
);
},
style: IconButton.styleFrom(
padding: EdgeInsets.zero,
tapTargetSize: MaterialTapTargetSize.shrinkWrap,
),
icon: Icon(
item.skipType == SkipType.showOnly
? Icons.my_location
: MdiIcons.debugStepOver,
size: 18,
color: ColorScheme.of(
context,
).onSurface.withValues(alpha: 0.7),
),
),
if (item.segment.$2 != 0)
SizedBox(
width: 36,
height: 36,
child: IconButton(
tooltip: item.skipType == SkipType.showOnly
? '跳至此片段'
: '跳过此片段',
onPressed: () {
Get.back();
onSkip(
item,
isSkip: item.skipType != SkipType.showOnly,
isSeek: false,
);
},
style: IconButton.styleFrom(
padding: EdgeInsets.zero,
tapTargetSize: MaterialTapTargetSize.shrinkWrap,
),
icon: Icon(
item.skipType == SkipType.showOnly
? Icons.my_location
: MdiIcons.debugStepOver,
size: 18,
color: Theme.of(
context,
).colorScheme.onSurface.withValues(alpha: 0.7),
),
),
)
else
const SizedBox(width: 10),
],
),
),
)
.toList(),
),
),
)
else
const SizedBox(width: 10),
],
),
),
)
.toList(),
),
);
}