diff --git a/lib/common/skeleton/fav_pgc_item.dart b/lib/common/skeleton/fav_pgc_item.dart index 2704b3ee0..e139d70c4 100644 --- a/lib/common/skeleton/fav_pgc_item.dart +++ b/lib/common/skeleton/fav_pgc_item.dart @@ -1,7 +1,6 @@ import 'package:PiliPlus/common/skeleton/skeleton.dart'; import 'package:PiliPlus/common/style.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; class FavPgcItemSkeleton extends StatelessWidget { const FavPgcItemSkeleton({super.key}); diff --git a/lib/common/skeleton/space_opus.dart b/lib/common/skeleton/space_opus.dart index 2d34fea8e..e62e15c42 100644 --- a/lib/common/skeleton/space_opus.dart +++ b/lib/common/skeleton/space_opus.dart @@ -1,7 +1,6 @@ import 'package:PiliPlus/common/skeleton/skeleton.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/utils/utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; class SpaceOpusSkeleton extends StatelessWidget { const SpaceOpusSkeleton({super.key}); diff --git a/lib/common/widgets/flutter/layout_builder.dart b/lib/common/widgets/flutter/layout_builder.dart deleted file mode 100644 index 9a58f3b4f..000000000 --- a/lib/common/widgets/flutter/layout_builder.dart +++ /dev/null @@ -1,528 +0,0 @@ -// 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: prefer_initializing_formals - -import 'package:flutter/foundation.dart'; -import 'package:flutter/rendering.dart'; -import 'package:flutter/widgets.dart' hide LayoutBuilder; - -/// An abstract superclass for widgets that defer their building until layout. -/// -/// Similar to the [Builder] widget except that the implementation calls the [builder] -/// function at layout time and provides the [LayoutInfoType] that is required to -/// configure the child widget subtree. -/// -/// This is useful when the child widget tree relies on information that are only -/// available during layout, and doesn't depend on the child's intrinsic size. -/// -/// The [LayoutInfoType] should typically be immutable. The equality of the -/// [LayoutInfoType] type is used by the implementation to avoid unnecessary -/// rebuilds: if the new [LayoutInfoType] computed during layout is the same as -/// (defined by `LayoutInfoType.==`) the previous [LayoutInfoType], the -/// implementation will try to avoid calling the [builder] again unless -/// [updateShouldRebuild] returns true. The corresponding [RenderObject] produced -/// by this widget retains the most up-to-date [LayoutInfoType] for this purpose, -/// which may keep a [LayoutInfoType] object in memory until the widget is removed -/// from the tree. -/// -/// Subclasses must return a [RenderObject] that mixes in [RenderAbstractLayoutBuilderMixin]. -abstract class AbstractLayoutBuilder - extends RenderObjectWidget { - /// Creates a widget that defers its building until layout. - const AbstractLayoutBuilder({super.key}); - - /// Called at layout time to construct the widget tree. - /// - /// The builder must not return null. - Widget Function(BuildContext context, LayoutInfoType layoutInfo) get builder; - - @override - RenderObjectElement createElement() => - _LayoutBuilderElement(this); - - /// Whether [builder] needs to be called again even if the layout constraints - /// are the same. - /// - /// When this widget's configuration is updated, the [builder] callback most - /// likely needs to be called to build this widget's child. However, - /// subclasses may provide ways in which the widget can be updated without - /// needing to rebuild the child. Such subclasses can use this method to tell - /// the framework when the child widget should be rebuilt. - /// - /// When this method is called by the framework, the newly configured widget - /// is asked if it requires a rebuild, and it is passed the old widget as a - /// parameter. - /// - /// See also: - /// - /// * [State.setState] and [State.didUpdateWidget], which talk about widget - /// configuration changes and how they're triggered. - /// * [Element.update], the method that actually updates the widget's - /// configuration. - @protected - bool updateShouldRebuild( - covariant AbstractLayoutBuilder oldWidget, - ) => true; - - @override - RenderAbstractLayoutBuilderMixin - createRenderObject( - BuildContext context, - ); - - // updateRenderObject is redundant with the logic in the LayoutBuilderElement below. -} - -/// A specialized [AbstractLayoutBuilder] whose widget subtree depends on the -/// incoming [ConstraintType] that will be imposed on the widget. -/// -/// {@template flutter.widgets.ConstrainedLayoutBuilder} -/// The [builder] function is called in the following situations: -/// -/// * The first time the widget is laid out. -/// * When the parent widget passes different layout constraints. -/// * When the parent widget updates this widget and [updateShouldRebuild] returns `true`. -/// * When the dependencies that the [builder] function subscribes to change. -/// -/// The [builder] function is _not_ called during layout if the parent passes -/// the same constraints repeatedly. -/// -/// In the event that an ancestor skips the layout of this subtree so the -/// constraints become outdated, the `builder` rebuilds with the last known -/// constraints. -/// {@endtemplate} -abstract class ConstrainedLayoutBuilder - extends AbstractLayoutBuilder { - /// Creates a widget that defers its building until layout. - const ConstrainedLayoutBuilder({super.key, required this.builder}); - - @override - final Widget Function(BuildContext context, ConstraintType constraints) - builder; -} - -class _LayoutBuilderElement extends RenderObjectElement { - _LayoutBuilderElement(AbstractLayoutBuilder super.widget); - - @override - RenderAbstractLayoutBuilderMixin - get renderObject => - super.renderObject - as RenderAbstractLayoutBuilderMixin; - - Element? _child; - - // @override - // BuildScope get buildScope => _buildScope; - - // late final BuildScope _buildScope = BuildScope( - // scheduleRebuild: _scheduleRebuild, - // ); - - // To schedule a rebuild, markNeedsLayout needs to be called on this Element's - // render object (as the rebuilding is done in its performLayout call). However, - // the render tree should typically be kept clean during the postFrameCallbacks - // and the idle phase, so the layout data can be safely read. - // bool _deferredCallbackScheduled = false; - // void _scheduleRebuild() { - // if (_deferredCallbackScheduled) { - // return; - // } - - // final bool deferMarkNeedsLayout = - // switch (SchedulerBinding.instance.schedulerPhase) { - // SchedulerPhase.idle || SchedulerPhase.postFrameCallbacks => true, - // SchedulerPhase.transientCallbacks || - // SchedulerPhase.midFrameMicrotasks || - // SchedulerPhase.persistentCallbacks => false, - // }; - // if (!deferMarkNeedsLayout) { - // renderObject.scheduleLayoutCallback(); - // return; - // } - // _deferredCallbackScheduled = true; - // SchedulerBinding.instance.scheduleFrameCallback(_frameCallback); - // } - - // void _frameCallback(Duration timestamp) { - // _deferredCallbackScheduled = false; - // // This method is only called when the render tree is stable, if the Element - // // is deactivated it will never be reincorporated back to the tree. - // if (mounted) { - // renderObject.scheduleLayoutCallback(); - // } - // } - - @override - void visitChildren(ElementVisitor visitor) { - if (_child != null) { - visitor(_child!); - } - } - - @override - void forgetChild(Element child) { - assert(child == _child); - _child = null; - super.forgetChild(child); - } - - @override - void mount(Element? parent, Object? newSlot) { - super.mount(parent, newSlot); // Creates the renderObject. - renderObject._updateCallback(_rebuildWithConstraints); - } - - @override - void update(AbstractLayoutBuilder newWidget) { - assert(widget != newWidget); - final oldWidget = widget as AbstractLayoutBuilder; - super.update(newWidget); - assert(widget == newWidget); - - renderObject._updateCallback(_rebuildWithConstraints); - if (newWidget.updateShouldRebuild(oldWidget)) { - _needsBuild = true; - renderObject.scheduleLayoutCallback(); - } - } - - @override - void markNeedsBuild() { - // Calling super.markNeedsBuild is not needed. This Element does not need - // to performRebuild since this call already does what performRebuild does, - // So the element is clean as soon as this method returns and does not have - // to be added to the dirty list or marked as dirty. - renderObject.scheduleLayoutCallback(); - _needsBuild = true; - } - - @override - void performRebuild() { - // This gets called if markNeedsBuild() is called on us. - // That might happen if, e.g., our builder uses Inherited widgets. - - // Force the callback to be called, even if the layout constraints are the - // same. This is because that callback may depend on the updated widget - // configuration, or an inherited widget. - renderObject.scheduleLayoutCallback(); - _needsBuild = true; - super - .performRebuild(); // Calls widget.updateRenderObject (a no-op in this case). - } - - @override - void unmount() { - renderObject._callback = null; - super.unmount(); - } - - // The LayoutInfoType that was used to invoke the layout callback with last time, - // during layout. The `_previousLayoutInfo` value is compared to the new one - // to determine whether [LayoutBuilderBase.builder] needs to be called. - LayoutInfoType? _previousLayoutInfo; - bool _needsBuild = true; - - void _rebuildWithConstraints(Constraints _) { - final LayoutInfoType layoutInfo = renderObject.layoutInfo; - @pragma('vm:notify-debugger-on-exception') - void updateChildCallback() { - Widget built; - try { - assert(layoutInfo == renderObject.layoutInfo); - built = (widget as AbstractLayoutBuilder).builder( - this, - layoutInfo, - ); - debugWidgetBuilderValue(widget, built); - } catch (e, stack) { - built = ErrorWidget.builder( - _reportException( - ErrorDescription('building $widget'), - e, - stack, - informationCollector: () => [ - if (kDebugMode) DiagnosticsDebugCreator(DebugCreator(this)), - ], - ), - ); - } - try { - _child = updateChild(_child, built, null); - assert(_child != null); - } catch (e, stack) { - built = ErrorWidget.builder( - _reportException( - ErrorDescription('building $widget'), - e, - stack, - informationCollector: () => [ - if (kDebugMode) DiagnosticsDebugCreator(DebugCreator(this)), - ], - ), - ); - _child = updateChild(null, built, slot); - } finally { - _needsBuild = false; - _previousLayoutInfo = layoutInfo; - } - } - - final VoidCallback? callback = - _needsBuild || (layoutInfo != _previousLayoutInfo) - ? updateChildCallback - : null; - owner!.buildScope(this, callback); - } - - @override - void insertRenderObjectChild(RenderObject child, Object? slot) { - final RenderObjectWithChildMixin renderObject = - this.renderObject; - assert(slot == null); - assert(renderObject.debugValidateChild(child)); - renderObject.child = child; - assert(renderObject == this.renderObject); - } - - @override - void moveRenderObjectChild( - RenderObject child, - Object? oldSlot, - Object? newSlot, - ) { - assert(false); - } - - @override - void removeRenderObjectChild(RenderObject child, Object? slot) { - final RenderAbstractLayoutBuilderMixin - renderObject = this.renderObject; - assert(renderObject.child == child); - renderObject.child = null; - assert(renderObject == this.renderObject); - } -} - -/// Generic mixin for [RenderObject]s created by an [AbstractLayoutBuilder] with -/// the the same `LayoutInfoType`. -/// -/// Provides a [layoutCallback] implementation which, if needed, invokes -/// [AbstractLayoutBuilder]'s builder callback. -/// -/// Implementers can override the [layoutInfo] implementation with a value -/// that is safe to access in [layoutCallback], which is called in -/// [performLayout]. The default [layoutInfo] returns the incoming -/// [Constraints]. -/// -/// This mixin replaces [RenderConstrainedLayoutBuilder]. -mixin RenderAbstractLayoutBuilderMixin< - LayoutInfoType, - ChildType extends RenderObject -> - on - RenderObjectWithChildMixin, - RenderObjectWithLayoutCallbackMixin { - LayoutCallback? _callback; - - /// Change the layout callback. - void _updateCallback(LayoutCallback value) { - if (value == _callback) { - return; - } - _callback = value; - scheduleLayoutCallback(); - } - - /// Invokes the builder callback supplied via [AbstractLayoutBuilder] and - /// rebuilds the [AbstractLayoutBuilder]'s widget tree, if needed. - /// - /// No further work will be done if [layoutInfo] has not changed since the last - /// time this method was called, and [AbstractLayoutBuilder.updateShouldRebuild] - /// returned `false` when the widget was rebuilt. - /// - /// This method should typically be called as soon as possible in the class's - /// [performLayout] implementation, before any layout work is done. - @visibleForOverriding - @override - void layoutCallback() => _callback!(constraints); - - /// The information to invoke the [AbstractLayoutBuilder.builder] callback with. - /// - /// This is typically the information that are only made available in - /// [performLayout], which is inaccessible for regular [Builder] widget, - /// such as the incoming [Constraints], which are the default value. - @protected - LayoutInfoType get layoutInfo => constraints as LayoutInfoType; -} - -/// Generic mixin for [RenderObject]s created by an [AbstractLayoutBuilder] with -/// the the same `LayoutInfoType`. -/// -/// Use [RenderAbstractLayoutBuilderMixin] instead, which replaces this mixin. -typedef RenderConstrainedLayoutBuilder< - LayoutInfoType, - ChildType extends RenderObject -> = RenderAbstractLayoutBuilderMixin; - -/// Builds a widget tree that can depend on the parent widget's size. -/// -/// Similar to the [Builder] widget except that the framework calls the [builder] -/// function at layout time and provides the parent widget's constraints. This -/// is useful when the parent constrains the child's size and doesn't depend on -/// the child's intrinsic size. The [LayoutBuilder]'s final size will match its -/// child's size. -/// -/// {@macro flutter.widgets.ConstrainedLayoutBuilder} -/// -/// {@youtube 560 315 https://www.youtube.com/watch?v=IYDVcriKjsw} -/// -/// If the child should be smaller than the parent, consider wrapping the child -/// in an [Align] widget. If the child might want to be bigger, consider -/// wrapping it in a [SingleChildScrollView] or [OverflowBox]. -/// -/// {@tool dartpad} -/// This example uses a [LayoutBuilder] to build a different widget depending on the available width. Resize the -/// DartPad window to see [LayoutBuilder] in action! -/// -/// ** See code in examples/api/lib/widgets/layout_builder/layout_builder.0.dart ** -/// {@end-tool} -/// -/// See also: -/// -/// * [SliverLayoutBuilder], the sliver counterpart of this widget. -/// * [Builder], which calls a `builder` function at build time. -/// * [StatefulBuilder], which passes its `builder` function a `setState` callback. -/// * [CustomSingleChildLayout], which positions its child during layout. -/// * The [catalog of layout widgets](https://flutter.dev/widgets/layout/). -class LayoutBuilder extends ConstrainedLayoutBuilder { - /// Creates a widget that defers its building until layout. - const LayoutBuilder({super.key, required super.builder}); - - @override - RenderAbstractLayoutBuilderMixin - createRenderObject( - BuildContext context, - ) => _RenderLayoutBuilder(); -} - -class _RenderLayoutBuilder extends RenderBox - with - RenderObjectWithChildMixin, - RenderObjectWithLayoutCallbackMixin, - RenderAbstractLayoutBuilderMixin { - @override - double computeMinIntrinsicWidth(double height) { - assert(_debugThrowIfNotCheckingIntrinsics()); - return 0.0; - } - - @override - double computeMaxIntrinsicWidth(double height) { - assert(_debugThrowIfNotCheckingIntrinsics()); - return 0.0; - } - - @override - double computeMinIntrinsicHeight(double width) { - assert(_debugThrowIfNotCheckingIntrinsics()); - return 0.0; - } - - @override - double computeMaxIntrinsicHeight(double width) { - assert(_debugThrowIfNotCheckingIntrinsics()); - return 0.0; - } - - @override - Size computeDryLayout(BoxConstraints constraints) { - assert( - debugCannotComputeDryLayout( - reason: - 'Calculating the dry layout would require running the layout callback ' - 'speculatively, which might mutate the live render object tree.', - ), - ); - return Size.zero; - } - - @override - double? computeDryBaseline( - BoxConstraints constraints, - TextBaseline baseline, - ) { - assert( - debugCannotComputeDryLayout( - reason: - 'Calculating the dry baseline would require running the layout callback ' - 'speculatively, which might mutate the live render object tree.', - ), - ); - return null; - } - - @override - void performLayout() { - final BoxConstraints constraints = this.constraints; - runLayoutCallback(); - if (child != null) { - child!.layout(constraints, parentUsesSize: true); - size = constraints.constrain(child!.size); - } else { - size = constraints.biggest; - } - } - - @override - double? computeDistanceToActualBaseline(TextBaseline baseline) { - return child?.getDistanceToActualBaseline(baseline) ?? - super.computeDistanceToActualBaseline(baseline); - } - - @override - bool hitTestChildren(BoxHitTestResult result, {required Offset position}) { - return child?.hitTest(result, position: position) ?? false; - } - - @override - void paint(PaintingContext context, Offset offset) { - if (child != null) { - context.paintChild(child!, offset); - } - } - - bool _debugThrowIfNotCheckingIntrinsics() { - assert(() { - if (!RenderObject.debugCheckingIntrinsics) { - throw FlutterError( - 'LayoutBuilder does not support returning intrinsic dimensions.\n' - 'Calculating the intrinsic dimensions would require running the layout ' - 'callback speculatively, which might mutate the live render object tree.', - ); - } - return true; - }()); - - return true; - } -} - -FlutterErrorDetails _reportException( - DiagnosticsNode context, - Object exception, - StackTrace stack, { - InformationCollector? informationCollector, -}) { - final details = FlutterErrorDetails( - exception: exception, - stack: stack, - library: 'widgets library', - context: context, - informationCollector: informationCollector, - ); - FlutterError.reportError(details); - return details; -} diff --git a/lib/common/widgets/flutter/sliver_layout_builder.dart b/lib/common/widgets/flutter/sliver_layout_builder.dart deleted file mode 100644 index 8d6724a64..000000000 --- a/lib/common/widgets/flutter/sliver_layout_builder.dart +++ /dev/null @@ -1,85 +0,0 @@ -// 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: prefer_initializing_formals - -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; -import 'package:flutter/rendering.dart'; -import 'package:flutter/widgets.dart' - hide - ConstrainedLayoutBuilder, - LayoutBuilder, - RenderConstrainedLayoutBuilder; - -/// Builds a sliver widget tree that can depend on its own [SliverConstraints]. -/// -/// Similar to the [LayoutBuilder] widget except its builder should return a sliver -/// widget, and [SliverLayoutBuilder] is itself a sliver. The framework calls the -/// [builder] function at layout time and provides the current [SliverConstraints]. -/// The [SliverLayoutBuilder]'s final [SliverGeometry] will match the [SliverGeometry] -/// of its child. -/// -/// {@macro flutter.widgets.ConstrainedLayoutBuilder} -/// -/// See also: -/// -/// * [LayoutBuilder], the non-sliver version of this widget. -class SliverLayoutBuilder extends ConstrainedLayoutBuilder { - /// Creates a sliver widget that defers its building until layout. - const SliverLayoutBuilder({super.key, required super.builder}); - - @override - RenderConstrainedLayoutBuilder - createRenderObject( - BuildContext context, - ) => _RenderSliverLayoutBuilder(); -} - -class _RenderSliverLayoutBuilder extends RenderSliver - with - RenderObjectWithChildMixin, - RenderObjectWithLayoutCallbackMixin, - RenderConstrainedLayoutBuilder { - @override - double childMainAxisPosition(RenderObject child) { - assert(child == this.child); - return 0; - } - - @override - void performLayout() { - runLayoutCallback(); - child?.layout(constraints, parentUsesSize: true); - geometry = child?.geometry ?? SliverGeometry.zero; - } - - @override - void applyPaintTransform(RenderObject child, Matrix4 transform) { - assert(child == this.child); - // child's offset is always (0, 0), transform.translate(0, 0) does not mutate the transform. - } - - @override - void paint(PaintingContext context, Offset offset) { - // This renderObject does not introduce additional offset to child's position. - if (child?.geometry?.visible ?? false) { - context.paintChild(child!, offset); - } - } - - @override - bool hitTestChildren( - SliverHitTestResult result, { - required double mainAxisPosition, - required double crossAxisPosition, - }) { - return child != null && - child!.geometry!.hitTestExtent > 0 && - child!.hitTest( - result, - mainAxisPosition: mainAxisPosition, - crossAxisPosition: crossAxisPosition, - ); - } -} diff --git a/lib/common/widgets/image_viewer/gallery_viewer.dart b/lib/common/widgets/image_viewer/gallery_viewer.dart index 0d9adbbcc..9afa5424d 100644 --- a/lib/common/widgets/image_viewer/gallery_viewer.dart +++ b/lib/common/widgets/image_viewer/gallery_viewer.dart @@ -18,7 +18,6 @@ import 'dart:io' show File, Platform; import 'package:PiliPlus/common/widgets/colored_box_transition.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/flutter/page/page_view.dart'; import 'package:PiliPlus/common/widgets/gesture/image_horizontal_drag_gesture_recognizer.dart'; import 'package:PiliPlus/common/widgets/image_viewer/image.dart'; @@ -40,7 +39,7 @@ import 'package:PiliPlus/utils/utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/gestures.dart'; -import 'package:flutter/material.dart' hide Image, PageView, LayoutBuilder; +import 'package:flutter/material.dart' hide Image, PageView; import 'package:flutter/services.dart' show HapticFeedback; import 'package:get/get.dart'; import 'package:media_kit/media_kit.dart'; diff --git a/lib/common/widgets/video_card/video_card_h.dart b/lib/common/widgets/video_card/video_card_h.dart index 5cd1f01ce..a47c147eb 100644 --- a/lib/common/widgets/video_card/video_card_h.dart +++ b/lib/common/widgets/video_card/video_card_h.dart @@ -1,6 +1,5 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.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/progress_bar/video_progress_indicator.dart'; @@ -13,7 +12,7 @@ import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; // 视频卡片 - 水平布局 class VideoCardH extends StatelessWidget { diff --git a/lib/common/widgets/video_card/video_card_v.dart b/lib/common/widgets/video_card/video_card_v.dart index ee12a9687..1aee0e2ee 100644 --- a/lib/common/widgets/video_card/video_card_v.dart +++ b/lib/common/widgets/video_card/video_card_v.dart @@ -1,6 +1,5 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.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/stat/stat.dart'; @@ -17,7 +16,7 @@ import 'package:PiliPlus/utils/extension/dimension_ext.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:intl/intl.dart'; diff --git a/lib/pages/article/widgets/opus_content.dart b/lib/pages/article/widgets/opus_content.dart index e867ff1b6..9f7c2b722 100644 --- a/lib/pages/article/widgets/opus_content.dart +++ b/lib/pages/article/widgets/opus_content.dart @@ -1,7 +1,6 @@ import 'dart:math' as math; import 'package:PiliPlus/common/assets.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/gesture/tap_gesture_recognizer.dart'; import 'package:PiliPlus/common/widgets/image/cached_network_svg_image.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; @@ -22,7 +21,7 @@ import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/foundation.dart' show kDebugMode; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; import 'package:get/get_core/src/get_main.dart'; import 'package:get/get_navigation/src/extension_navigation.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; diff --git a/lib/pages/article_list/widgets/item.dart b/lib/pages/article_list/widgets/item.dart index c6222f10a..40018e4a4 100644 --- a/lib/pages/article_list/widgets/item.dart +++ b/lib/pages/article_list/widgets/item.dart @@ -1,10 +1,9 @@ import 'package:PiliPlus/common/style.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/stat/stat.dart'; import 'package:PiliPlus/models/common/stat_type.dart'; import 'package:PiliPlus/models_new/article/article_list/article.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; import 'package:get/get.dart'; class ArticleListItem extends StatelessWidget { diff --git a/lib/pages/common/slide/common_slide_page.dart b/lib/pages/common/slide/common_slide_page.dart index 58ba68b7c..501bc1b7d 100644 --- a/lib/pages/common/slide/common_slide_page.dart +++ b/lib/pages/common/slide/common_slide_page.dart @@ -1,10 +1,9 @@ import 'dart:math' show max; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/gesture/horizontal_drag_gesture_recognizer.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:flutter/gestures.dart' show HorizontalDragGestureRecognizer; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; import 'package:get/get.dart'; abstract class CommonSlidePage extends StatefulWidget { diff --git a/lib/pages/download/detail/widgets/item.dart b/lib/pages/download/detail/widgets/item.dart index 8ad3b5121..ac1c9e813 100644 --- a/lib/pages/download/detail/widgets/item.dart +++ b/lib/pages/download/detail/widgets/item.dart @@ -3,7 +3,6 @@ import 'dart:io'; import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/progress_bar/video_progress_indicator.dart'; import 'package:PiliPlus/common/widgets/select_mask.dart'; @@ -21,7 +20,7 @@ import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/path_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:path/path.dart' as path; diff --git a/lib/pages/download/view.dart b/lib/pages/download/view.dart index 599833904..eba4574a5 100644 --- a/lib/pages/download/view.dart +++ b/lib/pages/download/view.dart @@ -4,7 +4,6 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/appbar/appbar.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/flutter/pop_scope.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; @@ -22,7 +21,7 @@ import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:collection/collection.dart'; import 'package:flutter/material.dart' - hide SliverGridDelegateWithMaxCrossAxisExtent, LayoutBuilder; + hide SliverGridDelegateWithMaxCrossAxisExtent; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/dynamics/widgets/live_panel_sub.dart b/lib/pages/dynamics/widgets/live_panel_sub.dart index 26f44f0b2..2ac63e493 100644 --- a/lib/pages/dynamics/widgets/live_panel_sub.dart +++ b/lib/pages/dynamics/widgets/live_panel_sub.dart @@ -1,12 +1,11 @@ import 'package:PiliPlus/common/assets.dart'; import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/utils/extension/num_ext.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; Widget livePanelSub( BuildContext context, { diff --git a/lib/pages/dynamics/widgets/live_rcmd_panel.dart b/lib/pages/dynamics/widgets/live_rcmd_panel.dart index 9c2fd0545..d8f8ef07f 100644 --- a/lib/pages/dynamics/widgets/live_rcmd_panel.dart +++ b/lib/pages/dynamics/widgets/live_rcmd_panel.dart @@ -1,12 +1,11 @@ import 'package:PiliPlus/common/assets.dart'; import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/utils/extension/num_ext.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; Widget liveRcmdPanel( BuildContext context, { diff --git a/lib/pages/dynamics/widgets/video_panel.dart b/lib/pages/dynamics/widgets/video_panel.dart index 001e8998f..1f49cb6fd 100644 --- a/lib/pages/dynamics/widgets/video_panel.dart +++ b/lib/pages/dynamics/widgets/video_panel.dart @@ -2,13 +2,12 @@ import 'package:PiliPlus/common/assets.dart'; import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/num_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; Widget videoSeasonWidget( BuildContext context, { diff --git a/lib/pages/dynamics/widgets/vote.dart b/lib/pages/dynamics/widgets/vote.dart index 48a3bf88f..4ef0daced 100644 --- a/lib/pages/dynamics/widgets/vote.dart +++ b/lib/pages/dynamics/widgets/vote.dart @@ -3,7 +3,6 @@ import 'dart:async'; import 'package:PiliPlus/common/widgets/avatars.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; import 'package:PiliPlus/common/widgets/dialog/report.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/http/dynamics.dart'; import 'package:PiliPlus/http/loading_state.dart'; @@ -18,7 +17,7 @@ import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:collection/collection.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; import 'package:get/get.dart'; class VotePanel extends StatefulWidget { diff --git a/lib/pages/fav/article/widget/item.dart b/lib/pages/fav/article/widget/item.dart index abf6ba187..3adf99110 100644 --- a/lib/pages/fav/article/widget/item.dart +++ b/lib/pages/fav/article/widget/item.dart @@ -1,11 +1,10 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/button/icon_button.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/stat/stat.dart'; import 'package:PiliPlus/models/common/stat_type.dart'; import 'package:PiliPlus/models_new/fav/fav_article/item.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; import 'package:get/get.dart'; class FavArticleItem extends StatelessWidget { diff --git a/lib/pages/fav/note/widget/item.dart b/lib/pages/fav/note/widget/item.dart index baab037d7..f2b711f37 100644 --- a/lib/pages/fav/note/widget/item.dart +++ b/lib/pages/fav/note/widget/item.dart @@ -1,12 +1,11 @@ import 'package:PiliPlus/common/style.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/select_mask.dart'; import 'package:PiliPlus/models_new/fav/fav_note/list.dart'; import 'package:PiliPlus/pages/fav/note/controller.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; class FavNoteItem extends StatelessWidget { const FavNoteItem({ diff --git a/lib/pages/fav/pgc/widget/item.dart b/lib/pages/fav/pgc/widget/item.dart index 2667d0bc7..4876a1262 100644 --- a/lib/pages/fav/pgc/widget/item.dart +++ b/lib/pages/fav/pgc/widget/item.dart @@ -1,7 +1,6 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; import 'package:PiliPlus/common/widgets/button/icon_button.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/select_mask.dart'; import 'package:PiliPlus/models/common/badge_type.dart'; @@ -9,7 +8,7 @@ import 'package:PiliPlus/models_new/fav/fav_pgc/list.dart'; import 'package:PiliPlus/pages/common/multi_select/base.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; class FavPgcItem extends StatelessWidget { const FavPgcItem({ diff --git a/lib/pages/fav/video/widgets/item.dart b/lib/pages/fav/video/widgets/item.dart index a6ff4d73c..4f1a5bbe0 100644 --- a/lib/pages/fav/video/widgets/item.dart +++ b/lib/pages/fav/video/widgets/item.dart @@ -1,10 +1,9 @@ import 'package:PiliPlus/common/style.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models_new/fav/fav_folder/list.dart'; import 'package:PiliPlus/utils/bili_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; class FavVideoItem extends StatelessWidget { final String heroTag; diff --git a/lib/pages/fav_detail/widget/fav_video_card.dart b/lib/pages/fav_detail/widget/fav_video_card.dart index b1ba30eef..bbe84b018 100644 --- a/lib/pages/fav_detail/widget/fav_video_card.dart +++ b/lib/pages/fav_detail/widget/fav_video_card.dart @@ -1,7 +1,6 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; import 'package:PiliPlus/common/widgets/button/icon_button.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.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/select_mask.dart'; @@ -17,7 +16,7 @@ import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; import 'package:get/get.dart'; // 收藏视频卡片 - 水平布局 diff --git a/lib/pages/history/widgets/item.dart b/lib/pages/history/widgets/item.dart index 752afc3d5..2c06d7f39 100644 --- a/lib/pages/history/widgets/item.dart +++ b/lib/pages/history/widgets/item.dart @@ -1,6 +1,5 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/progress_bar/video_progress_indicator.dart'; import 'package:PiliPlus/common/widgets/select_mask.dart'; @@ -15,7 +14,7 @@ import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; diff --git a/lib/pages/later/widgets/video_card_h_later.dart b/lib/pages/later/widgets/video_card_h_later.dart index 2127ea589..3ceb19cc7 100644 --- a/lib/pages/later/widgets/video_card_h_later.dart +++ b/lib/pages/later/widgets/video_card_h_later.dart @@ -1,7 +1,6 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; import 'package:PiliPlus/common/widgets/button/icon_button.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/progress_bar/video_progress_indicator.dart'; import 'package:PiliPlus/common/widgets/select_mask.dart'; @@ -14,7 +13,7 @@ import 'package:PiliPlus/pages/later/controller.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; // 视频卡片 - 水平布局 diff --git a/lib/pages/live/widgets/live_item_app.dart b/lib/pages/live/widgets/live_item_app.dart index 794b562ab..9c1225af0 100644 --- a/lib/pages/live/widgets/live_item_app.dart +++ b/lib/pages/live/widgets/live_item_app.dart @@ -1,11 +1,10 @@ import 'package:PiliPlus/common/style.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models_new/live/live_feed_index/card_data_list_item.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; // 视频卡片 - 垂直布局 class LiveCardVApp extends StatelessWidget { diff --git a/lib/pages/live_dm_block/view.dart b/lib/pages/live_dm_block/view.dart index e79b27cff..f0dfbbc4b 100644 --- a/lib/pages/live_dm_block/view.dart +++ b/lib/pages/live_dm_block/view.dart @@ -1,5 +1,4 @@ import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/keep_alive_wrapper.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; @@ -11,7 +10,7 @@ import 'package:PiliPlus/pages/search/widgets/search_text.dart'; import 'package:PiliPlus/utils/extension/size_ext.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; import 'package:flutter/services.dart' show FilteringTextInputFormatter; import 'package:get/get.dart'; diff --git a/lib/pages/live_follow/widgets/live_item_follow.dart b/lib/pages/live_follow/widgets/live_item_follow.dart index 6b20ab64f..90463c8cf 100644 --- a/lib/pages/live_follow/widgets/live_item_follow.dart +++ b/lib/pages/live_follow/widgets/live_item_follow.dart @@ -1,11 +1,10 @@ import 'package:PiliPlus/common/style.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models_new/live/live_follow/item.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; // 视频卡片 - 垂直布局 class LiveCardVFollow extends StatelessWidget { diff --git a/lib/pages/live_search/widgets/live_search_room.dart b/lib/pages/live_search/widgets/live_search_room.dart index 49993d439..314bb2953 100644 --- a/lib/pages/live_search/widgets/live_search_room.dart +++ b/lib/pages/live_search/widgets/live_search_room.dart @@ -1,11 +1,10 @@ import 'package:PiliPlus/common/style.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models_new/live/live_search/room_item.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; // 视频卡片 - 垂直布局 class LiveCardVSearch extends StatelessWidget { diff --git a/lib/pages/member_article/widget/item.dart b/lib/pages/member_article/widget/item.dart index 19bda1ef5..6f8d4f481 100644 --- a/lib/pages/member_article/widget/item.dart +++ b/lib/pages/member_article/widget/item.dart @@ -1,5 +1,4 @@ import 'package:PiliPlus/common/style.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.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/stat/stat.dart'; @@ -7,7 +6,7 @@ import 'package:PiliPlus/models/common/stat_type.dart'; import 'package:PiliPlus/models_new/space/space_article/item.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; class MemberArticleItem extends StatelessWidget { const MemberArticleItem({super.key, required this.item}); diff --git a/lib/pages/member_audio/widgets/item.dart b/lib/pages/member_audio/widgets/item.dart index bc694086d..68c23ab1c 100644 --- a/lib/pages/member_audio/widgets/item.dart +++ b/lib/pages/member_audio/widgets/item.dart @@ -1,5 +1,4 @@ import 'package:PiliPlus/common/style.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.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/stat/stat.dart'; @@ -10,7 +9,7 @@ import 'package:PiliPlus/models_new/space/space_audio/item.dart'; import 'package:PiliPlus/pages/audio/view.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; class MemberAudioItem extends StatelessWidget { const MemberAudioItem({super.key, required this.item}); diff --git a/lib/pages/member_cheese/widgets/item.dart b/lib/pages/member_cheese/widgets/item.dart index ff1a72086..14a5222b7 100644 --- a/lib/pages/member_cheese/widgets/item.dart +++ b/lib/pages/member_cheese/widgets/item.dart @@ -1,14 +1,13 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; import 'package:PiliPlus/common/widgets/button/icon_button.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models_new/space/space_cheese/item.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; class MemberCheeseItem extends StatelessWidget { const MemberCheeseItem({ diff --git a/lib/pages/member_coin_arc/widgets/item.dart b/lib/pages/member_coin_arc/widgets/item.dart index 5b0625d3f..3ade8508c 100644 --- a/lib/pages/member_coin_arc/widgets/item.dart +++ b/lib/pages/member_coin_arc/widgets/item.dart @@ -1,6 +1,5 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.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/stat/stat.dart'; @@ -13,7 +12,7 @@ import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; class MemberCoinLikeItem extends StatelessWidget { final CoinLikeArcItem item; diff --git a/lib/pages/member_comic/widgets/item.dart b/lib/pages/member_comic/widgets/item.dart index c1e456440..95fe55801 100644 --- a/lib/pages/member_comic/widgets/item.dart +++ b/lib/pages/member_comic/widgets/item.dart @@ -1,10 +1,9 @@ import 'package:PiliPlus/common/style.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models_new/space/space_archive/item.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; import 'package:get/get.dart'; class MemberComicItem extends StatelessWidget { diff --git a/lib/pages/member_favorite/widget/item.dart b/lib/pages/member_favorite/widget/item.dart index 1c01e1454..1793b5ff4 100644 --- a/lib/pages/member_favorite/widget/item.dart +++ b/lib/pages/member_favorite/widget/item.dart @@ -1,6 +1,5 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models_new/space/space_fav/list.dart'; @@ -9,7 +8,7 @@ import 'package:PiliPlus/utils/bili_utils.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; import 'package:get/get.dart'; class MemberFavItem extends StatelessWidget { diff --git a/lib/pages/member_home/widgets/video_card_v_member_home.dart b/lib/pages/member_home/widgets/video_card_v_member_home.dart index 7b3edc6a2..1fbf026cd 100644 --- a/lib/pages/member_home/widgets/video_card_v_member_home.dart +++ b/lib/pages/member_home/widgets/video_card_v_member_home.dart @@ -1,6 +1,5 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/http/search.dart'; @@ -12,7 +11,7 @@ import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; // 视频卡片 - 垂直布局 class VideoCardVMemberHome extends StatelessWidget { diff --git a/lib/pages/member_opus/widgets/space_opus_item.dart b/lib/pages/member_opus/widgets/space_opus_item.dart index 471014a42..84f7e4fde 100644 --- a/lib/pages/member_opus/widgets/space_opus_item.dart +++ b/lib/pages/member_opus/widgets/space_opus_item.dart @@ -1,11 +1,10 @@ -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/stat/stat.dart'; import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models/common/stat_type.dart'; import 'package:PiliPlus/models_new/space/space_opus/item.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; class SpaceOpusItem extends StatelessWidget { const SpaceOpusItem({ diff --git a/lib/pages/member_pgc/widgets/pgc_card_v_member_pgc.dart b/lib/pages/member_pgc/widgets/pgc_card_v_member_pgc.dart index cd6c38249..4ff94c056 100644 --- a/lib/pages/member_pgc/widgets/pgc_card_v_member_pgc.dart +++ b/lib/pages/member_pgc/widgets/pgc_card_v_member_pgc.dart @@ -1,11 +1,10 @@ import 'package:PiliPlus/common/style.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models_new/space/space_archive/item.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; // 视频卡片 - 垂直布局 class PgcCardVMemberPgc extends StatelessWidget { diff --git a/lib/pages/member_search/child/widgets/search_archive_grpc.dart b/lib/pages/member_search/child/widgets/search_archive_grpc.dart index 13ab69ce3..32fadefcb 100644 --- a/lib/pages/member_search/child/widgets/search_archive_grpc.dart +++ b/lib/pages/member_search/child/widgets/search_archive_grpc.dart @@ -1,7 +1,6 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; import 'package:PiliPlus/common/widgets/custom_icon.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.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/stat/stat.dart'; @@ -18,7 +17,7 @@ import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:fixnum/fixnum.dart' show Int64; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; class SearchArchiveGrpc extends StatelessWidget { diff --git a/lib/pages/member_season_series/widget/season_series_card.dart b/lib/pages/member_season_series/widget/season_series_card.dart index a6400026e..ea7ecef45 100644 --- a/lib/pages/member_season_series/widget/season_series_card.dart +++ b/lib/pages/member_season_series/widget/season_series_card.dart @@ -1,12 +1,11 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models_new/space/space_season_series/season.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; class SeasonSeriesCard extends StatelessWidget { const SeasonSeriesCard({ diff --git a/lib/pages/member_shop/widgets/item.dart b/lib/pages/member_shop/widgets/item.dart index b386653e2..5c1beda8c 100644 --- a/lib/pages/member_shop/widgets/item.dart +++ b/lib/pages/member_shop/widgets/item.dart @@ -1,10 +1,9 @@ import 'package:PiliPlus/common/widgets/badge.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models_new/space/space_shop/item.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; import 'package:get/get.dart'; class MemberShopItem extends StatelessWidget { diff --git a/lib/pages/member_video/widgets/video_card_h_member_video.dart b/lib/pages/member_video/widgets/video_card_h_member_video.dart index 27bb07164..e1159bc4a 100644 --- a/lib/pages/member_video/widgets/video_card_h_member_video.dart +++ b/lib/pages/member_video/widgets/video_card_h_member_video.dart @@ -1,6 +1,5 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.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/progress_bar/video_progress_indicator.dart'; @@ -14,7 +13,7 @@ import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/extension/dimension_ext.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; // 视频卡片 - 水平布局 class VideoCardHMemberVideo extends StatelessWidget { diff --git a/lib/pages/music/widget/music_video_card_h.dart b/lib/pages/music/widget/music_video_card_h.dart index b9cc60891..0ac1ff9a1 100644 --- a/lib/pages/music/widget/music_video_card_h.dart +++ b/lib/pages/music/widget/music_video_card_h.dart @@ -1,6 +1,5 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.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/marquee.dart'; @@ -13,7 +12,7 @@ import 'package:PiliPlus/models_new/video/video_detail/dimension.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; class MusicVideoCardH extends StatelessWidget { final BgmRecommend videoItem; diff --git a/lib/pages/pgc/widgets/pgc_card_v.dart b/lib/pages/pgc/widgets/pgc_card_v.dart index 20774983d..1732d3213 100644 --- a/lib/pages/pgc/widgets/pgc_card_v.dart +++ b/lib/pages/pgc/widgets/pgc_card_v.dart @@ -1,13 +1,12 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models_new/fav/fav_pgc/list.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; // 视频卡片 - 垂直布局 class PgcCardV extends StatelessWidget { diff --git a/lib/pages/pgc/widgets/pgc_card_v_timeline.dart b/lib/pages/pgc/widgets/pgc_card_v_timeline.dart index d7b8410e5..b690992de 100644 --- a/lib/pages/pgc/widgets/pgc_card_v_timeline.dart +++ b/lib/pages/pgc/widgets/pgc_card_v_timeline.dart @@ -1,13 +1,12 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models_new/pgc/pgc_timeline/episode.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; // 视频卡片 - 垂直布局 class PgcCardVTimeline extends StatelessWidget { diff --git a/lib/pages/pgc_index/widgets/pgc_card_v_pgc_index.dart b/lib/pages/pgc_index/widgets/pgc_card_v_pgc_index.dart index 33ba16322..92d68566e 100644 --- a/lib/pages/pgc_index/widgets/pgc_card_v_pgc_index.dart +++ b/lib/pages/pgc_index/widgets/pgc_card_v_pgc_index.dart @@ -1,13 +1,12 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models_new/pgc/pgc_index_result/list.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; // 视频卡片 - 垂直布局 class PgcCardVPgcIndex extends StatelessWidget { diff --git a/lib/pages/rank/zone/widget/pgc_rank_item.dart b/lib/pages/rank/zone/widget/pgc_rank_item.dart index d821e5065..392f69054 100644 --- a/lib/pages/rank/zone/widget/pgc_rank_item.dart +++ b/lib/pages/rank/zone/widget/pgc_rank_item.dart @@ -1,5 +1,4 @@ import 'package:PiliPlus/common/style.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.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/stat/stat.dart'; @@ -7,7 +6,7 @@ import 'package:PiliPlus/models/common/stat_type.dart'; import 'package:PiliPlus/models_new/pgc/pgc_rank/pgc_rank_item_model.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; class PgcRankItem extends StatelessWidget { const PgcRankItem({super.key, required this.item}); diff --git a/lib/pages/search/view.dart b/lib/pages/search/view.dart index 7f7500dee..6afb0bfa4 100644 --- a/lib/pages/search/view.dart +++ b/lib/pages/search/view.dart @@ -14,7 +14,7 @@ import 'package:PiliPlus/utils/extension/size_ext.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; import 'package:get/get.dart'; class SearchPage extends StatefulWidget { diff --git a/lib/pages/search_panel/all/widgets/pgc_card_v_search.dart b/lib/pages/search_panel/all/widgets/pgc_card_v_search.dart index 6ef7c9292..064585147 100644 --- a/lib/pages/search_panel/all/widgets/pgc_card_v_search.dart +++ b/lib/pages/search_panel/all/widgets/pgc_card_v_search.dart @@ -1,12 +1,11 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/search/result.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; // 视频卡片 - 垂直布局 class PgcCardVSearch extends StatelessWidget { diff --git a/lib/pages/search_panel/article/widgets/item.dart b/lib/pages/search_panel/article/widgets/item.dart index 0d42347b8..85dda2ecc 100644 --- a/lib/pages/search_panel/article/widgets/item.dart +++ b/lib/pages/search_panel/article/widgets/item.dart @@ -1,11 +1,10 @@ import 'package:PiliPlus/common/style.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/search/result.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; import 'package:get/get.dart'; class SearchArticleItem extends StatelessWidget { diff --git a/lib/pages/search_panel/live/widgets/item.dart b/lib/pages/search_panel/live/widgets/item.dart index b52ac14e4..1e2794e1f 100644 --- a/lib/pages/search_panel/live/widgets/item.dart +++ b/lib/pages/search_panel/live/widgets/item.dart @@ -1,12 +1,11 @@ import 'package:PiliPlus/common/style.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/search/result.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; class LiveItem extends StatelessWidget { final SearchLiveItemModel liveItem; diff --git a/lib/pages/subscription/widgets/item.dart b/lib/pages/subscription/widgets/item.dart index 66bee5feb..da47c042f 100644 --- a/lib/pages/subscription/widgets/item.dart +++ b/lib/pages/subscription/widgets/item.dart @@ -1,13 +1,12 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models_new/sub/sub/list.dart'; import 'package:PiliPlus/pages/subscription_detail/view.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/subscription_detail/widget/sub_video_card.dart b/lib/pages/subscription_detail/widget/sub_video_card.dart index 99826c9b9..152e1cf0f 100644 --- a/lib/pages/subscription_detail/widget/sub_video_card.dart +++ b/lib/pages/subscription_detail/widget/sub_video_card.dart @@ -1,6 +1,5 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.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/stat/stat.dart'; @@ -12,7 +11,7 @@ import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; // 收藏视频卡片 - 水平布局 class SubVideoCardH extends StatelessWidget { diff --git a/lib/pages/video/reply_search_item/child/widgets/item.dart b/lib/pages/video/reply_search_item/child/widgets/item.dart index ae6ac2fdd..8fa693f98 100644 --- a/lib/pages/video/reply_search_item/child/widgets/item.dart +++ b/lib/pages/video/reply_search_item/child/widgets/item.dart @@ -1,6 +1,5 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart' @@ -9,7 +8,7 @@ import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models/common/reply/reply_search_type.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; import 'package:get/get.dart'; class ReplySearchItem extends StatelessWidget { diff --git a/lib/pages/whisper_detail/widget/chat_item.dart b/lib/pages/whisper_detail/widget/chat_item.dart index d87b0922c..c31d7215c 100644 --- a/lib/pages/whisper_detail/widget/chat_item.dart +++ b/lib/pages/whisper_detail/widget/chat_item.dart @@ -4,7 +4,6 @@ import 'dart:math' as math; import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; -import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/gesture/tap_gesture_recognizer.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/image_viewer/hero.dart'; @@ -23,7 +22,7 @@ import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; -import 'package:flutter/material.dart' hide LayoutBuilder; +import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; diff --git a/lib/scripts/bottom_sheet_ios_piliplus.patch b/lib/scripts/bottom_sheet_ios_piliplus.patch index c720f5977..40aca1a04 100644 --- a/lib/scripts/bottom_sheet_ios_piliplus.patch +++ b/lib/scripts/bottom_sheet_ios_piliplus.patch @@ -3,13 +3,13 @@ index 58ba68b7c..a6bb398ac 100644 --- a/lib/pages/common/slide/common_slide_page.dart +++ b/lib/pages/common/slide/common_slide_page.dart @@ -3,7 +3,8 @@ import 'dart:math' show max; - import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; + import 'package:PiliPlus/common/widgets/gesture/horizontal_drag_gesture_recognizer.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; -import 'package:flutter/gestures.dart' show HorizontalDragGestureRecognizer; +import 'package:flutter/gestures.dart' + show HorizontalDragGestureRecognizer, DeviceGestureSettings; - import 'package:flutter/material.dart' hide LayoutBuilder; + import 'package:flutter/material.dart' ; import 'package:get/get.dart'; @@ -142,6 +143,10 @@ class SlideDragGestureRecognizer extends HorizontalDragGestureRecognizer { diff --git a/lib/scripts/layout_builder.patch b/lib/scripts/layout_builder.patch new file mode 100644 index 000000000..f0168aaf4 --- /dev/null +++ b/lib/scripts/layout_builder.patch @@ -0,0 +1,79 @@ +diff --git a/packages/flutter/lib/src/widgets/layout_builder.dart b/packages/flutter/lib/src/widgets/layout_builder.dart +index 9dbefb7132d..68af3a95739 100644 +--- a/packages/flutter/lib/src/widgets/layout_builder.dart ++++ b/packages/flutter/lib/src/widgets/layout_builder.dart +@@ -115,43 +115,43 @@ class _LayoutBuilderElement extends RenderObjectElement { + + Element? _child; + +- @override +- BuildScope get buildScope => _buildScope; ++ // @override ++ // BuildScope get buildScope => _buildScope; + +- late final BuildScope _buildScope = BuildScope(scheduleRebuild: _scheduleRebuild); ++ // late final BuildScope _buildScope = BuildScope(scheduleRebuild: _scheduleRebuild); + + // To schedule a rebuild, markNeedsLayout needs to be called on this Element's + // render object (as the rebuilding is done in its performLayout call). However, + // the render tree should typically be kept clean during the postFrameCallbacks + // and the idle phase, so the layout data can be safely read. +- bool _deferredCallbackScheduled = false; +- void _scheduleRebuild() { +- if (_deferredCallbackScheduled) { +- return; +- } +- +- final bool deferMarkNeedsLayout = switch (SchedulerBinding.instance.schedulerPhase) { +- SchedulerPhase.idle || SchedulerPhase.postFrameCallbacks => true, +- SchedulerPhase.transientCallbacks || +- SchedulerPhase.midFrameMicrotasks || +- SchedulerPhase.persistentCallbacks => false, +- }; +- if (!deferMarkNeedsLayout) { +- renderObject.scheduleLayoutCallback(); +- return; +- } +- _deferredCallbackScheduled = true; +- SchedulerBinding.instance.scheduleFrameCallback(_frameCallback); +- } +- +- void _frameCallback(Duration timestamp) { +- _deferredCallbackScheduled = false; +- // This method is only called when the render tree is stable, if the Element +- // is deactivated it will never be reincorporated back to the tree. +- if (mounted) { +- renderObject.scheduleLayoutCallback(); +- } +- } ++ // bool _deferredCallbackScheduled = false; ++ // void _scheduleRebuild() { ++ // if (_deferredCallbackScheduled) { ++ // return; ++ // } ++ ++ // final bool deferMarkNeedsLayout = switch (SchedulerBinding.instance.schedulerPhase) { ++ // SchedulerPhase.idle || SchedulerPhase.postFrameCallbacks => true, ++ // SchedulerPhase.transientCallbacks || ++ // SchedulerPhase.midFrameMicrotasks || ++ // SchedulerPhase.persistentCallbacks => false, ++ // }; ++ // if (!deferMarkNeedsLayout) { ++ // renderObject.scheduleLayoutCallback(); ++ // return; ++ // } ++ // _deferredCallbackScheduled = true; ++ // SchedulerBinding.instance.scheduleFrameCallback(_frameCallback); ++ // } ++ ++ // void _frameCallback(Duration timestamp) { ++ // _deferredCallbackScheduled = false; ++ // // This method is only called when the render tree is stable, if the Element ++ // // is deactivated it will never be reincorporated back to the tree. ++ // if (mounted) { ++ // renderObject.scheduleLayoutCallback(); ++ // } ++ // } + + @override + void visitChildren(ElementVisitor visitor) { diff --git a/lib/scripts/patch.ps1 b/lib/scripts/patch.ps1 index 1a35c17ea..489bb3f75 100644 --- a/lib/scripts/patch.ps1 +++ b/lib/scripts/patch.ps1 @@ -24,6 +24,8 @@ $NavigatorPatch = "lib/scripts/navigator.patch" # https://github.com/bggRGjQaUbCoE/PiliPlus/issues/2107 $ImageAnimPatch = "lib/scripts/image_anim.patch" +$LayoutBuilderPatch = "lib/scripts/layout_builder.patch" + # TODO: remove # https://github.com/flutter/flutter/issues/90223 $ModalBarrierPatch = "lib/scripts/modal_barrier.patch" @@ -44,7 +46,7 @@ Set-Location $env:FLUTTER_ROOT $picks = @() $reverts = @() $patches = @($ModalBarrierPatch, $TextSelectionPatch, $MouseCursorPatch, - $ImageAnimPatch) + $ImageAnimPatch, $LayoutBuilderPatch) switch ($platform.ToLower()) { "android" { diff --git a/lib/utils/waterfall.dart b/lib/utils/waterfall.dart index 55fde4762..c19fc159b 100644 --- a/lib/utils/waterfall.dart +++ b/lib/utils/waterfall.dart @@ -1,9 +1,8 @@ import 'package:PiliPlus/common/skeleton/dynamic_card.dart'; import 'package:PiliPlus/common/style.dart'; -import 'package:PiliPlus/common/widgets/flutter/sliver_layout_builder.dart'; import 'package:PiliPlus/utils/global_data.dart'; import 'package:PiliPlus/utils/grid.dart'; -import 'package:flutter/material.dart' hide SliverLayoutBuilder; +import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart' show SliverConstraints; import 'package:waterfall_flow/waterfall_flow.dart' show SliverWaterfallFlowDelegate;