diff --git a/lib/common/widgets/flutter/page/page_view.dart b/lib/common/widgets/flutter/page/page_view.dart index 175f774a9..1cf5f0786 100644 --- a/lib/common/widgets/flutter/page/page_view.dart +++ b/lib/common/widgets/flutter/page/page_view.dart @@ -114,7 +114,7 @@ class PageView required this.horizontalDragGestureRecognizer, }) : childrenDelegate = SliverChildListDelegate(children); - final T horizontalDragGestureRecognizer; + final GestureRecognizerFactoryConstructor horizontalDragGestureRecognizer; /// Creates a scrollable list that works page by page using widgets that are /// created on demand. diff --git a/lib/common/widgets/flutter/page/scrollable.dart b/lib/common/widgets/flutter/page/scrollable.dart index 3d5ec7439..1730badfe 100644 --- a/lib/common/widgets/flutter/page/scrollable.dart +++ b/lib/common/widgets/flutter/page/scrollable.dart @@ -105,7 +105,7 @@ class Scrollable required this.horizontalDragGestureRecognizer, }) : assert(semanticChildCount == null || semanticChildCount >= 0); - final T horizontalDragGestureRecognizer; + final GestureRecognizerFactoryConstructor horizontalDragGestureRecognizer; /// {@template flutter.widgets.Scrollable.axisDirection} /// The direction in which this widget scrolls. @@ -815,7 +815,7 @@ class ScrollableState case Axis.horizontal: _gestureRecognizers = { T: GestureRecognizerFactoryWithHandlers( - () => widget.horizontalDragGestureRecognizer, + widget.horizontalDragGestureRecognizer, (T instance) { instance ..onDown = _handleDragDown diff --git a/lib/common/widgets/flutter/page/tabs.dart b/lib/common/widgets/flutter/page/tabs.dart index 133d7f34e..1e5c4579e 100644 --- a/lib/common/widgets/flutter/page/tabs.dart +++ b/lib/common/widgets/flutter/page/tabs.dart @@ -38,7 +38,7 @@ class TabBarView required this.horizontalDragGestureRecognizer, }); - final T horizontalDragGestureRecognizer; + final GestureRecognizerFactoryConstructor horizontalDragGestureRecognizer; /// This widget's selection and animation state. /// diff --git a/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart b/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart index 54ba24a10..fabf0c63e 100644 --- a/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart +++ b/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart @@ -87,11 +87,7 @@ class _InteractiveviewerGalleryState extends State late final _tween = Matrix4Tween(); late final _animatable = _tween.chain(CurveTween(curve: Curves.easeOut)); - late final _horizontalDragGestureRecognizer = - ImageHorizontalDragGestureRecognizer( - width: 0, - transformationController: _transformationController, - ); + late final _horizontalDragGestureRecognizer; late Offset _doubleTapLocalPosition; @@ -111,6 +107,11 @@ class _InteractiveviewerGalleryState extends State _transformationController = TransformationController(); + _horizontalDragGestureRecognizer = ImageHorizontalDragGestureRecognizer( + width: 0, + transformationController: _transformationController, + ); + _animationController = AnimationController( vsync: this, duration: const Duration(milliseconds: 300), @@ -246,7 +247,8 @@ class _InteractiveviewerGalleryState extends State : _itemBuilder(index, item), ); }, - horizontalDragGestureRecognizer: _horizontalDragGestureRecognizer, + horizontalDragGestureRecognizer: () => + _horizontalDragGestureRecognizer, ), ), Positioned( diff --git a/lib/common/widgets/scroll_physics.dart b/lib/common/widgets/scroll_physics.dart index 60f402afe..4b63ff38f 100644 --- a/lib/common/widgets/scroll_physics.dart +++ b/lib/common/widgets/scroll_physics.dart @@ -9,7 +9,7 @@ Widget videoTabBarView({ }) => TabBarView( controller: controller, physics: const CustomTabBarViewScrollPhysics(parent: ClampingScrollPhysics()), - horizontalDragGestureRecognizer: CustomHorizontalDragGestureRecognizer(), + horizontalDragGestureRecognizer: CustomHorizontalDragGestureRecognizer.new, children: children, ); @@ -19,7 +19,7 @@ Widget tabBarView({ }) => TabBarView( physics: const CustomTabBarViewScrollPhysics(), controller: controller, - horizontalDragGestureRecognizer: CustomHorizontalDragGestureRecognizer(), + horizontalDragGestureRecognizer: CustomHorizontalDragGestureRecognizer.new, children: children, ); diff --git a/lib/pages/common/slide/common_slide_page.dart b/lib/pages/common/slide/common_slide_page.dart index c666fcccc..501bc1b7d 100644 --- a/lib/pages/common/slide/common_slide_page.dart +++ b/lib/pages/common/slide/common_slide_page.dart @@ -24,6 +24,13 @@ mixin CommonSlideMixin on State, TickerProvider { static bool slideDismissReplyPage = Pref.slideDismissReplyPage; + bool isDxAllowed(double dx) { + return enableSlide + ? dx > CommonSlideMixin.offset && + dx < maxWidth - CommonSlideMixin.offset + : true; + } + @override void initState() { super.initState(); diff --git a/lib/pages/episode_panel/view.dart b/lib/pages/episode_panel/view.dart index 37c850ca4..9eed0dfc3 100644 --- a/lib/pages/episode_panel/view.dart +++ b/lib/pages/episode_panel/view.dart @@ -235,12 +235,8 @@ class _EpisodePanelState extends State if (_isMulti) { return TabBarView( controller: _tabController, - horizontalDragGestureRecognizer: TabBarDragGestureRecognizer( - isDxAllowed: (double dx) => enableSlide - ? dx > CommonSlideMixin.offset && - dx < maxWidth - CommonSlideMixin.offset - : true, - ), + horizontalDragGestureRecognizer: () => + TabBarDragGestureRecognizer(isDxAllowed: isDxAllowed), children: List.generate( widget.list.length, (index) => _buildBody( diff --git a/lib/pages/history/view.dart b/lib/pages/history/view.dart index 9c88bba7f..2cca7d8a6 100644 --- a/lib/pages/history/view.dart +++ b/lib/pages/history/view.dart @@ -139,7 +139,7 @@ class _HistoryPageState extends State : const CustomTabBarViewScrollPhysics(), controller: _historyController.tabController, horizontalDragGestureRecognizer: - CustomHorizontalDragGestureRecognizer(), + CustomHorizontalDragGestureRecognizer.new, children: [ KeepAliveWrapper(builder: (context) => child), ..._historyController.tabs.map( diff --git a/lib/pages/later/view.dart b/lib/pages/later/view.dart index b55c0e0d1..b425533fb 100644 --- a/lib/pages/later/view.dart +++ b/lib/pages/later/view.dart @@ -135,7 +135,7 @@ class _LaterPageState extends State : const CustomTabBarViewScrollPhysics(), controller: _tabController, horizontalDragGestureRecognizer: - CustomHorizontalDragGestureRecognizer(), + CustomHorizontalDragGestureRecognizer.new, children: LaterViewType.values .map((item) => item.page) .toList(), diff --git a/lib/pages/live_room/view.dart b/lib/pages/live_room/view.dart index e6a83f92c..fab6efbbb 100644 --- a/lib/pages/live_room/view.dart +++ b/lib/pages/live_room/view.dart @@ -733,7 +733,7 @@ class _LiveRoomPageState extends State onPageChanged: (value) => _liveRoomController.pageIndex.value = value, horizontalDragGestureRecognizer: - CustomHorizontalDragGestureRecognizer(), + CustomHorizontalDragGestureRecognizer.new, children: [ KeepAliveWrapper(builder: (context) => chat()), SuperChatPanel( diff --git a/lib/pages/video/introduction/pgc/widgets/intro_detail.dart b/lib/pages/video/introduction/pgc/widgets/intro_detail.dart index 4fe2b1189..33cf3ae2f 100644 --- a/lib/pages/video/introduction/pgc/widgets/intro_detail.dart +++ b/lib/pages/video/introduction/pgc/widgets/intro_detail.dart @@ -97,12 +97,8 @@ class _IntroDetailState extends State return TabBarView( controller: _tabController, physics: const CustomTabBarViewScrollPhysics(), - horizontalDragGestureRecognizer: TabBarDragGestureRecognizer( - isDxAllowed: (double dx) => enableSlide - ? dx > CommonSlideMixin.offset && - dx < maxWidth - CommonSlideMixin.offset - : true, - ), + horizontalDragGestureRecognizer: () => + TabBarDragGestureRecognizer(isDxAllowed: isDxAllowed), children: [ KeepAliveWrapper(builder: (context) => _buildInfo(theme)), PgcReviewPage(