From a4b0b16a193202486339dcdca1c303f4a8e72239 Mon Sep 17 00:00:00 2001 From: dom Date: Sun, 21 Jun 2026 11:13:26 +0800 Subject: [PATCH] update Signed-off-by: dom --- lib/pages/member_video/view.dart | 3 +- lib/pages/pgc/controller.dart | 116 ++---- lib/pages/pgc/view.dart | 345 +++++++----------- lib/pages/rank/view.dart | 68 ++-- lib/pages/video/controller.dart | 3 +- .../video/introduction/local/controller.dart | 3 +- lib/pages/video/note/view.dart | 3 +- lib/pages/video/post_panel/view.dart | 3 +- lib/pages/video/reply/view.dart | 3 +- lib/pages/video/reply_reply/controller.dart | 3 +- lib/pages/video/reply_reply/view.dart | 3 +- lib/pages/video/view_point/view.dart | 3 +- pubspec.lock | 4 +- pubspec.yaml | 2 +- 14 files changed, 206 insertions(+), 356 deletions(-) diff --git a/lib/pages/member_video/view.dart b/lib/pages/member_video/view.dart index d9185d8e2..4203b1234 100644 --- a/lib/pages/member_video/view.dart +++ b/lib/pages/member_video/view.dart @@ -11,7 +11,8 @@ import 'package:PiliPlus/pages/member/controller.dart'; import 'package:PiliPlus/pages/member_video/controller.dart'; import 'package:PiliPlus/pages/member_video/widgets/video_card_h_member_video.dart'; import 'package:PiliPlus/utils/grid.dart'; -import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; +import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart' + show ExtendedNestedScrollController; import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; diff --git a/lib/pages/pgc/controller.dart b/lib/pages/pgc/controller.dart index 897c0113d..018abc1c6 100644 --- a/lib/pages/pgc/controller.dart +++ b/lib/pages/pgc/controller.dart @@ -2,27 +2,36 @@ import 'package:PiliPlus/http/fav.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/pgc.dart'; import 'package:PiliPlus/models/common/home_tab_type.dart'; +import 'package:PiliPlus/models_new/fav/fav_pgc/data.dart'; import 'package:PiliPlus/models_new/fav/fav_pgc/list.dart'; -import 'package:PiliPlus/models_new/pgc/pgc_index_result/list.dart'; import 'package:PiliPlus/models_new/pgc/pgc_timeline/result.dart'; import 'package:PiliPlus/pages/common/common_list_controller.dart'; import 'package:PiliPlus/services/account_service.dart'; import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; -import 'package:flutter/widgets.dart' show ScrollController; import 'package:get/get.dart'; -class PgcController - extends CommonListController?, PgcIndexItem> +class PgcController extends CommonListController with AccountMixin { - PgcController({required this.tabType}) - : indexType = tabType == HomeTabType.cinema ? 102 : null; + PgcController({required HomeTabType tabType}) { + switch (tabType) { + case .bangumi: + type = 1; + showPgcTimeline = Pref.showPgcTimeline; + case .cinema: + type = 2; + indexType = 102; + showPgcTimeline = false; + default: + } + } - final HomeTabType tabType; - final int? indexType; - - late final showPgcTimeline = - tabType == HomeTabType.bangumi && Pref.showPgcTimeline; + int? indexType; + late final int type; + late final int tabType; + late final bool showPgcTimeline; + // follow + late final RxInt followCount = (-1).obs; @override final accountService = Get.find(); @@ -32,7 +41,6 @@ class PgcController super.onInit(); queryData(); - queryPgcFollow(); if (showPgcTimeline) { queryPgcTimeline(); } @@ -40,30 +48,12 @@ class PgcController @override Future onRefresh() { - if (accountService.isLogin.value) { - _refreshPgcFollow(); - } if (showPgcTimeline) { queryPgcTimeline(); } - return super.onRefresh(); + return super.onRefresh().whenComplete(scrollController.jumpToTop); } - void _refreshPgcFollow() { - followPage = 1; - followEnd = false; - queryPgcFollow(); - } - - // follow - late int followPage = 1; - late RxInt followCount = (-1).obs; - late bool followLoading = false; - late bool followEnd = false; - late Rx?>> followState = - LoadingState?>.loading().obs; - final followController = ScrollController(); - // timeline late Rx?>> timelineState = LoadingState?>.loading().obs; @@ -86,70 +76,22 @@ class PgcController timelineState.value = Success(list1 ?? list2); } - // 我的订阅 - Future queryPgcFollow([bool isRefresh = true]) async { - if (!accountService.isLogin.value || - followLoading || - (!isRefresh && followEnd)) { - return; - } - followLoading = true; - final res = await FavHttp.favPgc( - type: tabType == HomeTabType.bangumi ? 1 : 2, - pn: followPage, - ); - - if (res case Success(:final response)) { - final list = response.list; - followCount.value = response.total ?? -1; - - if (list == null || list.isEmpty) { - followEnd = true; - if (isRefresh) { - followState.value = Success(list); - } - followLoading = false; - return; - } - - if (isRefresh) { - if (list.length >= followCount.value) { - followEnd = true; - } - followState.value = Success(list); - followController.jumpToTop(); - } else if (followState.value case Success(:final response)) { - final currentList = response!..addAll(list); - if (currentList.length >= followCount.value) { - followEnd = true; - } - followState.refresh(); - } - followPage++; - } else if (isRefresh) { - followState.value = res as Error; - } - followLoading = false; - } + @override + Future> customGetData() => + FavHttp.favPgc(type: type, pn: page); @override - Future?>> customGetData() => PgcHttp.pgcIndex( - page: page, - indexType: indexType, - ); - - @override - void onClose() { - followController.dispose(); - super.onClose(); + List? getDataList(FavPgcData response) { + followCount.value = response.total ?? 0; + return response.list; } @override void onChangeAccount(bool isLogin) { if (isLogin) { - _refreshPgcFollow(); + onRefresh(); } else { - followState.value = LoadingState.loading(); + loadingState.value = LoadingState.loading(); } } } diff --git a/lib/pages/pgc/view.dart b/lib/pages/pgc/view.dart index 5c424fe8b..5ffddc6be 100644 --- a/lib/pages/pgc/view.dart +++ b/lib/pages/pgc/view.dart @@ -3,7 +3,6 @@ import 'dart:math'; import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/button/more_btn.dart'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; -import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; @@ -12,20 +11,18 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/fav_type.dart'; import 'package:PiliPlus/models/common/home_tab_type.dart'; import 'package:PiliPlus/models_new/fav/fav_pgc/list.dart'; -import 'package:PiliPlus/models_new/pgc/pgc_index_result/list.dart'; import 'package:PiliPlus/models_new/pgc/pgc_timeline/result.dart'; import 'package:PiliPlus/pages/pgc/controller.dart'; import 'package:PiliPlus/pages/pgc/widgets/pgc_card_v.dart'; import 'package:PiliPlus/pages/pgc/widgets/pgc_card_v_timeline.dart'; import 'package:PiliPlus/pages/pgc_index/controller.dart'; import 'package:PiliPlus/pages/pgc_index/view.dart'; -import 'package:PiliPlus/pages/pgc_index/widgets/pgc_card_v_pgc_index.dart'; import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -class PgcPage extends StatefulWidget { +class PgcPage extends StatelessWidget { const PgcPage({ super.key, required this.tabType, @@ -33,46 +30,32 @@ class PgcPage extends StatefulWidget { final HomeTabType tabType; - @override - State createState() => _PgcPageState(); -} - -class _PgcPageState extends State with AutomaticKeepAliveClientMixin { - late final PgcController controller; - - @override - void initState() { - controller = Get.put( - PgcController(tabType: widget.tabType), - tag: widget.tabType.name, - ); - super.initState(); - } - - @override - bool get wantKeepAlive => true; - @override Widget build(BuildContext context) { - super.build(context); - final ThemeData theme = Theme.of(context); + final theme = Theme.of(context); + final controller = Get.put( + PgcController(tabType: tabType), + tag: tabType.name, + ); return refreshIndicator( onRefresh: controller.onRefresh, child: CustomScrollView( - controller: controller.scrollController, physics: const AlwaysScrollableScrollPhysics(), slivers: [ - _buildFollow(theme), + _buildFollow(theme, controller), if (controller.showPgcTimeline) SliverToBoxAdapter( child: SizedBox( height: Grid.smallCardWidth / 2 / 0.75 + 96, child: Obx( - () => _buildTimeline(theme, controller.timelineState.value), + () => _buildTimeline( + theme, + controller, + controller.timelineState.value, + ), ), ), ), - ..._buildRcmd(theme), ], ), ); @@ -80,6 +63,7 @@ class _PgcPageState extends State with AutomaticKeepAliveClientMixin { Widget _buildTimeline( ThemeData theme, + PgcController controller, LoadingState?> loadingState, ) => switch (loadingState) { Loading() => m3eLoading, @@ -99,10 +83,7 @@ class _PgcPageState extends State with AutomaticKeepAliveClientMixin { Row( children: [ const SizedBox(width: 16), - Text( - '追番时间表', - style: theme.textTheme.titleMedium, - ), + Text('追番时间表', style: theme.textTheme.titleMedium), const SizedBox(width: 16), Expanded( child: TabBar( @@ -113,8 +94,8 @@ class _PgcPageState extends State with AutomaticKeepAliveClientMixin { Colors.transparent, ), splashFactory: NoSplash.splashFactory, - padding: const EdgeInsets.only(right: 10), - indicatorPadding: const EdgeInsets.symmetric( + padding: const .only(right: 10), + indicatorPadding: const .symmetric( horizontal: 4, vertical: 10, ), @@ -161,14 +142,14 @@ class _PgcPageState extends State with AutomaticKeepAliveClientMixin { return const SizedBox.shrink(); } return ListView.builder( - physics: const AlwaysScrollableScrollPhysics(), - scrollDirection: Axis.horizontal, + padding: .zero, + scrollDirection: .horizontal, itemCount: item.episodes!.length, - padding: EdgeInsets.zero, + physics: const AlwaysScrollableScrollPhysics(), itemBuilder: (context, index) { return Container( width: Grid.smallCardWidth / 2, - margin: EdgeInsets.only( + margin: .only( left: Style.safeSpace, right: index == item.episodes!.length - 1 ? Style.safeSpace @@ -190,198 +171,71 @@ class _PgcPageState extends State with AutomaticKeepAliveClientMixin { ) : const SizedBox.shrink(), Error(:final errMsg) => GestureDetector( - behavior: HitTestBehavior.opaque, + behavior: .opaque, onTap: controller.queryPgcTimeline, child: Container( - padding: const EdgeInsets.symmetric(horizontal: 16), - alignment: Alignment.center, - child: Text( - errMsg ?? '', - textAlign: TextAlign.center, - ), + alignment: .center, + padding: const .symmetric(horizontal: 16), + child: Text(errMsg ?? '', textAlign: .center), ), ), }; - List _buildRcmd(ThemeData theme) => [ - _buildRcmdTitle(theme), - SliverPadding( - padding: const EdgeInsets.only( - left: Style.safeSpace, - right: Style.safeSpace, - bottom: 100, - ), - sliver: Obx( - () => _buildRcmdBody(controller.loadingState.value), - ), - ), - ]; - - Widget _buildRcmdTitle(ThemeData theme) => SliverToBoxAdapter( - child: Padding( - padding: const EdgeInsets.only( - top: 10, - bottom: 10, - left: 16, - right: 10, - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - '推荐', - style: theme.textTheme.titleMedium, - ), - moreTextButton( - padding: const EdgeInsets.symmetric(vertical: 2), - onTap: () { - if (widget.tabType == HomeTabType.bangumi) { - Get.to(const PgcIndexPage()); - } else { - List titles = const [ - '全部', - '电影', - '电视剧', - '纪录片', - '综艺', - ]; - List types = const [102, 2, 5, 3, 7]; - Get.to( - scaffold( - appBar: AppBar(title: const Text('索引')), - body: DefaultTabController( - length: types.length, - child: Builder( - builder: (context) { - return Column( - children: [ - ViewSafeArea( - child: TabBar( - tabs: titles - .map((title) => Tab(text: title)) - .toList(), - onTap: (index) { - try { - if (!DefaultTabController.of( - context, - ).indexIsChanging) { - Get.find( - tag: types[index].toString(), - ).animateToTop(); - } - } catch (_) {} - }, - ), - ), - Expanded( - child: tabBarView( - children: types - .map( - (type) => PgcIndexPage(indexType: type), - ) - .toList(), - ), - ), - ], - ); - }, + Widget _buildFollow(ThemeData theme, PgcController controller) => + SliverToBoxAdapter( + child: Obx( + () => controller.accountService.isLogin.value + ? Column( + children: [ + _buildFollowTitle(theme, controller), + SizedBox( + height: Grid.smallCardWidth / 2 / 0.75 + 50, + child: Obx( + () => _buildFollowBody( + controller, + controller.loadingState.value, + ), ), ), - ), - ); - } - }, - color: theme.colorScheme.secondary, - ), - ], - ), - ), - ); + ], + ) + : const SizedBox.shrink(), + ), + ); - late final gridDelegate = SliverGridDelegateWithExtentAndRatio( - mainAxisSpacing: Style.cardSpace, - crossAxisSpacing: Style.cardSpace, - maxCrossAxisExtent: Grid.smallCardWidth * 0.6, - childAspectRatio: 0.75, - mainAxisExtent: 50, - ); - - Widget _buildRcmdBody(LoadingState?> loadingState) { - return switch (loadingState) { - Loading() => const SliverToBoxAdapter(), - Success(:final response) => - response != null && response.isNotEmpty - ? SliverGrid.builder( - gridDelegate: gridDelegate, - itemBuilder: (context, index) { - if (index == response.length - 1) { - controller.onLoadMore(); - } - return PgcCardVPgcIndex(item: response[index]); - }, - itemCount: response.length, - ) - : HttpError(onReload: controller.onReload), - Error(:final errMsg) => HttpError( - errMsg: errMsg, - onReload: controller.onReload, - ), - }; - } - - Widget _buildFollow(ThemeData theme) => SliverToBoxAdapter( - child: Obx( - () => controller.accountService.isLogin.value - ? Column( - children: [ - _buildFollowTitle(theme), - SizedBox( - height: Grid.smallCardWidth / 2 / 0.75 + 50, - child: Obx( - () => _buildFollowBody(controller.followState.value), - ), - ), - ], - ) - : const SizedBox.shrink(), - ), - ); - - Widget _buildFollowTitle(ThemeData theme) => Padding( - padding: const EdgeInsets.only(left: 16), + Widget _buildFollowTitle( + ThemeData theme, + PgcController controller, + ) => Padding( + padding: const .only(left: 16), child: Row( children: [ Obx( () => Text( - '最近${widget.tabType == HomeTabType.bangumi ? '追番' : '追剧'}${controller.followCount.value == -1 ? '' : ' ${controller.followCount.value}'}', + '最近${tabType == .bangumi ? '追番' : '追剧'}${controller.followCount.value == -1 ? '' : ' ${controller.followCount.value}'}', style: theme.textTheme.titleMedium, ), ), const Spacer(), + _buildIndexBtn(), IconButton( tooltip: '刷新', - onPressed: () => controller - ..followPage = 1 - ..followEnd = false - ..queryPgcFollow(), - icon: const Icon( - Icons.refresh, - size: 20, - ), + onPressed: () => controller..onRefresh(), + icon: const Icon(Icons.refresh, size: 20), ), Obx( () => controller.accountService.isLogin.value ? Padding( - padding: const EdgeInsets.symmetric(horizontal: 10), + padding: const .symmetric(horizontal: 10), child: moreTextButton( text: '查看全部', onTap: () => Get.toNamed( '/fav', - arguments: widget.tabType == HomeTabType.bangumi + arguments: tabType == .bangumi ? FavTabType.bangumi.index : FavTabType.cinema.index, ), - padding: const EdgeInsets.symmetric(vertical: 8), + padding: const .symmetric(vertical: 8), color: theme.colorScheme.secondary, ), ) @@ -391,23 +245,27 @@ class _PgcPageState extends State with AutomaticKeepAliveClientMixin { ), ); - Widget _buildFollowBody(LoadingState?> loadingState) { - return switch (loadingState) { + Widget _buildFollowBody( + PgcController controller, + LoadingState?> state, + ) { + return switch (state) { Loading() => m3eLoading, Success(:final response) => response != null && response.isNotEmpty ? ListView.builder( - controller: controller.followController, - scrollDirection: Axis.horizontal, + padding: .zero, itemCount: response.length, - padding: EdgeInsets.zero, + scrollDirection: .horizontal, + key: PageStorageKey(tabType), + controller: controller.scrollController, itemBuilder: (context, index) { if (index == response.length - 1) { - controller.queryPgcFollow(false); + controller.onLoadMore(); } return Container( width: Grid.smallCardWidth / 2, - margin: EdgeInsets.only( + margin: .only( left: Style.safeSpace, right: index == response.length - 1 ? Style.safeSpace : 0, ), @@ -416,18 +274,71 @@ class _PgcPageState extends State with AutomaticKeepAliveClientMixin { }, ) : Center( - child: Text( - '还没有${widget.tabType == HomeTabType.bangumi ? '追番' : '追剧'}', - ), + child: Text('还没有${tabType == .bangumi ? '追番' : '追剧'}'), ), Error(:final errMsg) => Container( - padding: const EdgeInsets.symmetric(horizontal: 16), - alignment: Alignment.center, - child: Text( - errMsg ?? '', - textAlign: TextAlign.center, - ), + alignment: .center, + padding: const .symmetric(horizontal: 16), + child: Text(errMsg ?? '', textAlign: .center), ), }; } + + Widget _buildIndexBtn() { + return IconButton( + tooltip: '索引', + onPressed: () { + if (tabType == .bangumi) { + Get.to(const PgcIndexPage()); + } else { + const titles = ['全部', '电影', '电视剧', '纪录片', '综艺']; + List types = const [102, 2, 5, 3, 7]; + Get.to( + scaffold( + appBar: AppBar(title: const Text('索引')), + body: DefaultTabController( + length: types.length, + child: Builder( + builder: (context) { + return Column( + children: [ + ViewSafeArea( + child: TabBar( + tabs: titles + .map((title) => Tab(text: title)) + .toList(), + onTap: (index) { + try { + if (!DefaultTabController.of( + context, + ).indexIsChanging) { + Get.find( + tag: types[index].toString(), + ).animateToTop(); + } + } catch (_) {} + }, + ), + ), + Expanded( + child: tabBarView( + children: types + .map( + (type) => PgcIndexPage(indexType: type), + ) + .toList(), + ), + ), + ], + ); + }, + ), + ), + ), + ); + } + }, + icon: const Icon(Icons.filter_list, size: 20), + ); + } } diff --git a/lib/pages/rank/view.dart b/lib/pages/rank/view.dart index cb74849ed..522294090 100644 --- a/lib/pages/rank/view.dart +++ b/lib/pages/rank/view.dart @@ -5,37 +5,46 @@ import 'package:PiliPlus/pages/rank/zone/view.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -class RankPage extends StatefulWidget { +class RankPage extends StatelessWidget { const RankPage({super.key}); - @override - State createState() => _RankPageState(); -} - -class _RankPageState extends State - with AutomaticKeepAliveClientMixin { - final RankController _rankController = Get.put(RankController()); - - @override - bool get wantKeepAlive => true; - @override Widget build(BuildContext context) { - super.build(context); final theme = Theme.of(context); + final rankController = Get.put(RankController()); + + Widget buildTab(ThemeData theme) { + return VerticalTabBar( + dividerWidth: 0, + isScrollable: true, + indicatorWeight: 3, + indicatorSize: .tab, + controller: rankController.tabController, + padding: .only(bottom: MediaQuery.paddingOf(context).bottom + 105), + tabs: RankType.values.map((e) => VerticalTab(text: e.label)).toList(), + onTap: (index) { + if (!rankController.tabController.indexIsChanging) { + rankController.animateToTop(); + } else { + rankController + ..tabIndex.value = index + ..tabController.animateTo(index); + } + }, + ); + } + return Row( children: [ - _buildTab(theme), + buildTab(theme), Expanded( child: TabBarView( physics: const NeverScrollableScrollPhysics(), - controller: _rankController.tabController, + controller: rankController.tabController, children: RankType.values .map( - (item) => ZonePage( - rid: item.rid, - seasonType: item.seasonType, - ), + (item) => + ZonePage(rid: item.rid, seasonType: item.seasonType), ) .toList(), ), @@ -43,25 +52,4 @@ class _RankPageState extends State ], ); } - - Widget _buildTab(ThemeData theme) { - return VerticalTabBar( - dividerWidth: 0, - isScrollable: true, - indicatorWeight: 3, - indicatorSize: .tab, - controller: _rankController.tabController, - padding: .only(bottom: MediaQuery.paddingOf(context).bottom + 105), - tabs: RankType.values.map((e) => VerticalTab(text: e.label)).toList(), - onTap: (index) { - if (!_rankController.tabController.indexIsChanging) { - _rankController.animateToTop(); - } else { - _rankController - ..tabIndex.value = index - ..tabController.animateTo(index); - } - }, - ); - } } diff --git a/lib/pages/video/controller.dart b/lib/pages/video/controller.dart index b485f08cc..42aa3aa09 100644 --- a/lib/pages/video/controller.dart +++ b/lib/pages/video/controller.dart @@ -58,7 +58,8 @@ import 'package:PiliPlus/utils/theme_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:PiliPlus/utils/video_utils.dart'; import 'package:collection/collection.dart'; -import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; +import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart' + show ExtendedNestedScrollViewState; import 'package:flutter/foundation.dart' show kDebugMode, clampDouble; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; diff --git a/lib/pages/video/introduction/local/controller.dart b/lib/pages/video/introduction/local/controller.dart index f36a8110d..b5abfca33 100644 --- a/lib/pages/video/introduction/local/controller.dart +++ b/lib/pages/video/introduction/local/controller.dart @@ -5,7 +5,8 @@ import 'package:PiliPlus/pages/download/controller.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart'; import 'package:PiliPlus/services/service_locator.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; +import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart' + show ExtendedNestedScrollController; import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/scheduler.dart' show SchedulerBinding; import 'package:get/get.dart'; diff --git a/lib/pages/video/note/view.dart b/lib/pages/video/note/view.dart index cf9b38415..afbdc0d07 100644 --- a/lib/pages/video/note/view.dart +++ b/lib/pages/video/note/view.dart @@ -10,7 +10,8 @@ import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/bili_utils.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; -import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; +import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart' + show ExtendedNestedScrollController, ExtendedVisibilityDetector; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/video/post_panel/view.dart b/lib/pages/video/post_panel/view.dart index 346d90424..1449303c4 100644 --- a/lib/pages/video/post_panel/view.dart +++ b/lib/pages/video/post_panel/view.dart @@ -15,7 +15,8 @@ import 'package:PiliPlus/pages/video/controller.dart'; import 'package:PiliPlus/pages/video/post_panel/popup_menu_text.dart'; import 'package:PiliPlus/plugin/pl_player/controller.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; -import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; +import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart' + show ExtendedNestedScrollController, ExtendedVisibilityDetector; import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter/services.dart' show FilteringTextInputFormatter; diff --git a/lib/pages/video/reply/view.dart b/lib/pages/video/reply/view.dart index d517f0b60..d1470ac98 100644 --- a/lib/pages/video/reply/view.dart +++ b/lib/pages/video/reply/view.dart @@ -12,7 +12,8 @@ import 'package:PiliPlus/pages/video/reply/controller.dart'; import 'package:PiliPlus/pages/video/reply/widgets/reply_item_grpc.dart'; import 'package:PiliPlus/pages/video/reply_reply/view.dart'; import 'package:easy_debounce/easy_throttle.dart'; -import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; +import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart' + show ExtendedVisibilityDetector; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/video/reply_reply/controller.dart b/lib/pages/video/reply_reply/controller.dart index 2e36e976a..18bccff61 100644 --- a/lib/pages/video/reply_reply/controller.dart +++ b/lib/pages/video/reply_reply/controller.dart @@ -8,7 +8,8 @@ import 'package:PiliPlus/pages/common/publish/publish_route.dart'; import 'package:PiliPlus/pages/common/reply_controller.dart'; import 'package:PiliPlus/pages/video/reply_new/view.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; -import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; +import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart' + show ExtendedNestedScrollController; import 'package:fixnum/fixnum.dart'; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; diff --git a/lib/pages/video/reply_reply/view.dart b/lib/pages/video/reply_reply/view.dart index 2ef3fcdef..ed0bbaa11 100644 --- a/lib/pages/video/reply_reply/view.dart +++ b/lib/pages/video/reply_reply/view.dart @@ -17,7 +17,8 @@ import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/extension/widget_ext.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; -import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; +import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart' + show ExtendedNestedScrollController, ExtendedVisibilityDetector; import 'package:fixnum/fixnum.dart' show Int64; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; diff --git a/lib/pages/video/view_point/view.dart b/lib/pages/video/view_point/view.dart index 2ce0aaa8e..432cbb91e 100644 --- a/lib/pages/video/view_point/view.dart +++ b/lib/pages/video/view_point/view.dart @@ -7,7 +7,8 @@ import 'package:PiliPlus/pages/common/slide/common_slide_page.dart'; import 'package:PiliPlus/pages/video/controller.dart'; import 'package:PiliPlus/plugin/pl_player/controller.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; -import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; +import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart' + show ExtendedNestedScrollController, ExtendedVisibilityDetector; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/pubspec.lock b/pubspec.lock index 3ccfe3dff..33fe2750c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -459,8 +459,8 @@ packages: dependency: "direct main" description: path: "." - ref: mod - resolved-ref: "66486fdeb963149ba27d2dc1719c9a9005de5d18" + ref: dev + resolved-ref: "4f39947d2ceda6fa56503e0efc794fcf0d4ef5a6" url: "https://github.com/bggRGjQaUbCoE/extended_nested_scroll_view.git" source: git version: "6.2.1" diff --git a/pubspec.yaml b/pubspec.yaml index c0026a6cb..5216018a0 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -78,7 +78,7 @@ dependencies: extended_nested_scroll_view: git: url: https://github.com/bggRGjQaUbCoE/extended_nested_scroll_view.git - ref: mod + ref: dev file_picker: git: url: https://github.com/bggRGjQaUbCoE/flutter_file_picker.git