mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-04-20 03:06:59 +08:00
@@ -10,8 +10,10 @@ import 'package:get/get.dart';
|
||||
|
||||
class DanmakuBlockController extends GetxController
|
||||
with GetSingleTickerProviderStateMixin {
|
||||
late final List<RxList<SimpleRule>> rules =
|
||||
List.generate(DmBlockType.values.length, (_) => <SimpleRule>[].obs);
|
||||
late final List<RxList<SimpleRule>> rules = List.generate(
|
||||
DmBlockType.values.length,
|
||||
(_) => <SimpleRule>[].obs,
|
||||
);
|
||||
|
||||
late TabController tabController;
|
||||
|
||||
@@ -57,14 +59,18 @@ class DanmakuBlockController extends GetxController
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> danmakuFilterAdd(
|
||||
{required String filter, required int type}) async {
|
||||
Future<void> danmakuFilterAdd({
|
||||
required String filter,
|
||||
required int type,
|
||||
}) async {
|
||||
if (type == 2) {
|
||||
filter = Crc32Xz().convert(utf8.encode(filter)).toRadixString(16);
|
||||
}
|
||||
SmartDialog.showLoading(msg: '正在添加弹幕屏蔽规则……');
|
||||
var result =
|
||||
await DanmakuFilterHttp.danmakuFilterAdd(filter: filter, type: type);
|
||||
var result = await DanmakuFilterHttp.danmakuFilterAdd(
|
||||
filter: filter,
|
||||
type: type,
|
||||
);
|
||||
SmartDialog.dismiss();
|
||||
if (result['status']) {
|
||||
SimpleRule rule = result['data'];
|
||||
|
||||
@@ -48,18 +48,26 @@ class _DanmakuBlockPageState extends State<DanmakuBlockPage> {
|
||||
bottom: TabBar(
|
||||
controller: _controller.tabController,
|
||||
tabs: DmBlockType.values
|
||||
.map((e) => Obx(() => Tab(
|
||||
text: '${e.label}(${_controller.rules[e.index].length})')))
|
||||
.map(
|
||||
(e) => Obx(
|
||||
() => Tab(
|
||||
text: '${e.label}(${_controller.rules[e.index].length})',
|
||||
),
|
||||
),
|
||||
)
|
||||
.toList(),
|
||||
),
|
||||
),
|
||||
body: tabBarView(
|
||||
controller: _controller.tabController,
|
||||
children: DmBlockType.values
|
||||
.map((e) => KeepAliveWrapper(
|
||||
builder: (context) => Obx(() =>
|
||||
tabViewBuilder(e.index, _controller.rules[e.index])),
|
||||
))
|
||||
.map(
|
||||
(e) => KeepAliveWrapper(
|
||||
builder: (context) => Obx(
|
||||
() => tabViewBuilder(e.index, _controller.rules[e.index]),
|
||||
),
|
||||
),
|
||||
)
|
||||
.toList(),
|
||||
),
|
||||
floatingActionButton: FloatingActionButton(
|
||||
@@ -76,8 +84,9 @@ class _DanmakuBlockPageState extends State<DanmakuBlockPage> {
|
||||
}
|
||||
return ListView.builder(
|
||||
itemCount: list.length,
|
||||
padding:
|
||||
EdgeInsets.only(bottom: MediaQuery.paddingOf(context).bottom + 80),
|
||||
padding: EdgeInsets.only(
|
||||
bottom: MediaQuery.paddingOf(context).bottom + 80,
|
||||
),
|
||||
itemBuilder: (context, itemIndex) {
|
||||
final SimpleRule item = list[itemIndex];
|
||||
return ListTile(
|
||||
@@ -125,9 +134,10 @@ class _DanmakuBlockPageState extends State<DanmakuBlockPage> {
|
||||
initialValue: filter,
|
||||
onChanged: (value) => filter = value,
|
||||
keyboardType: isUid ? TextInputType.number : null,
|
||||
inputFormatters:
|
||||
isUid ? [FilteringTextInputFormatter.digitsOnly] : null,
|
||||
)
|
||||
inputFormatters: isUid
|
||||
? [FilteringTextInputFormatter.digitsOnly]
|
||||
: null,
|
||||
),
|
||||
],
|
||||
),
|
||||
actions: [
|
||||
@@ -144,7 +154,9 @@ class _DanmakuBlockPageState extends State<DanmakuBlockPage> {
|
||||
if (filter.isNotEmpty) {
|
||||
Get.back();
|
||||
_controller.danmakuFilterAdd(
|
||||
filter: filter, type: type.index);
|
||||
filter: filter,
|
||||
type: type.index,
|
||||
);
|
||||
} else {
|
||||
SmartDialog.showToast('输入内容不能为空');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user