mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-06-02 09:08:17 +08:00
@@ -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 {
|
||||
|
||||
79
lib/scripts/layout_builder.patch
Normal file
79
lib/scripts/layout_builder.patch
Normal file
@@ -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<LayoutInfoType> 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) {
|
||||
@@ -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" {
|
||||
|
||||
Reference in New Issue
Block a user