layoutbuilder patch

Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-05-19 21:23:26 +08:00
parent 0cac46ee26
commit 89522e2059
57 changed files with 136 additions and 719 deletions

View File

@@ -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 {

View 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) {

View File

@@ -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" {