diff --git a/lib/common/skeleton/fav_pgc_item.dart b/lib/common/skeleton/fav_pgc_item.dart index 74ac7901b..0273d1550 100644 --- a/lib/common/skeleton/fav_pgc_item.dart +++ b/lib/common/skeleton/fav_pgc_item.dart @@ -15,7 +15,6 @@ class FavPgcItemSkeleton extends StatelessWidget { vertical: 5, ), child: Row( - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ AspectRatio( diff --git a/lib/common/skeleton/video_card_h.dart b/lib/common/skeleton/video_card_h.dart index e3efed202..90a2a143f 100644 --- a/lib/common/skeleton/video_card_h.dart +++ b/lib/common/skeleton/video_card_h.dart @@ -15,7 +15,6 @@ class VideoCardHSkeleton extends StatelessWidget { vertical: 5, ), child: Row( - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ AspectRatio( diff --git a/lib/common/skeleton/video_reply.dart b/lib/common/skeleton/video_reply.dart index 8b657c058..bf0ed16d6 100644 --- a/lib/common/skeleton/video_reply.dart +++ b/lib/common/skeleton/video_reply.dart @@ -36,7 +36,6 @@ class VideoReplySkeleton extends StatelessWidget { const EdgeInsets.only(top: 4, left: 57, right: 6, bottom: 6), child: Column( crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, children: [ Container( width: 300, diff --git a/lib/common/widgets/video_card/video_card_h.dart b/lib/common/widgets/video_card/video_card_h.dart index 0e67a30c9..fe27c3c8d 100644 --- a/lib/common/widgets/video_card/video_card_h.dart +++ b/lib/common/widgets/video_card/video_card_h.dart @@ -31,6 +31,7 @@ class VideoCardH extends StatelessWidget { this.onTap, this.onLongPress, this.onViewLater, + this.onRemove, }); final BaseVideoItemModel videoItem; final bool showOwner; @@ -40,6 +41,7 @@ class VideoCardH extends StatelessWidget { final VoidCallback? onTap; final VoidCallback? onLongPress; final ValueChanged? onViewLater; + final VoidCallback? onRemove; @override Widget build(BuildContext context) { @@ -108,7 +110,6 @@ class VideoCardH extends StatelessWidget { vertical: 5, ), child: Row( - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ AspectRatio( @@ -188,6 +189,7 @@ class VideoCardH extends StatelessWidget { size: 29, iconSize: 17, videoItem: videoItem, + onRemove: onRemove, ), ), ], diff --git a/lib/common/widgets/video_popup_menu.dart b/lib/common/widgets/video_popup_menu.dart index 31697ea3f..625770dcc 100644 --- a/lib/common/widgets/video_popup_menu.dart +++ b/lib/common/widgets/video_popup_menu.dart @@ -245,13 +245,16 @@ class VideoCustomActions { ), TextButton( onPressed: () async { + Get.back(); var res = await VideoHttp.relationMod( mid: videoItem.owner.mid!, act: 5, reSrc: 11, ); - Pref.setBlackMid(videoItem.owner.mid!); - Get.back(); + if (res['status']) { + Pref.setBlackMid(videoItem.owner.mid!); + onRemove?.call(); + } SmartDialog.showToast(res['msg'] ?? '成功'); }, child: const Text('确认'), diff --git a/lib/pages/dynamics/widgets/additional_panel.dart b/lib/pages/dynamics/widgets/additional_panel.dart index 2c67c864f..ea83fa3c1 100644 --- a/lib/pages/dynamics/widgets/additional_panel.dart +++ b/lib/pages/dynamics/widgets/additional_panel.dart @@ -48,7 +48,6 @@ Widget addWidget(ThemeData theme, DynamicItemModel item, BuildContext context, Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, children: [ Text( ugc.title!, diff --git a/lib/pages/dynamics/widgets/live_panel.dart b/lib/pages/dynamics/widgets/live_panel.dart index 981523878..8e3862522 100644 --- a/lib/pages/dynamics/widgets/live_panel.dart +++ b/lib/pages/dynamics/widgets/live_panel.dart @@ -29,7 +29,6 @@ Widget livePanel( ); }, child: Row( - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ NetworkImgLayer( @@ -41,7 +40,6 @@ Widget livePanel( Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, children: [ Text( content.live!.title!, diff --git a/lib/pages/dynamics/widgets/module_panel.dart b/lib/pages/dynamics/widgets/module_panel.dart index 01292fa38..dea7cf568 100644 --- a/lib/pages/dynamics/widgets/module_panel.dart +++ b/lib/pages/dynamics/widgets/module_panel.dart @@ -344,7 +344,6 @@ Widget module( height: 110, child: Column( mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 4), diff --git a/lib/pages/dynamics/widgets/video_panel.dart b/lib/pages/dynamics/widgets/video_panel.dart index 907eceb3e..d4743b395 100644 --- a/lib/pages/dynamics/widgets/video_panel.dart +++ b/lib/pages/dynamics/widgets/video_panel.dart @@ -142,7 +142,6 @@ Widget videoSeasonWidget( return Column( crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, children: [ if (itemContent.cover != null) if (floor == 1) diff --git a/lib/pages/episode_panel/view.dart b/lib/pages/episode_panel/view.dart index 1634e1d7f..2dea54113 100644 --- a/lib/pages/episode_panel/view.dart +++ b/lib/pages/episode_panel/view.dart @@ -423,7 +423,6 @@ class _EpisodePanelState extends CommonSlidePageState { vertical: 5, ), child: Row( - mainAxisAlignment: MainAxisAlignment.start, spacing: 10, children: [ if (cover?.isNotEmpty == true) diff --git a/lib/pages/fav/article/widget/item.dart b/lib/pages/fav/article/widget/item.dart index bcd8cf51e..13898de83 100644 --- a/lib/pages/fav/article/widget/item.dart +++ b/lib/pages/fav/article/widget/item.dart @@ -39,7 +39,6 @@ class FavArticleItem extends StatelessWidget { vertical: 5, ), child: Row( - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ if (item.cover != null) ...[ diff --git a/lib/pages/fav/pgc/widget/item.dart b/lib/pages/fav/pgc/widget/item.dart index f353edcc1..c4ee6e507 100644 --- a/lib/pages/fav/pgc/widget/item.dart +++ b/lib/pages/fav/pgc/widget/item.dart @@ -50,7 +50,6 @@ class FavPgcItem extends StatelessWidget { vertical: 5, ), child: Row( - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ AspectRatio( diff --git a/lib/pages/fav/video/widgets/item.dart b/lib/pages/fav/video/widgets/item.dart index f45aed827..f6d1e15e1 100644 --- a/lib/pages/fav/video/widgets/item.dart +++ b/lib/pages/fav/video/widgets/item.dart @@ -35,7 +35,6 @@ class FavVideoItem extends StatelessWidget { child: Padding( padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 5), child: Row( - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ AspectRatio( diff --git a/lib/pages/fav_detail/widget/fav_video_card.dart b/lib/pages/fav_detail/widget/fav_video_card.dart index 261173cf6..c6c01eed1 100644 --- a/lib/pages/fav_detail/widget/fav_video_card.dart +++ b/lib/pages/fav_detail/widget/fav_video_card.dart @@ -71,7 +71,6 @@ class FavVideoCardH extends StatelessWidget { vertical: 5, ), child: Row( - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ AspectRatio( diff --git a/lib/pages/history/widgets/item.dart b/lib/pages/history/widgets/item.dart index a6c36658e..e9a6f5f1c 100644 --- a/lib/pages/history/widgets/item.dart +++ b/lib/pages/history/widgets/item.dart @@ -109,7 +109,6 @@ class HistoryItem extends StatelessWidget { vertical: 5, ), child: Row( - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ AspectRatio( diff --git a/lib/pages/hot/view.dart b/lib/pages/hot/view.dart index 3fbb17b8f..796476cef 100644 --- a/lib/pages/hot/view.dart +++ b/lib/pages/hot/view.dart @@ -169,6 +169,9 @@ class _HotPageState extends CommonPageState return VideoCardH( videoItem: response[index], showPubdate: true, + onRemove: () => controller.loadingState + ..value.data!.removeAt(index) + ..refresh(), ); }, childCount: response!.length, diff --git a/lib/pages/later/widgets/video_card_h_later.dart b/lib/pages/later/widgets/video_card_h_later.dart index 7881a428d..7c2c0d3ff 100644 --- a/lib/pages/later/widgets/video_card_h_later.dart +++ b/lib/pages/later/widgets/video_card_h_later.dart @@ -77,7 +77,6 @@ class VideoCardHLater extends StatelessWidget { vertical: 5, ), child: Row( - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ AspectRatio( diff --git a/lib/pages/media/widgets/item.dart b/lib/pages/media/widgets/item.dart index f145bf2d7..449f4b156 100644 --- a/lib/pages/media/widgets/item.dart +++ b/lib/pages/media/widgets/item.dart @@ -34,7 +34,6 @@ class FavFolderItem extends StatelessWidget { }, behavior: HitTestBehavior.opaque, child: Column( - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 12), diff --git a/lib/pages/member/widget/user_info_card.dart b/lib/pages/member/widget/user_info_card.dart index 7c1a78f61..610d947d5 100644 --- a/lib/pages/member/widget/user_info_card.dart +++ b/lib/pages/member/widget/user_info_card.dart @@ -429,7 +429,6 @@ class UserInfoCard extends StatelessWidget { Column _buildV(BuildContext context, ThemeData theme) => Column( mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Stack( @@ -522,7 +521,6 @@ class UserInfoCard extends StatelessWidget { Column _buildH(BuildContext context, ThemeData theme) => Column( mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ // _buildHeader(context), diff --git a/lib/pages/member_article/widget/item.dart b/lib/pages/member_article/widget/item.dart index 9ff905af0..3ce539cb3 100644 --- a/lib/pages/member_article/widget/item.dart +++ b/lib/pages/member_article/widget/item.dart @@ -34,7 +34,6 @@ class MemberArticleItem extends StatelessWidget { vertical: 5, ), child: Row( - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ if (item.originImageUrls?.firstOrNull?.isNotEmpty == true) ...[ diff --git a/lib/pages/member_favorite/widget/item.dart b/lib/pages/member_favorite/widget/item.dart index 18b38cde0..074a56e7c 100644 --- a/lib/pages/member_favorite/widget/item.dart +++ b/lib/pages/member_favorite/widget/item.dart @@ -65,7 +65,6 @@ class MemberFavItem extends StatelessWidget { vertical: 5, ), child: Row( - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ AspectRatio( diff --git a/lib/pages/member_home/widgets/fav_item.dart b/lib/pages/member_home/widgets/fav_item.dart index f3dc87eb6..4545a742b 100644 --- a/lib/pages/member_home/widgets/fav_item.dart +++ b/lib/pages/member_home/widgets/fav_item.dart @@ -35,7 +35,6 @@ class MemberFavItem extends StatelessWidget { vertical: 5, ), child: Row( - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ AspectRatio( diff --git a/lib/pages/member_season_series/widget/season_series_card.dart b/lib/pages/member_season_series/widget/season_series_card.dart index 1df70f608..9a28bebf1 100644 --- a/lib/pages/member_season_series/widget/season_series_card.dart +++ b/lib/pages/member_season_series/widget/season_series_card.dart @@ -31,7 +31,6 @@ class SeasonSeriesCard extends StatelessWidget { vertical: 5, ), child: Row( - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ AspectRatio( diff --git a/lib/pages/member_video/widgets/video_card_h_member_video.dart b/lib/pages/member_video/widgets/video_card_h_member_video.dart index af4b973fc..c61b98a7a 100644 --- a/lib/pages/member_video/widgets/video_card_h_member_video.dart +++ b/lib/pages/member_video/widgets/video_card_h_member_video.dart @@ -73,7 +73,6 @@ class VideoCardHMemberVideo extends StatelessWidget { child: LayoutBuilder( builder: (BuildContext context, BoxConstraints boxConstraints) { return Row( - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ AspectRatio( diff --git a/lib/pages/mine/controller.dart b/lib/pages/mine/controller.dart index 224265661..2d9a14cb1 100644 --- a/lib/pages/mine/controller.dart +++ b/lib/pages/mine/controller.dart @@ -181,7 +181,6 @@ class MineController extends GetxController { bottom: MediaQuery.paddingOf(context).bottom + 15, ), child: Row( - mainAxisAlignment: MainAxisAlignment.start, children: [ const Icon(MdiIcons.incognitoOff, size: 20), const SizedBox(width: 10), diff --git a/lib/pages/msg_feed_top/reply_me/view.dart b/lib/pages/msg_feed_top/reply_me/view.dart index 040ed9bf4..614e575f6 100644 --- a/lib/pages/msg_feed_top/reply_me/view.dart +++ b/lib/pages/msg_feed_top/reply_me/view.dart @@ -140,7 +140,6 @@ class _ReplyMePageState extends State { ), ), subtitle: Column( - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 4), diff --git a/lib/pages/rank/view.dart b/lib/pages/rank/view.dart index ab1957b8d..978f57919 100644 --- a/lib/pages/rank/view.dart +++ b/lib/pages/rank/view.dart @@ -26,60 +26,56 @@ class _RankPageState extends State children: [ SizedBox( width: 64, - child: SingleChildScrollView( + child: ListView( padding: EdgeInsets.only( bottom: MediaQuery.paddingOf(context).bottom + 80, ), - child: Column( - children: List.generate( - RankType.values.length, - (index) => IntrinsicHeight( - child: Obx( - () => Ink( - color: index == _rankController.tabIndex.value - ? theme.colorScheme.onInverseSurface - : theme.colorScheme.surface, - child: InkWell( - onTap: () { - if (_rankController.tabIndex.value != index) { - _rankController.tabIndex.value = index; - _rankController.tabController.animateTo(index); - } else { - _rankController.animateToTop(); - } - }, - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Container( - height: double.infinity, - width: 3, - color: index == _rankController.tabIndex.value - ? theme.colorScheme.primary - : Colors.transparent, - ), - Expanded( - flex: 1, - child: Container( - alignment: Alignment.center, - padding: - const EdgeInsets.symmetric(vertical: 7), - child: Text( - RankType.values[index].label, - style: TextStyle( - color: - index == _rankController.tabIndex.value - ? theme.colorScheme.primary - : theme.colorScheme.onSurface, - fontSize: 15, - ), - maxLines: 1, - overflow: TextOverflow.ellipsis, + children: List.generate( + RankType.values.length, + (index) => IntrinsicHeight( + child: Obx( + () => Material( + color: index == _rankController.tabIndex.value + ? theme.colorScheme.onInverseSurface + : theme.colorScheme.surface, + child: InkWell( + onTap: () { + if (_rankController.tabIndex.value != index) { + _rankController.tabIndex.value = index; + _rankController.tabController.animateTo(index); + } else { + _rankController.animateToTop(); + } + }, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + height: double.infinity, + width: 3, + color: index == _rankController.tabIndex.value + ? theme.colorScheme.primary + : Colors.transparent, + ), + Expanded( + flex: 1, + child: Container( + alignment: Alignment.center, + padding: const EdgeInsets.symmetric(vertical: 7), + child: Text( + RankType.values[index].label, + style: TextStyle( + color: index == _rankController.tabIndex.value + ? theme.colorScheme.primary + : theme.colorScheme.onSurface, + fontSize: 15, ), + maxLines: 1, + overflow: TextOverflow.ellipsis, ), ), - ], - ), + ), + ], ), ), ), diff --git a/lib/pages/rank/zone/view.dart b/lib/pages/rank/zone/view.dart index c28598d2e..1e43c0663 100644 --- a/lib/pages/rank/zone/view.dart +++ b/lib/pages/rank/zone/view.dart @@ -79,6 +79,9 @@ class _ZonePageState extends CommonPageState return VideoCardH( videoItem: item, showPubdate: true, + onRemove: () => controller.loadingState + ..value.data!.removeAt(index) + ..refresh(), ); } return PgcRankItem(item: item); diff --git a/lib/pages/search/controller.dart b/lib/pages/search/controller.dart index 9de71970a..dd8caa75b 100644 --- a/lib/pages/search/controller.dart +++ b/lib/pages/search/controller.dart @@ -24,25 +24,25 @@ class SSearchController extends GetxController { int initIndex = 0; // uid - RxBool showUidBtn = false.obs; + final RxBool showUidBtn = false.obs; late final digitOnlyRegExp = RegExp(r'^\d+$'); // history - late final RxBool recordSearchHistory = Pref.recordSearchHistory.obs; + final RxBool recordSearchHistory = Pref.recordSearchHistory.obs; late final RxList historyList; // suggestion - late final bool searchSuggestion = Pref.searchSuggestion; + final bool searchSuggestion = Pref.searchSuggestion; StreamController? _ctr; StreamSubscription? _sub; late final RxList searchSuggestList; // trending - late final bool enableHotKey = Pref.enableHotKey; + final bool enableHotKey = Pref.enableHotKey; late final Rx> loadingState; // rcmd - late final bool enableSearchRcmd = Pref.enableSearchRcmd; + final bool enableSearchRcmd = Pref.enableSearchRcmd; late final Rx> recommendData; @override diff --git a/lib/pages/search/view.dart b/lib/pages/search/view.dart index efaf57827..d8a7962a3 100644 --- a/lib/pages/search/view.dart +++ b/lib/pages/search/view.dart @@ -73,35 +73,33 @@ class _SearchPageState extends State { onSubmitted: (value) => _searchController.submit(), ), ), - body: SingleChildScrollView( + body: ListView( padding: MediaQuery.paddingOf(context).copyWith(top: 0), - child: Column( - children: [ - if (_searchController.searchSuggestion) _searchSuggest(), - if (context.orientation == Orientation.portrait) ...[ - if (_searchController.enableHotKey) hotSearch(theme), - _history(theme), - if (_searchController.enableSearchRcmd) hotSearch(theme, false) - ] else - Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - if (_searchController.enableHotKey || - _searchController.enableSearchRcmd) - Expanded( - child: Column( - children: [ - if (_searchController.enableHotKey) hotSearch(theme), - if (_searchController.enableSearchRcmd) - hotSearch(theme, false) - ], - ), + children: [ + if (_searchController.searchSuggestion) _searchSuggest(), + if (context.orientation == Orientation.portrait) ...[ + if (_searchController.enableHotKey) hotSearch(theme), + _history(theme), + if (_searchController.enableSearchRcmd) hotSearch(theme, false) + ] else + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (_searchController.enableHotKey || + _searchController.enableSearchRcmd) + Expanded( + child: Column( + children: [ + if (_searchController.enableHotKey) hotSearch(theme), + if (_searchController.enableSearchRcmd) + hotSearch(theme, false) + ], ), - Expanded(child: _history(theme)), - ], - ), - ], - ), + ), + Expanded(child: _history(theme)), + ], + ), + ], ), ); } diff --git a/lib/pages/search_panel/video/view.dart b/lib/pages/search_panel/video/view.dart index 286eb135c..77416db01 100644 --- a/lib/pages/search_panel/video/view.dart +++ b/lib/pages/search_panel/video/view.dart @@ -113,6 +113,9 @@ class _SearchVideoPanelState extends CommonSearchPanelState controller.loadingState + ..value.data!.removeAt(index) + ..refresh(), ); }, childCount: list.length, diff --git a/lib/pages/setting/models/style_settings.dart b/lib/pages/setting/models/style_settings.dart index a9719f7df..0c34329f3 100644 --- a/lib/pages/setting/models/style_settings.dart +++ b/lib/pages/setting/models/style_settings.dart @@ -213,7 +213,6 @@ List get styleSettings => [ SettingsModel( settingsType: SettingsType.sw1tch, title: '动态页显示所有已关注UP主', - subtitle: '并以最常访问排序UP', leading: const Icon(Icons.people_alt_outlined), setKey: SettingBoxKey.dynamicsShowAllFollowedUp, defaultVal: false, diff --git a/lib/pages/settings_search/view.dart b/lib/pages/settings_search/view.dart index 948661b96..fa36e48d5 100644 --- a/lib/pages/settings_search/view.dart +++ b/lib/pages/settings_search/view.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/pages/setting/models/extra_settings.dart'; import 'package:PiliPlus/pages/setting/models/model.dart'; @@ -7,9 +9,9 @@ import 'package:PiliPlus/pages/setting/models/recommend_settings.dart'; import 'package:PiliPlus/pages/setting/models/style_settings.dart'; import 'package:PiliPlus/pages/setting/models/video_settings.dart'; import 'package:PiliPlus/utils/grid.dart'; -import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'package:stream_transform/stream_transform.dart'; import 'package:waterfall_flow/waterfall_flow.dart'; class SettingsSearchPage extends StatefulWidget { @@ -30,9 +32,35 @@ class _SettingsSearchPageState extends State { ...playSettings, ...styleSettings, ]; + late StreamController _ctr; + late StreamSubscription _sub; + + @override + void initState() { + super.initState(); + _ctr = StreamController(); + _sub = _ctr.stream + .debounce(const Duration(milliseconds: 200), trailing: true) + .listen((value) { + if (value.isEmpty) { + _list.clear(); + } else { + value = value.toLowerCase(); + _list.value = _settings + .where((item) => + (item.title ?? item.getTitle?.call()) + ?.toLowerCase() + .contains(value) || + item.subtitle?.toLowerCase().contains(value) == true) + .toList(); + } + }); + } @override void dispose() { + _sub.cancel(); + _ctr.close(); _textEditingController.dispose(); super.dispose(); } @@ -59,23 +87,7 @@ class _SettingsSearchPageState extends State { autofocus: true, controller: _textEditingController, textAlignVertical: TextAlignVertical.center, - onChanged: (value) { - EasyThrottle.throttle( - 'searchSettings', const Duration(milliseconds: 200), () { - if (value.isEmpty) { - _list.clear(); - } else { - value = value.toLowerCase(); - _list.value = _settings - .where((item) => - (item.title ?? item.getTitle?.call()) - ?.toLowerCase() - .contains(value) || - item.subtitle?.toLowerCase().contains(value) == true) - .toList(); - } - }); - }, + onChanged: _ctr.add, decoration: const InputDecoration( isDense: true, hintText: '搜索', diff --git a/lib/pages/subscription/widgets/item.dart b/lib/pages/subscription/widgets/item.dart index d04bb1b1c..b966e3043 100644 --- a/lib/pages/subscription/widgets/item.dart +++ b/lib/pages/subscription/widgets/item.dart @@ -59,7 +59,6 @@ class SubItem extends StatelessWidget { child: Padding( padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 5), child: Row( - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ AspectRatio( diff --git a/lib/pages/subscription_detail/widget/sub_video_card.dart b/lib/pages/subscription_detail/widget/sub_video_card.dart index dcd89ff0b..1360f73f5 100644 --- a/lib/pages/subscription_detail/widget/sub_video_card.dart +++ b/lib/pages/subscription_detail/widget/sub_video_card.dart @@ -54,7 +54,6 @@ class SubVideoCardH extends StatelessWidget { vertical: 5, ), child: Row( - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ AspectRatio( diff --git a/lib/pages/video/medialist/view.dart b/lib/pages/video/medialist/view.dart index eed3b4311..164fa2297 100644 --- a/lib/pages/video/medialist/view.dart +++ b/lib/pages/video/medialist/view.dart @@ -189,7 +189,6 @@ class _MediaListPanelState vertical: 5, ), child: Row( - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ AspectRatio( diff --git a/lib/pages/video/post_panel/view.dart b/lib/pages/video/post_panel/view.dart index 96942d63e..6c454ffbe 100644 --- a/lib/pages/video/post_panel/view.dart +++ b/lib/pages/video/post_panel/view.dart @@ -102,18 +102,15 @@ class _PostPanelState extends CommonCollapseSlidePageState { SingleChildScrollView( controller: ScrollController(), physics: const AlwaysScrollableScrollPhysics(), + padding: EdgeInsets.only( + bottom: 88 + MediaQuery.paddingOf(context).bottom), child: Column( - children: [ - ...List.generate( - list!.length, - (index) { - return _buildItem(theme, index, list![index]); - }, - ), - SizedBox( - height: 88 + MediaQuery.paddingOf(context).bottom, - ), - ], + children: List.generate( + list!.length, + (index) { + return _buildItem(theme, index, list![index]); + }, + ), ), ), Positioned( diff --git a/lib/pages/video/related/view.dart b/lib/pages/video/related/view.dart index c21041a11..7310ccae7 100644 --- a/lib/pages/video/related/view.dart +++ b/lib/pages/video/related/view.dart @@ -53,6 +53,9 @@ class _RelatedVideoPanelState extends State return VideoCardH( videoItem: response[index], showPubdate: true, + onRemove: () => _relatedController.loadingState + ..value.data!.removeAt(index) + ..refresh(), ); }, childCount: response!.length, diff --git a/lib/pages/video/reply/widgets/reply_item_grpc.dart b/lib/pages/video/reply/widgets/reply_item_grpc.dart index 80a61f282..de507eb6d 100644 --- a/lib/pages/video/reply/widgets/reply_item_grpc.dart +++ b/lib/pages/video/reply/widgets/reply_item_grpc.dart @@ -437,7 +437,7 @@ class ReplyItemGrpc extends StatelessWidget { final childReply = replies[index]; EdgeInsets padding; if (length == 1) { - padding = const EdgeInsets.all(8); + padding = const EdgeInsets.fromLTRB(8, 5, 8, 5); } else { if (index == 0) { padding = const EdgeInsets.fromLTRB(8, 8, 8, 4); @@ -542,8 +542,8 @@ class ReplyItemGrpc extends StatelessWidget { child: Container( width: double.infinity, padding: length == 1 - ? const EdgeInsets.all(8) - : const EdgeInsets.fromLTRB(8, 4, 8, 8), + ? const EdgeInsets.fromLTRB(8, 6, 8, 6) + : const EdgeInsets.fromLTRB(8, 5, 8, 8), child: Text.rich( TextSpan( style: TextStyle( diff --git a/lib/utils/update.dart b/lib/utils/update.dart index 73ff0f394..05e7ca9e2 100644 --- a/lib/utils/update.dart +++ b/lib/utils/update.dart @@ -42,8 +42,6 @@ class Update { height: 280, child: SingleChildScrollView( child: Column( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Text(