From 725d7055bf49357daef29f23ad0cfcc2b164b924 Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Wed, 19 Nov 2025 13:39:01 +0800 Subject: [PATCH] update flutter widgets Signed-off-by: bggRGjQaUbCoE --- analysis_options.yaml | 2 +- lib/common/widgets/flutter/dyn/ink_well.dart | 34 ++- lib/common/widgets/flutter/list_tile.dart | 12 +- .../widgets/flutter/page/scrollable.dart | 228 +----------------- .../flutter/page/scrollable_helpers.dart | 210 ++++++++++++++++ .../{ => flutter}/refresh_indicator.dart | 37 +-- lib/common/widgets/{ => flutter}/tabs.dart | 0 .../widgets/flutter/text/paragraph.dart | 132 +++++----- .../widgets/flutter/text/rich_text.dart | 133 +++++----- lib/common/widgets/flutter/text/text.dart | 20 +- ...rtino_adaptive_text_selection_toolbar.dart | 2 +- lib/pages/article/view.dart | 2 +- lib/pages/article_list/view.dart | 2 +- lib/pages/audio/view.dart | 2 +- lib/pages/blacklist/view.dart | 2 +- lib/pages/dynamics_detail/view.dart | 2 +- lib/pages/dynamics_tab/view.dart | 2 +- lib/pages/dynamics_topic/view.dart | 2 +- lib/pages/dynamics_topic_rcmd/view.dart | 2 +- lib/pages/fav/article/view.dart | 2 +- lib/pages/fav/cheese/view.dart | 2 +- lib/pages/fav/note/child_view.dart | 2 +- lib/pages/fav/pgc/child_view.dart | 2 +- lib/pages/fav/topic/view.dart | 2 +- lib/pages/fav/video/view.dart | 2 +- lib/pages/fav_detail/view.dart | 2 +- lib/pages/follow/child/child_view.dart | 2 +- lib/pages/follow_type/view.dart | 2 +- lib/pages/history/view.dart | 2 +- lib/pages/hot/view.dart | 2 +- lib/pages/later/child_view.dart | 2 +- lib/pages/live/view.dart | 2 +- lib/pages/live_area_detail/child/view.dart | 2 +- lib/pages/live_follow/view.dart | 2 +- lib/pages/live_search/child/view.dart | 2 +- lib/pages/login_devices/view.dart | 2 +- lib/pages/main/view.dart | 2 +- lib/pages/main_reply/view.dart | 2 +- lib/pages/match_info/view.dart | 2 +- lib/pages/member_article/view.dart | 2 +- lib/pages/member_audio/view.dart | 2 +- lib/pages/member_cheese/view.dart | 2 +- lib/pages/member_coin_arc/view.dart | 2 +- lib/pages/member_comic/view.dart | 2 +- lib/pages/member_dynamics/view.dart | 2 +- lib/pages/member_favorite/view.dart | 2 +- lib/pages/member_like_arc/view.dart | 2 +- lib/pages/member_opus/view.dart | 2 +- lib/pages/member_pgc/view.dart | 2 +- lib/pages/member_search/child/view.dart | 2 +- lib/pages/member_shop/view.dart | 2 +- lib/pages/member_upower_rank/view.dart | 2 +- lib/pages/member_video/view.dart | 2 +- lib/pages/mine/view.dart | 2 +- lib/pages/msg_feed_top/at_me/view.dart | 2 +- lib/pages/msg_feed_top/like_detail/view.dart | 2 +- lib/pages/msg_feed_top/like_me/view.dart | 2 +- lib/pages/msg_feed_top/reply_me/view.dart | 2 +- lib/pages/msg_feed_top/sys_msg/view.dart | 2 +- lib/pages/music/video/view.dart | 2 +- lib/pages/music/view.dart | 2 +- lib/pages/pgc/view.dart | 2 +- lib/pages/pgc_review/child/view.dart | 2 +- lib/pages/popular_precious/view.dart | 2 +- lib/pages/popular_series/view.dart | 2 +- lib/pages/rank/zone/view.dart | 2 +- lib/pages/rcmd/view.dart | 2 +- lib/pages/search_panel/view.dart | 2 +- lib/pages/search_trending/view.dart | 2 +- lib/pages/setting/models/extra_settings.dart | 2 +- lib/pages/subscription/view.dart | 2 +- lib/pages/subscription_detail/view.dart | 2 +- lib/pages/video/medialist/view.dart | 2 +- lib/pages/video/member/view.dart | 2 +- lib/pages/video/note/view.dart | 2 +- lib/pages/video/reply/view.dart | 2 +- lib/pages/video/reply_reply/view.dart | 2 +- .../video/reply_search_item/child/view.dart | 2 +- lib/pages/whisper/view.dart | 2 +- lib/pages/whisper_secondary/view.dart | 2 +- 80 files changed, 493 insertions(+), 455 deletions(-) create mode 100644 lib/common/widgets/flutter/page/scrollable_helpers.dart rename lib/common/widgets/{ => flutter}/refresh_indicator.dart (99%) rename lib/common/widgets/{ => flutter}/tabs.dart (100%) diff --git a/analysis_options.yaml b/analysis_options.yaml index bf5637149..4a70d7be5 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -13,7 +13,7 @@ analyzer: exclude: - lib/grpc/bilibili/** - lib/grpc/google/** - - lib/common/widgets/flutter/** + # - lib/common/widgets/flutter/** formatter: trailing_commas: preserve diff --git a/lib/common/widgets/flutter/dyn/ink_well.dart b/lib/common/widgets/flutter/dyn/ink_well.dart index 110f5f762..9b9b3a445 100644 --- a/lib/common/widgets/flutter/dyn/ink_well.dart +++ b/lib/common/widgets/flutter/dyn/ink_well.dart @@ -21,9 +21,6 @@ import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; -// Examples can assume: -// late BuildContext context; - abstract class _ParentInkResponseState { void markChildInkResponsePressed( _ParentInkResponseState childState, @@ -144,6 +141,7 @@ class InkResponse extends StatelessWidget { this.onTapCancel, this.onDoubleTap, this.onLongPress, + this.onLongPressUp, this.onSecondaryTap, this.onSecondaryTapUp, this.onSecondaryTapDown, @@ -197,6 +195,19 @@ class InkResponse extends StatelessWidget { /// Called when the user long-presses on this part of the material. final GestureLongPressCallback? onLongPress; + /// Called when the user lifts their finger after a long press on the button. + /// + /// This callback is triggered at the end of a long press gesture, specifically + /// after the user holds a long press and then releases it. It does not include + /// position details. + /// + /// Common use cases include performing an action only after the long press completes, + /// such as displaying a context menu or confirming a held gesture. + /// + /// See also: + /// * [onLongPress], which is triggered when the long press gesture is first recognized. + final GestureLongPressUpCallback? onLongPressUp; + /// Called when the user taps this part of the material with a secondary button. /// /// See also: @@ -237,7 +248,7 @@ class InkResponse extends StatelessWidget { /// become highlighted and false if this part of the material has stopped /// being highlighted. /// - /// If all of [onTap], [onDoubleTap], and [onLongPress] become null while a + /// If all of [onTap], [onDoubleTap], [onLongPress], and [onLongPressUp] become null while a /// gesture is ongoing, then [onTapCancel] will be fired and /// [onHighlightChanged] will be fired with the value false _during the /// build_. This means, for instance, that in that scenario [State.setState] @@ -493,6 +504,7 @@ class InkResponse extends StatelessWidget { onTapCancel: onTapCancel, onDoubleTap: onDoubleTap, onLongPress: onLongPress, + onLongPressUp: onLongPressUp, onSecondaryTap: onSecondaryTap, onSecondaryTapUp: onSecondaryTapUp, onSecondaryTapDown: onSecondaryTapDown, @@ -550,6 +562,7 @@ class _InkResponseStateWidget extends StatefulWidget { this.onTapCancel, this.onDoubleTap, this.onLongPress, + this.onLongPressUp, this.onSecondaryTap, this.onSecondaryTapUp, this.onSecondaryTapDown, @@ -588,6 +601,7 @@ class _InkResponseStateWidget extends StatefulWidget { final GestureTapCallback? onTapCancel; final GestureTapCallback? onDoubleTap; final GestureLongPressCallback? onLongPress; + final GestureLongPressUpCallback? onLongPressUp; final GestureTapCallback? onSecondaryTap; final GestureTapUpCallback? onSecondaryTapUp; final GestureTapDownCallback? onSecondaryTapDown; @@ -628,6 +642,7 @@ class _InkResponseStateWidget extends StatefulWidget { if (onTap != null) 'tap', if (onDoubleTap != null) 'double tap', if (onLongPress != null) 'long press', + if (onLongPressUp != null) 'long press up', if (onTapDown != null) 'tap down', if (onTapUp != null) 'tap up', if (onTapCancel != null) 'tap cancel', @@ -1099,6 +1114,12 @@ class _InkResponseState extends State<_InkResponseStateWidget> } } + void handleLongPressUp() { + _currentSplash?.confirm(); + _currentSplash = null; + widget.onLongPressUp?.call(); + } + void handleSecondaryTap() { _currentSplash?.confirm(); _currentSplash = null; @@ -1140,6 +1161,7 @@ class _InkResponseState extends State<_InkResponseStateWidget> return widget.onTap != null || widget.onDoubleTap != null || widget.onLongPress != null || + widget.onLongPressUp != null || widget.onTapUp != null || widget.onTapDown != null; } @@ -1276,6 +1298,9 @@ class _InkResponseState extends State<_InkResponseStateWidget> onLongPress: widget.onLongPress != null ? handleLongPress : null, + onLongPressUp: widget.onLongPressUp != null + ? handleLongPressUp + : null, onSecondaryTapDown: _secondaryEnabled ? handleSecondaryTapDown : null, @@ -1387,6 +1412,7 @@ class InkWell extends InkResponse { super.onTap, super.onDoubleTap, super.onLongPress, + super.onLongPressUp, super.onTapDown, super.onTapUp, super.onTapCancel, diff --git a/lib/common/widgets/flutter/list_tile.dart b/lib/common/widgets/flutter/list_tile.dart index 6a31467c7..4d763bd57 100644 --- a/lib/common/widgets/flutter/list_tile.dart +++ b/lib/common/widgets/flutter/list_tile.dart @@ -914,10 +914,7 @@ class ListTile extends StatelessWidget { WidgetState.disabled, }; final MouseCursor effectiveMouseCursor = - WidgetStateProperty.resolveAs( - mouseCursor, - mouseStates, - ) ?? + WidgetStateProperty.resolveAs(mouseCursor, mouseStates) ?? tileTheme.mouseCursor?.resolve(mouseStates) ?? WidgetStateMouseCursor.clickable.resolve(mouseStates); @@ -1330,12 +1327,7 @@ class _RenderListTile extends RenderBox @override Iterable get children { final RenderBox? title = childForSlot(_ListTileSlot.title); - return [ - ?leading, - ?title, - ?subtitle, - ?trailing, - ]; + return [?leading, ?title, ?subtitle, ?trailing]; } bool get isDense => _isDense; diff --git a/lib/common/widgets/flutter/page/scrollable.dart b/lib/common/widgets/flutter/page/scrollable.dart index 92312a0c8..d81d28d00 100644 --- a/lib/common/widgets/flutter/page/scrollable.dart +++ b/lib/common/widgets/flutter/page/scrollable.dart @@ -19,13 +19,14 @@ library; import 'dart:async'; import 'dart:math' as math; +import 'package:PiliPlus/common/widgets/flutter/page/scrollable_helpers.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/gestures.dart'; -import 'package:flutter/material.dart' hide Scrollable, ScrollableState; +import 'package:flutter/material.dart' + hide Scrollable, ScrollableState, EdgeDraggingAutoScroller; import 'package:flutter/rendering.dart'; import 'package:flutter/scheduler.dart'; import 'package:flutter/services.dart'; -import 'package:get/get.dart'; export 'package:flutter/physics.dart' show Tolerance; @@ -933,7 +934,7 @@ class CustomScrollableState extends State if (_animController.value * _maxWidth + (_isRTL ? (_maxWidth - dx) : dx) >= 100) { - Get.back(); + Navigator.pop(context); } else { _animController.reverse(); } @@ -1937,7 +1938,7 @@ class _RenderScrollSemantics extends RenderProxyBox { if (child.isTagged(RenderViewport.excludeFromScrolling)) { excluded.add(child); } else { - if (!child.hasFlag(SemanticsFlag.isHidden)) { + if (!child.flagsCollection.isHidden) { firstVisibleIndex ??= child.indexInParent; } included.add(child); @@ -1982,222 +1983,3 @@ class _RestorableScrollOffset extends RestorableValue { @override bool get enabled => value != null; } - -// 2D SCROLLING - -/// Specifies how to configure the [DragGestureRecognizer]s of a -/// [TwoDimensionalScrollable]. -// TODO(Piinks): Add sample code, https://github.com/flutter/flutter/issues/126298 -enum DiagonalDragBehavior { - /// This behavior will not allow for any diagonal scrolling. - /// - /// Drag gestures in one direction or the other will lock the input axis until - /// the gesture is released. - none, - - /// This behavior will only allow diagonal scrolling on a weighted - /// scale per gesture event. - /// - /// This means that after initially evaluating the drag gesture, the weighted - /// evaluation (based on [kTouchSlop]) stands until the gesture is released. - weightedEvent, - - /// This behavior will only allow diagonal scrolling on a weighted - /// scale that is evaluated throughout a gesture event. - /// - /// This means that during each update to the drag gesture, the scrolling - /// axis will be allowed to scroll diagonally if it exceeds the - /// [kTouchSlop]. - weightedContinuous, - - /// This behavior allows free movement in any and all directions when - /// dragging. - free, -} - -/// An auto scroller that scrolls the [scrollable] if a drag gesture drags close -/// to its edge. -/// -/// The scroll velocity is controlled by the [velocityScalar]: -/// -/// velocity = (distance of overscroll) * [velocityScalar]. -class EdgeDraggingAutoScroller { - /// Creates a auto scroller that scrolls the [scrollable]. - EdgeDraggingAutoScroller( - this.scrollable, { - this.onScrollViewScrolled, - required this.velocityScalar, - }); - - /// The [CustomScrollable] this auto scroller is scrolling. - final CustomScrollableState scrollable; - - /// Called when a scroll view is scrolled. - /// - /// The scroll view may be scrolled multiple times in a row until the drag - /// target no longer triggers the auto scroll. This callback will be called - /// in between each scroll. - final VoidCallback? onScrollViewScrolled; - - /// {@template flutter.widgets.EdgeDraggingAutoScroller.velocityScalar} - /// The velocity scalar per pixel over scroll. - /// - /// It represents how the velocity scale with the over scroll distance. The - /// auto-scroll velocity = (distance of overscroll) * velocityScalar. - /// {@endtemplate} - final double velocityScalar; - - late Rect _dragTargetRelatedToScrollOrigin; - - /// Whether the auto scroll is in progress. - bool get scrolling => _scrolling; - bool _scrolling = false; - - double _offsetExtent(Offset offset, Axis scrollDirection) { - return switch (scrollDirection) { - Axis.horizontal => offset.dx, - Axis.vertical => offset.dy, - }; - } - - double _sizeExtent(Size size, Axis scrollDirection) { - return switch (scrollDirection) { - Axis.horizontal => size.width, - Axis.vertical => size.height, - }; - } - - AxisDirection get _axisDirection => scrollable.axisDirection; - Axis get _scrollDirection => axisDirectionToAxis(_axisDirection); - - /// Starts the auto scroll if the [dragTarget] is close to the edge. - /// - /// The scroll starts to scroll the [scrollable] if the target rect is close - /// to the edge of the [scrollable]; otherwise, it remains stationary. - /// - /// If the scrollable is already scrolling, calling this method updates the - /// previous dragTarget to the new value and continues scrolling if necessary. - void startAutoScrollIfNecessary(Rect dragTarget) { - final Offset deltaToOrigin = scrollable.deltaToScrollOrigin; - _dragTargetRelatedToScrollOrigin = dragTarget.translate( - deltaToOrigin.dx, - deltaToOrigin.dy, - ); - if (_scrolling) { - // The change will be picked up in the next scroll. - return; - } - assert(!_scrolling); - _scroll(); - } - - /// Stop any ongoing auto scrolling. - void stopAutoScroll() { - _scrolling = false; - } - - Future _scroll() async { - final RenderBox scrollRenderBox = - scrollable.context.findRenderObject()! as RenderBox; - final Rect globalRect = MatrixUtils.transformRect( - scrollRenderBox.getTransformTo(null), - Rect.fromLTWH( - 0, - 0, - scrollRenderBox.size.width, - scrollRenderBox.size.height, - ), - ); - assert( - globalRect.size.width >= _dragTargetRelatedToScrollOrigin.size.width && - globalRect.size.height >= - _dragTargetRelatedToScrollOrigin.size.height, - 'Drag target size is larger than scrollable size, which may cause bouncing', - ); - _scrolling = true; - double? newOffset; - const double overDragMax = 20.0; - - final Offset deltaToOrigin = scrollable.deltaToScrollOrigin; - final Offset viewportOrigin = globalRect.topLeft.translate( - deltaToOrigin.dx, - deltaToOrigin.dy, - ); - final double viewportStart = _offsetExtent( - viewportOrigin, - _scrollDirection, - ); - final double viewportEnd = - viewportStart + _sizeExtent(globalRect.size, _scrollDirection); - - final double proxyStart = _offsetExtent( - _dragTargetRelatedToScrollOrigin.topLeft, - _scrollDirection, - ); - final double proxyEnd = _offsetExtent( - _dragTargetRelatedToScrollOrigin.bottomRight, - _scrollDirection, - ); - switch (_axisDirection) { - case AxisDirection.up: - case AxisDirection.left: - if (proxyEnd > viewportEnd && - scrollable.position.pixels > scrollable.position.minScrollExtent) { - final double overDrag = math.min(proxyEnd - viewportEnd, overDragMax); - newOffset = math.max( - scrollable.position.minScrollExtent, - scrollable.position.pixels - overDrag, - ); - } else if (proxyStart < viewportStart && - scrollable.position.pixels < scrollable.position.maxScrollExtent) { - final double overDrag = math.min( - viewportStart - proxyStart, - overDragMax, - ); - newOffset = math.min( - scrollable.position.maxScrollExtent, - scrollable.position.pixels + overDrag, - ); - } - case AxisDirection.right: - case AxisDirection.down: - if (proxyStart < viewportStart && - scrollable.position.pixels > scrollable.position.minScrollExtent) { - final double overDrag = math.min( - viewportStart - proxyStart, - overDragMax, - ); - newOffset = math.max( - scrollable.position.minScrollExtent, - scrollable.position.pixels - overDrag, - ); - } else if (proxyEnd > viewportEnd && - scrollable.position.pixels < scrollable.position.maxScrollExtent) { - final double overDrag = math.min(proxyEnd - viewportEnd, overDragMax); - newOffset = math.min( - scrollable.position.maxScrollExtent, - scrollable.position.pixels + overDrag, - ); - } - } - - if (newOffset == null || - (newOffset - scrollable.position.pixels).abs() < 1.0) { - // Drag should not trigger scroll. - _scrolling = false; - return; - } - final Duration duration = Duration( - milliseconds: (1000 / velocityScalar).round(), - ); - await scrollable.position.animateTo( - newOffset, - duration: duration, - curve: Curves.linear, - ); - onScrollViewScrolled?.call(); - if (_scrolling) { - await _scroll(); - } - } -} diff --git a/lib/common/widgets/flutter/page/scrollable_helpers.dart b/lib/common/widgets/flutter/page/scrollable_helpers.dart new file mode 100644 index 000000000..aed0f528f --- /dev/null +++ b/lib/common/widgets/flutter/page/scrollable_helpers.dart @@ -0,0 +1,210 @@ +// Copyright 2014 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/// @docImport 'package:flutter/material.dart'; +/// +/// @docImport 'overscroll_indicator.dart'; +/// @docImport 'viewport.dart'; + +// ignore_for_file: dangling_library_doc_comments + +import 'dart:math' as math; + +import 'package:PiliPlus/common/widgets/flutter/page/scrollable.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +/// An auto scroller that scrolls the [scrollable] if a drag gesture drags close +/// to its edge. +/// +/// The scroll velocity is controlled by the [velocityScalar]: +/// +/// velocity = (distance of overscroll) * [velocityScalar]. +class EdgeDraggingAutoScroller { + /// Creates a auto scroller that scrolls the [scrollable]. + EdgeDraggingAutoScroller( + this.scrollable, { + this.onScrollViewScrolled, + required this.velocityScalar, + }); + + /// The [CustomScrollable] this auto scroller is scrolling. + final CustomScrollableState scrollable; + + /// Called when a scroll view is scrolled. + /// + /// The scroll view may be scrolled multiple times in a row until the drag + /// target no longer triggers the auto scroll. This callback will be called + /// in between each scroll. + final VoidCallback? onScrollViewScrolled; + + /// {@template flutter.widgets.EdgeDraggingAutoScroller.velocityScalar} + /// The velocity scalar per pixel over scroll. + /// + /// It represents how the velocity scale with the over scroll distance. The + /// auto-scroll velocity = (distance of overscroll) * velocityScalar. + /// {@endtemplate} + final double velocityScalar; + + late Rect _dragTargetRelatedToScrollOrigin; + + /// Whether the auto scroll is in progress. + bool get scrolling => _scrolling; + bool _scrolling = false; + + double _offsetExtent(Offset offset, Axis scrollDirection) { + return switch (scrollDirection) { + Axis.horizontal => offset.dx, + Axis.vertical => offset.dy, + }; + } + + double _sizeExtent(Size size, Axis scrollDirection) { + return switch (scrollDirection) { + Axis.horizontal => size.width, + Axis.vertical => size.height, + }; + } + + AxisDirection get _axisDirection => scrollable.axisDirection; + Axis get _scrollDirection => axisDirectionToAxis(_axisDirection); + + /// Starts the auto scroll if the [dragTarget] is close to the edge. + /// + /// The scroll starts to scroll the [scrollable] if the target rect is close + /// to the edge of the [scrollable]; otherwise, it remains stationary. + /// + /// If the scrollable is already scrolling, calling this method updates the + /// previous dragTarget to the new value and continues scrolling if necessary. + void startAutoScrollIfNecessary(Rect dragTarget) { + final Offset deltaToOrigin = scrollable.deltaToScrollOrigin; + _dragTargetRelatedToScrollOrigin = dragTarget.translate( + deltaToOrigin.dx, + deltaToOrigin.dy, + ); + if (_scrolling) { + // The change will be picked up in the next scroll. + return; + } + assert(!_scrolling); + _scroll(); + } + + /// Stop any ongoing auto scrolling. + void stopAutoScroll() { + _scrolling = false; + } + + Future _scroll() async { + final RenderBox scrollRenderBox = + scrollable.context.findRenderObject()! as RenderBox; + final Matrix4 transform = scrollRenderBox.getTransformTo(null); + final Rect globalRect = MatrixUtils.transformRect( + transform, + Rect.fromLTWH( + 0, + 0, + scrollRenderBox.size.width, + scrollRenderBox.size.height, + ), + ); + final Rect transformedDragTarget = MatrixUtils.transformRect( + transform, + _dragTargetRelatedToScrollOrigin, + ); + + assert( + (globalRect.size.width + precisionErrorTolerance) >= + transformedDragTarget.size.width && + (globalRect.size.height + precisionErrorTolerance) >= + transformedDragTarget.size.height, + 'Drag target size is larger than scrollable size, which may cause bouncing', + ); + _scrolling = true; + double? newOffset; + const double overDragMax = 20.0; + + final Offset deltaToOrigin = scrollable.deltaToScrollOrigin; + final Offset viewportOrigin = globalRect.topLeft.translate( + deltaToOrigin.dx, + deltaToOrigin.dy, + ); + final double viewportStart = _offsetExtent( + viewportOrigin, + _scrollDirection, + ); + final double viewportEnd = + viewportStart + _sizeExtent(globalRect.size, _scrollDirection); + + final double proxyStart = _offsetExtent( + _dragTargetRelatedToScrollOrigin.topLeft, + _scrollDirection, + ); + final double proxyEnd = _offsetExtent( + _dragTargetRelatedToScrollOrigin.bottomRight, + _scrollDirection, + ); + switch (_axisDirection) { + case AxisDirection.up: + case AxisDirection.left: + if (proxyEnd > viewportEnd && + scrollable.position.pixels > scrollable.position.minScrollExtent) { + final double overDrag = math.min(proxyEnd - viewportEnd, overDragMax); + newOffset = math.max( + scrollable.position.minScrollExtent, + scrollable.position.pixels - overDrag, + ); + } else if (proxyStart < viewportStart && + scrollable.position.pixels < scrollable.position.maxScrollExtent) { + final double overDrag = math.min( + viewportStart - proxyStart, + overDragMax, + ); + newOffset = math.min( + scrollable.position.maxScrollExtent, + scrollable.position.pixels + overDrag, + ); + } + case AxisDirection.right: + case AxisDirection.down: + if (proxyStart < viewportStart && + scrollable.position.pixels > scrollable.position.minScrollExtent) { + final double overDrag = math.min( + viewportStart - proxyStart, + overDragMax, + ); + newOffset = math.max( + scrollable.position.minScrollExtent, + scrollable.position.pixels - overDrag, + ); + } else if (proxyEnd > viewportEnd && + scrollable.position.pixels < scrollable.position.maxScrollExtent) { + final double overDrag = math.min(proxyEnd - viewportEnd, overDragMax); + newOffset = math.min( + scrollable.position.maxScrollExtent, + scrollable.position.pixels + overDrag, + ); + } + } + + if (newOffset == null || + (newOffset - scrollable.position.pixels).abs() < 1.0) { + // Drag should not trigger scroll. + _scrolling = false; + return; + } + final Duration duration = Duration( + milliseconds: (1000 / velocityScalar).round(), + ); + await scrollable.position.animateTo( + newOffset, + duration: duration, + curve: Curves.linear, + ); + onScrollViewScrolled?.call(); + if (_scrolling) { + await _scroll(); + } + } +} diff --git a/lib/common/widgets/refresh_indicator.dart b/lib/common/widgets/flutter/refresh_indicator.dart similarity index 99% rename from lib/common/widgets/refresh_indicator.dart rename to lib/common/widgets/flutter/refresh_indicator.dart index d1773bd41..7c1838450 100644 --- a/lib/common/widgets/refresh_indicator.dart +++ b/lib/common/widgets/flutter/refresh_indicator.dart @@ -1,3 +1,12 @@ +// Copyright 2014 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// ignore_for_file: uri_does_not_exist_in_doc_import + +/// @docImport 'color_scheme.dart'; +library; + import 'dart:async'; import 'dart:math' as math; @@ -6,25 +15,10 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart' show clampDouble; import 'package:flutter/material.dart' hide RefreshIndicator; -Widget refreshIndicator({ - required RefreshCallback onRefresh, - required Widget child, -}) { - return RefreshIndicator( - displacement: displacement, - onRefresh: onRefresh, - child: child, - ); -} - -// Copyright 2014 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. +double displacement = Pref.refreshDisplacement; // The over-scroll distance that moves the indicator to its maximum // displacement, as a percentage of the scrollable's container extent. - -double displacement = Pref.refreshDisplacement; double kDragContainerExtentPercentage = Pref.refreshDragPercentage; // How much the scroll's drag gesture can overshoot the RefreshIndicator's @@ -762,3 +756,14 @@ class RefreshIndicatorState extends State ); } } + +Widget refreshIndicator({ + required RefreshCallback onRefresh, + required Widget child, +}) { + return RefreshIndicator( + displacement: displacement, + onRefresh: onRefresh, + child: child, + ); +} diff --git a/lib/common/widgets/tabs.dart b/lib/common/widgets/flutter/tabs.dart similarity index 100% rename from lib/common/widgets/tabs.dart rename to lib/common/widgets/flutter/tabs.dart diff --git a/lib/common/widgets/flutter/text/paragraph.dart b/lib/common/widgets/flutter/text/paragraph.dart index f1a7bd154..36ad403f6 100644 --- a/lib/common/widgets/flutter/text/paragraph.dart +++ b/lib/common/widgets/flutter/text/paragraph.dart @@ -9,7 +9,6 @@ /// @docImport 'editable.dart'; library; -import 'dart:collection'; import 'dart:math' as math; import 'dart:ui' as ui @@ -46,6 +45,15 @@ typedef _TextBoundaryAtPositionInText = const String _kEllipsis = '\u2026'; +class _UnspecifiedTextScaler extends TextScaler { + const _UnspecifiedTextScaler(); + @override + Never get textScaleFactor => throw UnimplementedError(); + + @override + Never scale(double fontSize) => throw UnimplementedError(); +} + /// A render object that displays a paragraph of text. class RenderParagraph extends RenderBox with @@ -68,7 +76,7 @@ class RenderParagraph extends RenderBox 'This feature was deprecated after v3.12.0-2.0.pre.', ) double textScaleFactor = 1.0, - TextScaler textScaler = TextScaler.noScaling, + TextScaler textScaler = const _UnspecifiedTextScaler(), int? maxLines, Locale? locale, StrutStyle? strutStyle, @@ -80,26 +88,22 @@ class RenderParagraph extends RenderBox required Color primary, VoidCallback? onShowMore, }) : assert(text.debugAssertIsValid()), + assert(maxLines == null || maxLines > 0), assert( - maxLines == null || - (maxLines > 0 && - overflow != TextOverflow.ellipsis && - overflow != TextOverflow.fade), - ), - assert( - identical(textScaler, TextScaler.noScaling) || textScaleFactor == 1.0, + identical(textScaler, const _UnspecifiedTextScaler()) || + textScaleFactor == 1.0, 'textScaleFactor is deprecated and cannot be specified when textScaler is specified.', ), _primary = primary, + _onShowMore = onShowMore, _softWrap = softWrap, _overflow = overflow, _selectionColor = selectionColor, - _onShowMore = onShowMore, _textPainter = TextPainter( text: text, textAlign: textAlign, textDirection: textDirection, - textScaler: textScaler == TextScaler.noScaling + textScaler: textScaler == const _UnspecifiedTextScaler() ? TextScaler.linear(textScaleFactor) : textScaler, maxLines: maxLines, @@ -842,6 +846,11 @@ class RenderParagraph extends RenderBox } } + assert(() { + _textPainter.debugPaintTextLayoutBoxes = debugPaintTextLayoutBoxes; + return true; + }()); + _textPainter.paint(context.canvas, offset); paintInlineChildren(context, offset); @@ -1013,8 +1022,9 @@ class RenderParagraph extends RenderBox } if (needsAssembleSemanticsNode) { - config.explicitChildNodes = true; - config.isSemanticBoundary = true; + config + ..explicitChildNodes = true + ..isSemanticBoundary = true; } else if (needsChildConfigurationsDelegate) { config.childConfigurationsDelegate = _childSemanticsConfigurationsDelegate; @@ -1043,8 +1053,9 @@ class RenderParagraph extends RenderBox AttributedString(buffer.toString(), attributes: attributes), ]; } - config.attributedLabel = _cachedAttributedLabels![0]; - config.textDirection = textDirection; + config + ..attributedLabel = _cachedAttributedLabels![0] + ..textDirection = textDirection; } } @@ -1126,7 +1137,7 @@ class RenderParagraph extends RenderBox // can be re-used when [assembleSemanticsNode] is called again. This ensures // stable ids for the [SemanticsNode]s of [TextSpan]s across // [assembleSemanticsNode] invocations. - LinkedHashMap? _cachedChildNodes; + Map? _cachedChildNodes; @override void assembleSemanticsNode( @@ -1143,8 +1154,7 @@ class RenderParagraph extends RenderBox int placeholderIndex = 0; int childIndex = 0; RenderBox? child = firstChild; - final LinkedHashMap newChildCache = - LinkedHashMap(); + final Map newChildCache = {}; _cachedCombinedSemanticsInfos ??= combineSemanticsInfo(_semanticsInfo!); for (final InlineSpanSemanticsInformation info in _cachedCombinedSemanticsInfos!) { @@ -1214,8 +1224,9 @@ class RenderParagraph extends RenderBox onDoubleTap: final VoidCallback? handler, ): if (handler != null) { - configuration.onTap = handler; - configuration.isLink = true; + configuration + ..onTap = handler + ..isLink = true; } case LongPressGestureRecognizer( onLongPress: final GestureLongPressCallback? onLongPress, @@ -1285,29 +1296,30 @@ class RenderParagraph extends RenderBox @override void debugFillProperties(DiagnosticPropertiesBuilder properties) { super.debugFillProperties(properties); - properties.add(EnumProperty('textAlign', textAlign)); - properties.add(EnumProperty('textDirection', textDirection)); - properties.add( - FlagProperty( - 'softWrap', - value: softWrap, - ifTrue: 'wrapping at box width', - ifFalse: 'no wrapping except at line break characters', - showName: true, - ), - ); - properties.add(EnumProperty('overflow', overflow)); - properties.add( - DiagnosticsProperty( - 'textScaler', - textScaler, - defaultValue: TextScaler.noScaling, - ), - ); - properties.add( - DiagnosticsProperty('locale', locale, defaultValue: null), - ); - properties.add(IntProperty('maxLines', maxLines, ifNull: 'unlimited')); + properties + ..add(EnumProperty('textAlign', textAlign)) + ..add(EnumProperty('textDirection', textDirection)) + ..add( + FlagProperty( + 'softWrap', + value: softWrap, + ifTrue: 'wrapping at box width', + ifFalse: 'no wrapping except at line break characters', + showName: true, + ), + ) + ..add(EnumProperty('overflow', overflow)) + ..add( + DiagnosticsProperty( + 'textScaler', + textScaler, + defaultValue: TextScaler.noScaling, + ), + ) + ..add( + DiagnosticsProperty('locale', locale, defaultValue: null), + ) + ..add(IntProperty('maxLines', maxLines, ifNull: 'unlimited')); } } @@ -1768,8 +1780,7 @@ class _SelectableFragment final TextPosition? existingSelectionEnd = _textSelectionEnd; _setSelectionPosition(null, isEnd: isEnd); - final Matrix4 transform = paragraph.getTransformTo(null); - transform.invert(); + final Matrix4 transform = paragraph.getTransformTo(null)..invert(); final Offset localPosition = MatrixUtils.transformPoint( transform, globalPosition, @@ -1842,8 +1853,7 @@ class _SelectableFragment required bool isEnd, }) { _setSelectionPosition(null, isEnd: isEnd); - final Matrix4 transform = paragraph.getTransformTo(null); - transform.invert(); + final Matrix4 transform = paragraph.getTransformTo(null)..invert(); final Offset localPosition = MatrixUtils.transformPoint( transform, globalPosition, @@ -2348,8 +2358,8 @@ class _SelectableFragment existingSelectionEnd, ); } - final Matrix4 originTransform = originParagraph.getTransformTo(null); - originTransform.invert(); + final Matrix4 originTransform = originParagraph.getTransformTo(null) + ..invert(); final Offset originParagraphLocalPosition = MatrixUtils.transformPoint( originTransform, globalPosition, @@ -2653,8 +2663,8 @@ class _SelectableFragment existingSelectionEnd, ); } - final Matrix4 originTransform = originParagraph.getTransformTo(null); - originTransform.invert(); + final Matrix4 originTransform = originParagraph.getTransformTo(null) + ..invert(); final Offset originParagraphLocalPosition = MatrixUtils.transformPoint( originTransform, globalPosition, @@ -3116,8 +3126,7 @@ class _SelectableFragment RenderObject? current = paragraph; while (current != null) { if (current is RenderParagraph) { - final Matrix4 currentTransform = current.getTransformTo(null); - currentTransform.invert(); + final Matrix4 currentTransform = current.getTransformTo(null)..invert(); final Offset currentParagraphLocalPosition = MatrixUtils.transformPoint( currentTransform, globalPosition, @@ -3809,13 +3818,14 @@ class _SelectableFragment @override void debugFillProperties(DiagnosticPropertiesBuilder properties) { super.debugFillProperties(properties); - properties.add( - DiagnosticsProperty( - 'textInsideRange', - range.textInside(fullText), - ), - ); - properties.add(DiagnosticsProperty('range', range)); - properties.add(DiagnosticsProperty('fullText', fullText)); + properties + ..add( + DiagnosticsProperty( + 'textInsideRange', + range.textInside(fullText), + ), + ) + ..add(DiagnosticsProperty('range', range)) + ..add(DiagnosticsProperty('fullText', fullText)); } } diff --git a/lib/common/widgets/flutter/text/rich_text.dart b/lib/common/widgets/flutter/text/rich_text.dart index d9f90fe68..fdc5e7cfc 100644 --- a/lib/common/widgets/flutter/text/rich_text.dart +++ b/lib/common/widgets/flutter/text/rich_text.dart @@ -1,4 +1,8 @@ -import 'dart:ui' as ui; +// Copyright 2014 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'dart:ui' as ui show TextHeightBehavior; import 'package:PiliPlus/common/widgets/flutter/text/paragraph.dart'; import 'package:flutter/material.dart'; @@ -280,68 +284,69 @@ class RichText extends MultiChildRenderObjectWidget { @override void debugFillProperties(DiagnosticPropertiesBuilder properties) { super.debugFillProperties(properties); - properties.add( - EnumProperty( - 'textAlign', - textAlign, - defaultValue: TextAlign.start, - ), - ); - properties.add( - EnumProperty( - 'textDirection', - textDirection, - defaultValue: null, - ), - ); - properties.add( - FlagProperty( - 'softWrap', - value: softWrap, - ifTrue: 'wrapping at box width', - ifFalse: 'no wrapping except at line break characters', - showName: true, - ), - ); - properties.add( - EnumProperty( - 'overflow', - overflow, - defaultValue: TextOverflow.clip, - ), - ); - properties.add( - DiagnosticsProperty( - 'textScaler', - textScaler, - defaultValue: TextScaler.noScaling, - ), - ); - properties.add(IntProperty('maxLines', maxLines, ifNull: 'unlimited')); - properties.add( - EnumProperty( - 'textWidthBasis', - textWidthBasis, - defaultValue: TextWidthBasis.parent, - ), - ); - properties.add(StringProperty('text', text.toPlainText())); - properties.add( - DiagnosticsProperty('locale', locale, defaultValue: null), - ); - properties.add( - DiagnosticsProperty( - 'strutStyle', - strutStyle, - defaultValue: null, - ), - ); - properties.add( - DiagnosticsProperty( - 'textHeightBehavior', - textHeightBehavior, - defaultValue: null, - ), - ); + properties + ..add( + EnumProperty( + 'textAlign', + textAlign, + defaultValue: TextAlign.start, + ), + ) + ..add( + EnumProperty( + 'textDirection', + textDirection, + defaultValue: null, + ), + ) + ..add( + FlagProperty( + 'softWrap', + value: softWrap, + ifTrue: 'wrapping at box width', + ifFalse: 'no wrapping except at line break characters', + showName: true, + ), + ) + ..add( + EnumProperty( + 'overflow', + overflow, + defaultValue: TextOverflow.clip, + ), + ) + ..add( + DiagnosticsProperty( + 'textScaler', + textScaler, + defaultValue: TextScaler.noScaling, + ), + ) + ..add(IntProperty('maxLines', maxLines, ifNull: 'unlimited')) + ..add( + EnumProperty( + 'textWidthBasis', + textWidthBasis, + defaultValue: TextWidthBasis.parent, + ), + ) + ..add(StringProperty('text', text.toPlainText())) + ..add( + DiagnosticsProperty('locale', locale, defaultValue: null), + ) + ..add( + DiagnosticsProperty( + 'strutStyle', + strutStyle, + defaultValue: null, + ), + ) + ..add( + DiagnosticsProperty( + 'textHeightBehavior', + textHeightBehavior, + defaultValue: null, + ), + ); } } diff --git a/lib/common/widgets/flutter/text/text.dart b/lib/common/widgets/flutter/text/text.dart index 984e088c9..3579cdeb3 100644 --- a/lib/common/widgets/flutter/text/text.dart +++ b/lib/common/widgets/flutter/text/text.dart @@ -47,7 +47,11 @@ import 'package:flutter/rendering.dart' hide RenderParagraph; /// Container( /// width: 100, /// decoration: BoxDecoration(border: Border.all()), -/// child: Text(overflow: TextOverflow.ellipsis, 'Hello $_name, how are you?')) +/// child: const Text( +/// 'Hello, how are you?', +/// overflow: TextOverflow.ellipsis, +/// ), +/// ) /// ``` /// {@end-tool} /// @@ -60,10 +64,11 @@ import 'package:flutter/rendering.dart' hide RenderParagraph; /// ![If a second line overflows the Text widget displays a horizontal fade](https://flutter.github.io/assets-for-api-docs/assets/widgets/text_fade_max_lines.png) /// /// ```dart -/// Text( +/// const Text( +/// 'Hello, how are you?', /// overflow: TextOverflow.fade, /// maxLines: 1, -/// 'Hello $_name, how are you?') +/// ) /// ``` /// /// Here soft wrapping is enabled and the [Text] widget tries to wrap the words @@ -74,10 +79,11 @@ import 'package:flutter/rendering.dart' hide RenderParagraph; /// ![If a single line overflows the Text widget displays a horizontal fade](https://flutter.github.io/assets-for-api-docs/assets/widgets/text_fade_soft_wrap.png) /// /// ```dart -/// Text( +/// const Text( +/// 'Hello, how are you?', /// overflow: TextOverflow.fade, /// softWrap: false, -/// 'Hello $_name, how are you?') +/// ) /// ``` /// /// Here soft wrapping is disabled with `softWrap: false` and the [Text] widget @@ -410,6 +416,7 @@ class Text extends StatelessWidget { text: TextSpan( style: effectiveTextStyle, text: data, + locale: locale, children: textSpan != null ? [textSpan!] : null, ), primary: primary, @@ -442,6 +449,7 @@ class Text extends StatelessWidget { text: TextSpan( style: effectiveTextStyle, text: data, + locale: locale, children: textSpan != null ? [textSpan!] : null, ), onShowMore: onShowMore, @@ -1105,7 +1113,7 @@ class _SelectableTextContainerDelegate bool forwardSelection = currentSelectionEndIndex >= currentSelectionStartIndex; if (currentSelectionEndIndex == currentSelectionStartIndex) { - // Determining selection direction is innacurate if currentSelectionStartIndex == currentSelectionEndIndex. + // Determining selection direction is inaccurate if currentSelectionStartIndex == currentSelectionEndIndex. // Use the range from the selectable within the selection as the source of truth for selection direction. final SelectedContentRange rangeAtSelectableInSelection = selectables[currentSelectionStartIndex].getSelection()!; diff --git a/lib/common/widgets/flutter/text_field/cupertino/cupertino_adaptive_text_selection_toolbar.dart b/lib/common/widgets/flutter/text_field/cupertino/cupertino_adaptive_text_selection_toolbar.dart index 26c85f7f6..e8e988b51 100644 --- a/lib/common/widgets/flutter/text_field/cupertino/cupertino_adaptive_text_selection_toolbar.dart +++ b/lib/common/widgets/flutter/text_field/cupertino/cupertino_adaptive_text_selection_toolbar.dart @@ -209,7 +209,7 @@ class CupertinoAdaptiveTextSelectionToolbar extends StatelessWidget { @override Widget build(BuildContext context) { // If there aren't any buttons to build, build an empty toolbar. - if ((children?.isEmpty ?? false) || (buttonItems?.isEmpty ?? false)) { + if ((children ?? buttonItems)?.isEmpty ?? true) { return const SizedBox.shrink(); } diff --git a/lib/pages/article/view.dart b/lib/pages/article/view.dart index 461201332..94bbb2019 100644 --- a/lib/pages/article/view.dart +++ b/lib/pages/article/view.dart @@ -2,8 +2,8 @@ import 'dart:math'; import 'package:PiliPlus/common/widgets/badge.dart'; import 'package:PiliPlus/common/widgets/custom_icon.dart'; +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models/common/image_preview_type.dart'; import 'package:PiliPlus/models/common/image_type.dart'; diff --git a/lib/pages/article_list/view.dart b/lib/pages/article_list/view.dart index 709f32e0e..bf4b39138 100644 --- a/lib/pages/article_list/view.dart +++ b/lib/pages/article_list/view.dart @@ -1,6 +1,6 @@ +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/constants.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/image_type.dart'; diff --git a/lib/pages/audio/view.dart b/lib/pages/audio/view.dart index 6c5b78a5e..0c77450af 100644 --- a/lib/pages/audio/view.dart +++ b/lib/pages/audio/view.dart @@ -2,9 +2,9 @@ import 'dart:math' show min; import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/widgets/button/icon_button.dart'; +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/progress_bar/audio_video_progress_bar.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/grpc/bilibili/app/listener/v1.pb.dart'; import 'package:PiliPlus/models/common/image_preview_type.dart'; import 'package:PiliPlus/models/common/image_type.dart'; diff --git a/lib/pages/blacklist/view.dart b/lib/pages/blacklist/view.dart index 549e47d3b..6b03a900f 100644 --- a/lib/pages/blacklist/view.dart +++ b/lib/pages/blacklist/view.dart @@ -1,7 +1,7 @@ import 'package:PiliPlus/common/skeleton/msg_feed_top.dart'; +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models_new/blacklist/list.dart'; diff --git a/lib/pages/dynamics_detail/view.dart b/lib/pages/dynamics_detail/view.dart index 1acc7c4fb..1636e60d5 100644 --- a/lib/pages/dynamics_detail/view.dart +++ b/lib/pages/dynamics_detail/view.dart @@ -1,7 +1,7 @@ import 'dart:math'; import 'package:PiliPlus/common/widgets/custom_icon.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/http/constants.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/pages/common/dyn/common_dyn_page.dart'; diff --git a/lib/pages/dynamics_tab/view.dart b/lib/pages/dynamics_tab/view.dart index 1296804fd..e8efa6782 100644 --- a/lib/pages/dynamics_tab/view.dart +++ b/lib/pages/dynamics_tab/view.dart @@ -1,7 +1,7 @@ import 'dart:async'; +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/dynamic/dynamics_type.dart'; import 'package:PiliPlus/models/common/nav_bar_config.dart'; diff --git a/lib/pages/dynamics_topic/view.dart b/lib/pages/dynamics_topic/view.dart index 2b387ec02..a200b5ee4 100644 --- a/lib/pages/dynamics_topic/view.dart +++ b/lib/pages/dynamics_topic/view.dart @@ -1,10 +1,10 @@ import 'package:PiliPlus/common/widgets/custom_icon.dart'; import 'package:PiliPlus/common/widgets/custom_sliver_persistent_header_delegate.dart'; import 'package:PiliPlus/common/widgets/dynamic_sliver_appbar_medium.dart'; +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/pair.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models_new/dynamic/dyn_topic_feed/item.dart'; diff --git a/lib/pages/dynamics_topic_rcmd/view.dart b/lib/pages/dynamics_topic_rcmd/view.dart index b8df5357e..854a71a96 100644 --- a/lib/pages/dynamics_topic_rcmd/view.dart +++ b/lib/pages/dynamics_topic_rcmd/view.dart @@ -1,6 +1,6 @@ +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/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/view_sliver_safe_area.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/dynamic/dyn_topic_top/topic_item.dart'; diff --git a/lib/pages/fav/article/view.dart b/lib/pages/fav/article/view.dart index c7497d36d..c16ff80b6 100644 --- a/lib/pages/fav/article/view.dart +++ b/lib/pages/fav/article/view.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/common/widgets/dialog/dialog.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/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/fav/fav_article/item.dart'; import 'package:PiliPlus/pages/fav/article/controller.dart'; diff --git a/lib/pages/fav/cheese/view.dart b/lib/pages/fav/cheese/view.dart index 590a02304..f16dc1b7c 100644 --- a/lib/pages/fav/cheese/view.dart +++ b/lib/pages/fav/cheese/view.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/common/widgets/dialog/dialog.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/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/space/space_cheese/item.dart'; import 'package:PiliPlus/pages/fav/cheese/controller.dart'; diff --git a/lib/pages/fav/note/child_view.dart b/lib/pages/fav/note/child_view.dart index b333ffaf5..a56d2cdbd 100644 --- a/lib/pages/fav/note/child_view.dart +++ b/lib/pages/fav/note/child_view.dart @@ -1,7 +1,7 @@ import 'package:PiliPlus/common/widgets/button/icon_button.dart'; import 'package:PiliPlus/common/widgets/dialog/dialog.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/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/fav/fav_note/list.dart'; import 'package:PiliPlus/pages/fav/note/controller.dart'; diff --git a/lib/pages/fav/pgc/child_view.dart b/lib/pages/fav/pgc/child_view.dart index e25b38bf8..f62d82457 100644 --- a/lib/pages/fav/pgc/child_view.dart +++ b/lib/pages/fav/pgc/child_view.dart @@ -1,8 +1,8 @@ import 'package:PiliPlus/common/skeleton/fav_pgc_item.dart'; import 'package:PiliPlus/common/widgets/button/icon_button.dart'; import 'package:PiliPlus/common/widgets/dialog/dialog.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/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/fav/fav_pgc/list.dart'; import 'package:PiliPlus/pages/fav/pgc/controller.dart'; diff --git a/lib/pages/fav/topic/view.dart b/lib/pages/fav/topic/view.dart index 7d317de58..adeeb2973 100644 --- a/lib/pages/fav/topic/view.dart +++ b/lib/pages/fav/topic/view.dart @@ -1,7 +1,7 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/widgets/dialog/dialog.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/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/fav/fav_topic/topic_item.dart'; import 'package:PiliPlus/pages/fav/topic/controller.dart'; diff --git a/lib/pages/fav/video/view.dart b/lib/pages/fav/video/view.dart index 63d99767e..61e43113f 100644 --- a/lib/pages/fav/video/view.dart +++ b/lib/pages/fav/video/view.dart @@ -1,5 +1,5 @@ +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/fav/fav_folder/list.dart'; import 'package:PiliPlus/pages/fav/video/controller.dart'; diff --git a/lib/pages/fav_detail/view.dart b/lib/pages/fav_detail/view.dart index b18ea2705..c06d0a39e 100644 --- a/lib/pages/fav_detail/view.dart +++ b/lib/pages/fav_detail/view.dart @@ -1,8 +1,8 @@ import 'package:PiliPlus/common/widgets/button/icon_button.dart'; import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/fav.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/fav_order_type.dart'; diff --git a/lib/pages/follow/child/child_view.dart b/lib/pages/follow/child/child_view.dart index 7efce4b05..ff09c34eb 100644 --- a/lib/pages/follow/child/child_view.dart +++ b/lib/pages/follow/child/child_view.dart @@ -1,7 +1,7 @@ import 'package:PiliPlus/common/skeleton/msg_feed_top.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/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/follow_order_type.dart'; import 'package:PiliPlus/models_new/follow/list.dart'; diff --git a/lib/pages/follow_type/view.dart b/lib/pages/follow_type/view.dart index c73dedb0c..6508209e2 100644 --- a/lib/pages/follow_type/view.dart +++ b/lib/pages/follow_type/view.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/common/skeleton/msg_feed_top.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/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/view_sliver_safe_area.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/follow/list.dart'; diff --git a/lib/pages/history/view.dart b/lib/pages/history/view.dart index 4f0ff183b..3d4c6dd0f 100644 --- a/lib/pages/history/view.dart +++ b/lib/pages/history/view.dart @@ -1,7 +1,7 @@ import 'package:PiliPlus/common/widgets/appbar/appbar.dart'; +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/keep_alive_wrapper.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/history/list.dart'; diff --git a/lib/pages/hot/view.dart b/lib/pages/hot/view.dart index e39545c4f..40abdebcc 100644 --- a/lib/pages/hot/view.dart +++ b/lib/pages/hot/view.dart @@ -1,5 +1,5 @@ +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/video_card/video_card_h.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/http/loading_state.dart'; diff --git a/lib/pages/later/child_view.dart b/lib/pages/later/child_view.dart index 51dad6d9a..8776aa44e 100644 --- a/lib/pages/later/child_view.dart +++ b/lib/pages/later/child_view.dart @@ -1,5 +1,5 @@ +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/later_view_type.dart'; import 'package:PiliPlus/models/common/video/source_type.dart'; diff --git a/lib/pages/live/view.dart b/lib/pages/live/view.dart index 8c23957c0..f3f20a0f2 100644 --- a/lib/pages/live/view.dart +++ b/lib/pages/live/view.dart @@ -2,10 +2,10 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/skeleton/video_card_v.dart'; import 'package:PiliPlus/common/widgets/button/icon_button.dart'; import 'package:PiliPlus/common/widgets/button/more_btn.dart'; +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/pair.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/self_sized_horizontal_list.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/image_type.dart'; diff --git a/lib/pages/live_area_detail/child/view.dart b/lib/pages/live_area_detail/child/view.dart index 13895f533..e9f4fe95e 100644 --- a/lib/pages/live_area_detail/child/view.dart +++ b/lib/pages/live_area_detail/child/view.dart @@ -1,7 +1,7 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/skeleton/video_card_v.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/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/self_sized_horizontal_list.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/live/live_feed_index/card_data_list_item.dart'; diff --git a/lib/pages/live_follow/view.dart b/lib/pages/live_follow/view.dart index 9712877c5..07c2027c3 100644 --- a/lib/pages/live_follow/view.dart +++ b/lib/pages/live_follow/view.dart @@ -1,7 +1,7 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/skeleton/video_card_v.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/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/live/live_follow/item.dart'; import 'package:PiliPlus/pages/live_follow/controller.dart'; diff --git a/lib/pages/live_search/child/view.dart b/lib/pages/live_search/child/view.dart index e45aeec95..366b02c35 100644 --- a/lib/pages/live_search/child/view.dart +++ b/lib/pages/live_search/child/view.dart @@ -1,8 +1,8 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/skeleton/msg_feed_top.dart'; import 'package:PiliPlus/common/skeleton/video_card_v.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/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/live_search_type.dart'; import 'package:PiliPlus/pages/live_search/child/controller.dart'; diff --git a/lib/pages/login_devices/view.dart b/lib/pages/login_devices/view.dart index 4b7c4e489..7a883f37e 100644 --- a/lib/pages/login_devices/view.dart +++ b/lib/pages/login_devices/view.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/common/widgets/flutter/list_tile.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/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/view_sliver_safe_area.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/login_devices/device.dart'; diff --git a/lib/pages/main/view.dart b/lib/pages/main/view.dart index ca6b4d4ea..be550a308 100644 --- a/lib/pages/main/view.dart +++ b/lib/pages/main/view.dart @@ -1,8 +1,8 @@ import 'dart:io'; import 'package:PiliPlus/common/constants.dart'; +import 'package:PiliPlus/common/widgets/flutter/tabs.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; -import 'package:PiliPlus/common/widgets/tabs.dart'; import 'package:PiliPlus/models/common/dynamic/dynamic_badge_mode.dart'; import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models/common/nav_bar_config.dart'; diff --git a/lib/pages/main_reply/view.dart b/lib/pages/main_reply/view.dart index a7cf726ce..a4628c3f2 100644 --- a/lib/pages/main_reply/view.dart +++ b/lib/pages/main_reply/view.dart @@ -1,7 +1,7 @@ import 'package:PiliPlus/common/skeleton/video_reply.dart'; import 'package:PiliPlus/common/widgets/custom_sliver_persistent_header_delegate.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/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart' show ReplyInfo; diff --git a/lib/pages/match_info/view.dart b/lib/pages/match_info/view.dart index 96250d4b1..571c38f9a 100644 --- a/lib/pages/match_info/view.dart +++ b/lib/pages/match_info/view.dart @@ -1,5 +1,5 @@ +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart' show ReplyInfo; diff --git a/lib/pages/member_article/view.dart b/lib/pages/member_article/view.dart index b1dbef3f4..0dd29cf0b 100644 --- a/lib/pages/member_article/view.dart +++ b/lib/pages/member_article/view.dart @@ -1,5 +1,5 @@ +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/space/space_article/item.dart'; import 'package:PiliPlus/pages/member_article/controller.dart'; diff --git a/lib/pages/member_audio/view.dart b/lib/pages/member_audio/view.dart index fc08ad26b..b7202d40d 100644 --- a/lib/pages/member_audio/view.dart +++ b/lib/pages/member_audio/view.dart @@ -1,8 +1,8 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/widgets/custom_sliver_persistent_header_delegate.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/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/space/space_audio/item.dart'; import 'package:PiliPlus/pages/member_audio/controller.dart'; diff --git a/lib/pages/member_cheese/view.dart b/lib/pages/member_cheese/view.dart index f0653cbe7..8130eef79 100644 --- a/lib/pages/member_cheese/view.dart +++ b/lib/pages/member_cheese/view.dart @@ -1,5 +1,5 @@ +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/space/space_cheese/item.dart'; import 'package:PiliPlus/pages/member_cheese/controller.dart'; diff --git a/lib/pages/member_coin_arc/view.dart b/lib/pages/member_coin_arc/view.dart index 5d9bc5eb6..1f6e73526 100644 --- a/lib/pages/member_coin_arc/view.dart +++ b/lib/pages/member_coin_arc/view.dart @@ -1,7 +1,7 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/skeleton/video_card_v.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/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/member/coin_like_arc/item.dart'; import 'package:PiliPlus/pages/member_coin_arc/controller.dart'; diff --git a/lib/pages/member_comic/view.dart b/lib/pages/member_comic/view.dart index e37f7ab94..1ca64d3f8 100644 --- a/lib/pages/member_comic/view.dart +++ b/lib/pages/member_comic/view.dart @@ -1,5 +1,5 @@ +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/space/space_archive/item.dart'; import 'package:PiliPlus/pages/member_comic/controller.dart'; diff --git a/lib/pages/member_dynamics/view.dart b/lib/pages/member_dynamics/view.dart index 91aac6c31..8663bb7df 100644 --- a/lib/pages/member_dynamics/view.dart +++ b/lib/pages/member_dynamics/view.dart @@ -1,5 +1,5 @@ +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/pages/dynamics/widgets/dynamic_panel.dart'; diff --git a/lib/pages/member_favorite/view.dart b/lib/pages/member_favorite/view.dart index d561853d2..8cb8cbeb8 100644 --- a/lib/pages/member_favorite/view.dart +++ b/lib/pages/member_favorite/view.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/common/skeleton/video_card_h.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/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/space/space_fav/data.dart'; import 'package:PiliPlus/pages/member_favorite/controller.dart'; diff --git a/lib/pages/member_like_arc/view.dart b/lib/pages/member_like_arc/view.dart index 36412f2ef..411bc1e9e 100644 --- a/lib/pages/member_like_arc/view.dart +++ b/lib/pages/member_like_arc/view.dart @@ -1,7 +1,7 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/skeleton/video_card_v.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/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/member/coin_like_arc/item.dart'; import 'package:PiliPlus/pages/member_coin_arc/widgets/item.dart'; diff --git a/lib/pages/member_opus/view.dart b/lib/pages/member_opus/view.dart index 41d41a1b0..1ea63ddb1 100644 --- a/lib/pages/member_opus/view.dart +++ b/lib/pages/member_opus/view.dart @@ -1,7 +1,7 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/skeleton/space_opus.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/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/space/space_opus/item.dart'; import 'package:PiliPlus/pages/member_opus/controller.dart'; diff --git a/lib/pages/member_pgc/view.dart b/lib/pages/member_pgc/view.dart index 90eeb58b1..04bfefb7d 100644 --- a/lib/pages/member_pgc/view.dart +++ b/lib/pages/member_pgc/view.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/common/constants.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/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/space/space_archive/item.dart'; import 'package:PiliPlus/pages/member_pgc/controller.dart'; diff --git a/lib/pages/member_search/child/view.dart b/lib/pages/member_search/child/view.dart index 501c01eef..4c10336bb 100644 --- a/lib/pages/member_search/child/view.dart +++ b/lib/pages/member_search/child/view.dart @@ -1,5 +1,5 @@ +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/video_card/video_card_h.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/member/search_type.dart'; diff --git a/lib/pages/member_shop/view.dart b/lib/pages/member_shop/view.dart index 4fbf21462..cd8c9c584 100644 --- a/lib/pages/member_shop/view.dart +++ b/lib/pages/member_shop/view.dart @@ -1,7 +1,7 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/skeleton/space_opus.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/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/space/space_shop/item.dart'; import 'package:PiliPlus/pages/member_shop/controller.dart'; diff --git a/lib/pages/member_upower_rank/view.dart b/lib/pages/member_upower_rank/view.dart index b25b568b5..2fcedd694 100644 --- a/lib/pages/member_upower_rank/view.dart +++ b/lib/pages/member_upower_rank/view.dart @@ -1,8 +1,8 @@ import 'package:PiliPlus/common/widgets/flutter/list_tile.dart'; +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/keep_alive_wrapper.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/image_type.dart'; diff --git a/lib/pages/member_video/view.dart b/lib/pages/member_video/view.dart index 0018c02f8..e1a329776 100644 --- a/lib/pages/member_video/view.dart +++ b/lib/pages/member_video/view.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/common/widgets/custom_sliver_persistent_header_delegate.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/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/member/contribute_type.dart'; diff --git a/lib/pages/mine/view.dart b/lib/pages/mine/view.dart index 01cea562c..72a95e979 100644 --- a/lib/pages/mine/view.dart +++ b/lib/pages/mine/view.dart @@ -2,8 +2,8 @@ import 'dart:async'; import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/widgets/flutter/list_tile.dart'; +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models/common/nav_bar_config.dart'; diff --git a/lib/pages/msg_feed_top/at_me/view.dart b/lib/pages/msg_feed_top/at_me/view.dart index 5c8d8f607..470c7d1ea 100644 --- a/lib/pages/msg_feed_top/at_me/view.dart +++ b/lib/pages/msg_feed_top/at_me/view.dart @@ -1,9 +1,9 @@ import 'package:PiliPlus/common/skeleton/msg_feed_top.dart'; import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; import 'package:PiliPlus/common/widgets/flutter/list_tile.dart'; +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/grpc/bilibili/app/im/v1.pbenum.dart' show IMSettingType; import 'package:PiliPlus/http/loading_state.dart'; diff --git a/lib/pages/msg_feed_top/like_detail/view.dart b/lib/pages/msg_feed_top/like_detail/view.dart index 1210612f7..0bb14a864 100644 --- a/lib/pages/msg_feed_top/like_detail/view.dart +++ b/lib/pages/msg_feed_top/like_detail/view.dart @@ -1,7 +1,7 @@ import 'package:PiliPlus/common/skeleton/msg_feed_top.dart'; +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models_new/msg/msg_like_detail/card.dart'; diff --git a/lib/pages/msg_feed_top/like_me/view.dart b/lib/pages/msg_feed_top/like_me/view.dart index 04687b826..85b9947de 100644 --- a/lib/pages/msg_feed_top/like_me/view.dart +++ b/lib/pages/msg_feed_top/like_me/view.dart @@ -1,10 +1,10 @@ import 'package:PiliPlus/common/skeleton/msg_feed_top.dart'; import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; import 'package:PiliPlus/common/widgets/flutter/list_tile.dart'; +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/pair.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/grpc/bilibili/app/im/v1.pbenum.dart' show IMSettingType; import 'package:PiliPlus/http/loading_state.dart'; diff --git a/lib/pages/msg_feed_top/reply_me/view.dart b/lib/pages/msg_feed_top/reply_me/view.dart index 14404253c..d1953f5a5 100644 --- a/lib/pages/msg_feed_top/reply_me/view.dart +++ b/lib/pages/msg_feed_top/reply_me/view.dart @@ -1,9 +1,9 @@ import 'package:PiliPlus/common/skeleton/msg_feed_top.dart'; import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; import 'package:PiliPlus/common/widgets/flutter/list_tile.dart'; +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/grpc/bilibili/app/im/v1.pbenum.dart' show IMSettingType; import 'package:PiliPlus/http/loading_state.dart'; diff --git a/lib/pages/msg_feed_top/sys_msg/view.dart b/lib/pages/msg_feed_top/sys_msg/view.dart index 54362aa6a..46e69c314 100644 --- a/lib/pages/msg_feed_top/sys_msg/view.dart +++ b/lib/pages/msg_feed_top/sys_msg/view.dart @@ -1,8 +1,8 @@ import 'package:PiliPlus/common/skeleton/msg_feed_sys_msg_.dart'; import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; import 'package:PiliPlus/common/widgets/flutter/list_tile.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/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/msg/msg_sys/data.dart'; import 'package:PiliPlus/pages/msg_feed_top/sys_msg/controller.dart'; diff --git a/lib/pages/music/video/view.dart b/lib/pages/music/video/view.dart index 833d3e7e4..3817657f9 100644 --- a/lib/pages/music/video/view.dart +++ b/lib/pages/music/video/view.dart @@ -1,6 +1,6 @@ +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models_new/music/bgm_recommend_list.dart'; diff --git a/lib/pages/music/view.dart b/lib/pages/music/view.dart index 7f6d75cb1..d2d29f5e9 100644 --- a/lib/pages/music/view.dart +++ b/lib/pages/music/view.dart @@ -3,9 +3,9 @@ import 'dart:math'; import 'package:PiliPlus/common/widgets/badge.dart'; import 'package:PiliPlus/common/widgets/custom_icon.dart'; +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/marquee.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/music.dart'; import 'package:PiliPlus/models/common/badge_type.dart'; diff --git a/lib/pages/pgc/view.dart b/lib/pages/pgc/view.dart index 0aa321afb..736f0e374 100644 --- a/lib/pages/pgc/view.dart +++ b/lib/pages/pgc/view.dart @@ -2,9 +2,9 @@ import 'dart:math'; import 'package:PiliPlus/common/constants.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/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/http/loading_state.dart'; diff --git a/lib/pages/pgc_review/child/view.dart b/lib/pages/pgc_review/child/view.dart index dbc4e4ee3..1ebbaf36e 100644 --- a/lib/pages/pgc_review/child/view.dart +++ b/lib/pages/pgc_review/child/view.dart @@ -2,9 +2,9 @@ import 'package:PiliPlus/common/skeleton/video_reply.dart'; import 'package:PiliPlus/common/widgets/custom_icon.dart'; import 'package:PiliPlus/common/widgets/custom_sliver_persistent_header_delegate.dart'; import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models/common/pgc_review_type.dart'; diff --git a/lib/pages/popular_precious/view.dart b/lib/pages/popular_precious/view.dart index f0069b865..2427d000c 100644 --- a/lib/pages/popular_precious/view.dart +++ b/lib/pages/popular_precious/view.dart @@ -1,5 +1,5 @@ +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/video_card/video_card_h.dart'; import 'package:PiliPlus/common/widgets/view_sliver_safe_area.dart'; import 'package:PiliPlus/http/loading_state.dart'; diff --git a/lib/pages/popular_series/view.dart b/lib/pages/popular_series/view.dart index 4545cc488..faaf81658 100644 --- a/lib/pages/popular_series/view.dart +++ b/lib/pages/popular_series/view.dart @@ -1,7 +1,7 @@ import 'dart:math'; +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/video_card/video_card_h.dart'; import 'package:PiliPlus/common/widgets/view_sliver_safe_area.dart'; import 'package:PiliPlus/http/loading_state.dart'; diff --git a/lib/pages/rank/zone/view.dart b/lib/pages/rank/zone/view.dart index 724e57937..e85114142 100644 --- a/lib/pages/rank/zone/view.dart +++ b/lib/pages/rank/zone/view.dart @@ -1,5 +1,5 @@ +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/video_card/video_card_h.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/model_hot_video_item.dart'; diff --git a/lib/pages/rcmd/view.dart b/lib/pages/rcmd/view.dart index 9ced5c1a9..8147bee81 100644 --- a/lib/pages/rcmd/view.dart +++ b/lib/pages/rcmd/view.dart @@ -1,7 +1,7 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/skeleton/video_card_v.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/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/video_card/video_card_v.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/common/common_page.dart'; diff --git a/lib/pages/search_panel/view.dart b/lib/pages/search_panel/view.dart index e4eafe667..8bae50693 100644 --- a/lib/pages/search_panel/view.dart +++ b/lib/pages/search_panel/view.dart @@ -1,5 +1,5 @@ +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/search/search_type.dart'; import 'package:PiliPlus/models/search/result.dart'; diff --git a/lib/pages/search_trending/view.dart b/lib/pages/search_trending/view.dart index 9c5516bdb..d3c31dc83 100644 --- a/lib/pages/search_trending/view.dart +++ b/lib/pages/search_trending/view.dart @@ -1,9 +1,9 @@ import 'dart:math'; import 'package:PiliPlus/common/widgets/flutter/list_tile.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/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/search/search_trending/list.dart'; import 'package:PiliPlus/pages/search_trending/controller.dart'; diff --git a/lib/pages/setting/models/extra_settings.dart b/lib/pages/setting/models/extra_settings.dart index 406674f05..b7a30b121 100644 --- a/lib/pages/setting/models/extra_settings.dart +++ b/lib/pages/setting/models/extra_settings.dart @@ -2,10 +2,10 @@ import 'dart:io'; import 'dart:math' show pi, max; import 'package:PiliPlus/common/widgets/custom_icon.dart'; +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/custom_grid_view.dart' show CustomGridView, ImageModel; import 'package:PiliPlus/common/widgets/pendant_avatar.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/grpc/reply.dart'; import 'package:PiliPlus/http/fav.dart'; import 'package:PiliPlus/models/common/audio_normalization.dart'; diff --git a/lib/pages/subscription/view.dart b/lib/pages/subscription/view.dart index a410f8258..6c61b882e 100644 --- a/lib/pages/subscription/view.dart +++ b/lib/pages/subscription/view.dart @@ -1,5 +1,5 @@ +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/view_sliver_safe_area.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/sub/sub/list.dart'; diff --git a/lib/pages/subscription_detail/view.dart b/lib/pages/subscription_detail/view.dart index 3eaf6317e..658ca090d 100644 --- a/lib/pages/subscription_detail/view.dart +++ b/lib/pages/subscription_detail/view.dart @@ -1,6 +1,6 @@ +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/sub/sub/list.dart'; import 'package:PiliPlus/models_new/sub/sub_detail/media.dart'; diff --git a/lib/pages/video/medialist/view.dart b/lib/pages/video/medialist/view.dart index 8adce4d29..f92cb7a5e 100644 --- a/lib/pages/video/medialist/view.dart +++ b/lib/pages/video/medialist/view.dart @@ -1,9 +1,9 @@ import 'package:PiliPlus/common/widgets/badge.dart'; import 'package:PiliPlus/common/widgets/button/icon_button.dart'; import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/stat/stat.dart'; import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models/common/stat_type.dart'; diff --git a/lib/pages/video/member/view.dart b/lib/pages/video/member/view.dart index 3f0bad578..2f3b21782 100644 --- a/lib/pages/video/member/view.dart +++ b/lib/pages/video/member/view.dart @@ -1,10 +1,10 @@ import 'package:PiliPlus/common/skeleton/video_card_h.dart'; import 'package:PiliPlus/common/widgets/button/icon_button.dart'; import 'package:PiliPlus/common/widgets/custom_sliver_persistent_header_delegate.dart'; +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.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/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/image_preview_type.dart'; import 'package:PiliPlus/models/common/image_type.dart'; diff --git a/lib/pages/video/note/view.dart b/lib/pages/video/note/view.dart index 0bd808126..d4acc799f 100644 --- a/lib/pages/video/note/view.dart +++ b/lib/pages/video/note/view.dart @@ -1,7 +1,7 @@ import 'package:PiliPlus/common/skeleton/video_reply.dart'; +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models_new/video/video_note_list/list.dart'; diff --git a/lib/pages/video/reply/view.dart b/lib/pages/video/reply/view.dart index 05158fddc..d9c4b37c7 100644 --- a/lib/pages/video/reply/view.dart +++ b/lib/pages/video/reply/view.dart @@ -1,7 +1,7 @@ import 'package:PiliPlus/common/skeleton/video_reply.dart'; import 'package:PiliPlus/common/widgets/custom_sliver_persistent_header_delegate.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/refresh_indicator.dart'; import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart' show ReplyInfo; import 'package:PiliPlus/http/loading_state.dart'; diff --git a/lib/pages/video/reply_reply/view.dart b/lib/pages/video/reply_reply/view.dart index 7c2b54cfe..6ca666104 100644 --- a/lib/pages/video/reply_reply/view.dart +++ b/lib/pages/video/reply_reply/view.dart @@ -1,7 +1,7 @@ import 'package:PiliPlus/common/skeleton/video_reply.dart'; import 'package:PiliPlus/common/widgets/custom_sliver_persistent_header_delegate.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/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart' show ReplyInfo, Mode; diff --git a/lib/pages/video/reply_search_item/child/view.dart b/lib/pages/video/reply_search_item/child/view.dart index b7ba20288..2c831977c 100644 --- a/lib/pages/video/reply_search_item/child/view.dart +++ b/lib/pages/video/reply_search_item/child/view.dart @@ -1,5 +1,5 @@ +import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart' show SearchItem; import 'package:PiliPlus/http/loading_state.dart'; diff --git a/lib/pages/whisper/view.dart b/lib/pages/whisper/view.dart index 5b6ff3ce5..44758b19b 100644 --- a/lib/pages/whisper/view.dart +++ b/lib/pages/whisper/view.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/common/skeleton/whisper_item.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/refresh_indicator.dart'; import 'package:PiliPlus/grpc/bilibili/app/im/v1.pb.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/whisper/controller.dart'; diff --git a/lib/pages/whisper_secondary/view.dart b/lib/pages/whisper_secondary/view.dart index c8397ddb6..2a132fd03 100644 --- a/lib/pages/whisper_secondary/view.dart +++ b/lib/pages/whisper_secondary/view.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/common/skeleton/whisper_item.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/refresh_indicator.dart'; import 'package:PiliPlus/grpc/bilibili/app/im/v1.pb.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/whisper/widgets/item.dart';