diff --git a/lib/models/search/search_trending/stat_datas.dart b/lib/models/search/search_trending/stat_datas.dart deleted file mode 100644 index c77d32d46..000000000 --- a/lib/models/search/search_trending/stat_datas.dart +++ /dev/null @@ -1,14 +0,0 @@ - -class StatDatas { - StatDatas(); - - factory StatDatas.fromJson(Map json) { - // TODO: implement fromJson - throw UnimplementedError('StatDatas.fromJson($json) is not implemented'); - } - - Map toJson() { - // TODO: implement toJson - throw UnimplementedError(); - } -} \ No newline at end of file diff --git a/lib/models/space/avatar_layer.dart b/lib/models/space/avatar_layer.dart deleted file mode 100644 index b2af911f1..000000000 --- a/lib/models/space/avatar_layer.dart +++ /dev/null @@ -1,14 +0,0 @@ - -class AvatarLayer { - AvatarLayer(); - - factory AvatarLayer.fromJson(Map json) { - // TODO: implement fromJson - throw UnimplementedError('AvatarLayer.fromJson($json) is not implemented'); - } - - Map toJson() { - // TODO: implement toJson - throw UnimplementedError(); - } -} \ No newline at end of file diff --git a/lib/models/space/fans_effect.dart b/lib/models/space/fans_effect.dart deleted file mode 100644 index 30de59c9c..000000000 --- a/lib/models/space/fans_effect.dart +++ /dev/null @@ -1,14 +0,0 @@ - -class FansEffect { - FansEffect(); - - factory FansEffect.fromJson(Map json) { - // TODO: implement fromJson - throw UnimplementedError('FansEffect.fromJson($json) is not implemented'); - } - - Map toJson() { - // TODO: implement toJson - throw UnimplementedError(); - } -} \ No newline at end of file diff --git a/lib/models/space/profession.dart b/lib/models/space/profession.dart deleted file mode 100644 index 6efd2f868..000000000 --- a/lib/models/space/profession.dart +++ /dev/null @@ -1,14 +0,0 @@ - -class Profession { - Profession(); - - factory Profession.fromJson(Map json) { - // TODO: implement fromJson - throw UnimplementedError('Profession.fromJson($json) is not implemented'); - } - - Map toJson() { - // TODO: implement toJson - throw UnimplementedError(); - } -} \ No newline at end of file diff --git a/lib/models/space/school.dart b/lib/models/space/school.dart deleted file mode 100644 index 6d19728c5..000000000 --- a/lib/models/space/school.dart +++ /dev/null @@ -1,14 +0,0 @@ - -class School { - School(); - - factory School.fromJson(Map json) { - // TODO: implement fromJson - throw UnimplementedError('School.fromJson($json) is not implemented'); - } - - Map toJson() { - // TODO: implement toJson - throw UnimplementedError(); - } -} \ No newline at end of file diff --git a/lib/models/space/tags.dart b/lib/models/space/tags.dart deleted file mode 100644 index 73dccd94d..000000000 --- a/lib/models/space/tags.dart +++ /dev/null @@ -1,17 +0,0 @@ -import 'package:json_annotation/json_annotation.dart'; - -import 'avatar_layer.dart'; - -part 'tags.g.dart'; - -@JsonSerializable() -class Tags { - @JsonKey(name: 'AVATAR_LAYER') - AvatarLayer? avatarLayer; - - Tags({this.avatarLayer}); - - factory Tags.fromJson(Map json) => _$TagsFromJson(json); - - Map toJson() => _$TagsToJson(this); -} diff --git a/lib/models/space/tags.g.dart b/lib/models/space/tags.g.dart deleted file mode 100644 index 1f8c9eb3b..000000000 --- a/lib/models/space/tags.g.dart +++ /dev/null @@ -1,17 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'tags.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -Tags _$TagsFromJson(Map json) => Tags( - avatarLayer: json['AVATAR_LAYER'] == null - ? null - : AvatarLayer.fromJson(json['AVATAR_LAYER'] as Map), - ); - -Map _$TagsToJson(Tags instance) => { - 'AVATAR_LAYER': instance.avatarLayer, - }; diff --git a/lib/models/space/three_point.dart b/lib/models/space/three_point.dart deleted file mode 100644 index e86dc788c..000000000 --- a/lib/models/space/three_point.dart +++ /dev/null @@ -1,14 +0,0 @@ - -class ThreePoint { - ThreePoint(); - - factory ThreePoint.fromJson(Map json) { - // TODO: implement fromJson - throw UnimplementedError('ThreePoint.fromJson($json) is not implemented'); - } - - Map toJson() { - // TODO: implement toJson - throw UnimplementedError(); - } -} \ No newline at end of file diff --git a/lib/pages/danmaku_block/controller.dart b/lib/pages/danmaku_block/controller.dart new file mode 100644 index 000000000..f5f2b2f16 --- /dev/null +++ b/lib/pages/danmaku_block/controller.dart @@ -0,0 +1,68 @@ +import 'package:PiliPlus/http/danmaku_block.dart'; +import 'package:PiliPlus/models/user/danmaku_block.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; +import 'package:get/get.dart'; + +class DanmakuBlockController extends GetxController + with GetTickerProviderStateMixin { + final ruleTypes = RxMap>({0: {}, 1: {}, 2: {}}); + late TabController tabController; + + @override + void onInit() { + super.onInit(); + tabController = TabController(length: 3, vsync: this); + } + + @override + void onClose() { + tabController.dispose(); + super.onClose(); + } + + Future queryDanmakuFilter() async { + SmartDialog.showLoading(msg: '正在同步弹幕屏蔽规则……'); + var result = await DanmakuFilterHttp.danmakuFilter(); + SmartDialog.dismiss(); + if (result['status']) { + if (result['data']?.rule != null) { + final List filter = result['data']?.rule; + for (var rule in filter) { + ruleTypes[rule.type]![rule.id] = rule.filter; + } + ruleTypes.refresh(); + } + SmartDialog.showToast(result['data'].toast); + } else { + SmartDialog.showToast(result['msg']); + } + } + + Future danmakuFilterDel(int type, int id) async { + SmartDialog.showLoading(msg: '正在删除弹幕屏蔽规则……'); + var result = await DanmakuFilterHttp.danmakuFilterDel(ids: id); + SmartDialog.dismiss(); + if (result['status']) { + ruleTypes[type]!.remove(id); + ruleTypes.refresh(); + } + SmartDialog.showToast(result['msg']); + } + + Future danmakuFilterAdd( + {required String filter, required int type}) async { + SmartDialog.showLoading(msg: '正在添加弹幕屏蔽规则……'); + var result = + await DanmakuFilterHttp.danmakuFilterAdd(filter: filter, type: type); + SmartDialog.dismiss(); + if (result['status']) { + SimpleRule rule = result['data']; + ruleTypes[type]![rule.id] = rule.filter; + ruleTypes.refresh(); + SmartDialog.showToast('添加成功'); + } else { + SmartDialog.showToast(result['msg']); + } + } +} diff --git a/lib/pages/danmaku_block/index.dart b/lib/pages/danmaku_block/view.dart similarity index 70% rename from lib/pages/danmaku_block/index.dart rename to lib/pages/danmaku_block/view.dart index 39b0b8fe2..545da3fcf 100644 --- a/lib/pages/danmaku_block/index.dart +++ b/lib/pages/danmaku_block/view.dart @@ -1,11 +1,10 @@ import 'package:PiliPlus/models/user/danmaku_rule.dart'; +import 'package:PiliPlus/pages/danmaku_block/controller.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:PiliPlus/utils/storage.dart'; -import '../../http/danmaku_block.dart'; -import '../../models/user/danmaku_block.dart'; import '../../plugin/pl_player/controller.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; @@ -146,66 +145,3 @@ class _DanmakuBlockPageState extends State { ); } } - -class DanmakuBlockController extends GetxController - with GetTickerProviderStateMixin { - final ruleTypes = RxMap>({0: {}, 1: {}, 2: {}}); - late TabController tabController; - - @override - void onInit() { - super.onInit(); - tabController = TabController(length: 3, vsync: this); - } - - @override - void onClose() { - tabController.dispose(); - super.onClose(); - } - - Future queryDanmakuFilter() async { - SmartDialog.showLoading(msg: '正在同步弹幕屏蔽规则……'); - var result = await DanmakuFilterHttp.danmakuFilter(); - SmartDialog.dismiss(); - if (result['status']) { - if (result['data']?.rule != null) { - final List filter = result['data']?.rule; - for (var rule in filter) { - ruleTypes[rule.type]![rule.id] = rule.filter; - } - ruleTypes.refresh(); - } - SmartDialog.showToast(result['data'].toast); - } else { - SmartDialog.showToast(result['msg']); - } - } - - Future danmakuFilterDel(int type, int id) async { - SmartDialog.showLoading(msg: '正在删除弹幕屏蔽规则……'); - var result = await DanmakuFilterHttp.danmakuFilterDel(ids: id); - SmartDialog.dismiss(); - if (result['status']) { - ruleTypes[type]!.remove(id); - ruleTypes.refresh(); - } - SmartDialog.showToast(result['msg']); - } - - Future danmakuFilterAdd( - {required String filter, required int type}) async { - SmartDialog.showLoading(msg: '正在添加弹幕屏蔽规则……'); - var result = - await DanmakuFilterHttp.danmakuFilterAdd(filter: filter, type: type); - SmartDialog.dismiss(); - if (result['status']) { - SimpleRule rule = result['data']; - ruleTypes[type]![rule.id] = rule.filter; - ruleTypes.refresh(); - SmartDialog.showToast('添加成功'); - } else { - SmartDialog.showToast(result['msg']); - } - } -} diff --git a/lib/pages/fav/video/widgets/item.dart b/lib/pages/fav/video/widgets/item.dart index 977f53ea0..c3a7c523a 100644 --- a/lib/pages/fav/video/widgets/item.dart +++ b/lib/pages/fav/video/widgets/item.dart @@ -1,4 +1,5 @@ import 'package:PiliPlus/common/widgets/image_save.dart'; +import 'package:PiliPlus/models/user/fav_folder.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:PiliPlus/common/constants.dart'; @@ -6,7 +7,7 @@ import 'package:PiliPlus/common/widgets/network_img_layer.dart'; class FavItem extends StatelessWidget { final String heroTag; - final dynamic favFolderItem; + final FavFolderItemData favFolderItem; final VoidCallback? onTap; final VoidCallback? onLongPress; @@ -40,14 +41,12 @@ class FavItem extends StatelessWidget { aspectRatio: StyleString.aspectRatio, child: LayoutBuilder( builder: (context, boxConstraints) { - double maxWidth = boxConstraints.maxWidth; - double maxHeight = boxConstraints.maxHeight; return Hero( tag: heroTag, child: NetworkImgLayer( src: favFolderItem.cover, - width: maxWidth, - height: maxHeight, + width: boxConstraints.maxWidth, + height: boxConstraints.maxHeight, ), ); }, diff --git a/lib/pages/history/widgets/item.dart b/lib/pages/history/widgets/item.dart index 08644cc32..5fc7e6184 100644 --- a/lib/pages/history/widgets/item.dart +++ b/lib/pages/history/widgets/item.dart @@ -2,7 +2,6 @@ import 'package:PiliPlus/common/widgets/image_save.dart'; import 'package:PiliPlus/common/widgets/video_progress_indicator.dart'; import 'package:PiliPlus/models/user/history.dart'; import 'package:PiliPlus/pages/common/multi_select_controller.dart'; -import 'package:PiliPlus/pages/fav_search/controller.dart'; import 'package:PiliPlus/pages/history/base_controller.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/page_utils.dart'; @@ -41,11 +40,11 @@ class HistoryItem extends StatelessWidget { String bvid = videoItem.history.bvid ?? IdUtils.av2bv(aid); return InkWell( onTap: () async { - if ((ctr is MultiSelectController || ctr is HistoryBaseController) && - ctr!.enableMultiSelect.value) { - feedBack(); - onChoose?.call(); - return; + if (ctr is MultiSelectController || ctr is HistoryBaseController) { + if (ctr.enableMultiSelect.value) { + onChoose?.call(); + return; + } } if (videoItem.history.business?.contains('article') == true) { PageUtils.toDupNamed( @@ -105,18 +104,18 @@ class HistoryItem extends StatelessWidget { } }, onLongPress: () { - if (ctr is FavSearchController) { - imageSaveDialog( - context: context, - title: videoItem.title, - cover: videoItem.cover, - ); + if (ctr is MultiSelectController || ctr is HistoryBaseController) { + if (!ctr.enableMultiSelect.value) { + ctr.enableMultiSelect.value = true; + onChoose?.call(); + } return; } - if (!ctr!.enableMultiSelect.value) { - ctr!.enableMultiSelect.value = true; - onChoose?.call(); - } + imageSaveDialog( + context: context, + title: videoItem.title, + cover: videoItem.cover, + ); }, child: Stack( children: [ diff --git a/lib/pages/hot/view.dart b/lib/pages/hot/view.dart index 7291aca79..bac6f04e9 100644 --- a/lib/pages/hot/view.dart +++ b/lib/pages/hot/view.dart @@ -37,6 +37,7 @@ class _HotPageState extends CommonPageState }) { return GestureDetector( onTap: onTap, + behavior: HitTestBehavior.opaque, child: Column( mainAxisSize: MainAxisSize.min, children: [ diff --git a/lib/router/app_pages.dart b/lib/router/app_pages.dart index 185a3e20b..2d4f5fab9 100644 --- a/lib/router/app_pages.dart +++ b/lib/router/app_pages.dart @@ -24,7 +24,7 @@ import 'package:PiliPlus/pages/setting/pages/logs.dart'; import '../pages/about/index.dart'; import '../pages/blacklist/view.dart'; -import '../pages/danmaku_block/index.dart'; +import '../pages/danmaku_block/view.dart'; import '../pages/dynamics/detail/index.dart'; import '../pages/dynamics/index.dart'; import '../pages/fan/index.dart';