OpenFlutter / flutter_screenutil

Flutter screen adaptation, font adaptation, get screen information
https://pub.dartlang.org/packages/flutter_screenutil
Apache License 2.0
3.88k stars 494 forks source link

5.4.0+1升级到5.5.0后,点击输入框(弹起键盘)报错了 #380

Closed lianfanghua closed 2 years ago

lianfanghua commented 2 years ago

升级5.5.0后,点击输入框,弹起键盘,会出现如下错误:


======== Exception caught by widgets library =======================================================
The following assertion was thrown building _MediaQueryFromWindow(state: _MediaQueryFromWindowState#9c4cc):
'package:flutter/src/widgets/framework.dart': Failed assertion: line 5356 pos 14: '() {
        // check that it really is our descendant
        Element? ancestor = dependent._parent;
        while (ancestor != this && ancestor != null)
          ancestor = ancestor._parent;
        return ancestor == this;
      }()': is not true.

Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
  https://github.com/flutter/flutter/issues/new?template=2_bug.md

The relevant error-causing widget was: 
  ScreenUtilInit ScreenUtilInit:file:///Users/lfh/Developer/wakeai/yzzw_app/lib/src/app.dart:32:14
When the exception was thrown, this was the stack: 
#2      InheritedElement.notifyClients (package:flutter/src/widgets/framework.dart:5356:14)
#3      ProxyElement.updated (package:flutter/src/widgets/framework.dart:5118:5)
#4      InheritedElement.updated (package:flutter/src/widgets/framework.dart:5338:13)
#5      ProxyElement.update (package:flutter/src/widgets/framework.dart:5106:5)
#6      Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#7      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
#8      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4928:11)
#9      Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
#10     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2659:19)
#11     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:882:21)
#12     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:363:5)
#13     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
#14     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1081:9)
#15     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
#19     _invoke (dart:ui/hooks.dart:151:10)
#20     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
#21     _drawFrame (dart:ui/hooks.dart:115:31)
(elided 5 frames from class _AssertionError and dart:async)
====================================================================================================

======== Exception caught by scheduler library =====================================================
The following assertion was thrown during a scheduler callback:
'package:flutter/src/rendering/object.dart': Failed assertion: line 2517 pos 12: 'attached': is not true.

Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
  https://github.com/flutter/flutter/issues/new?template=2_bug.md

When the exception was thrown, this was the stack: 
#2      RenderObject.getTransformTo (package:flutter/src/rendering/object.dart:2517:12)
#3      EditableTextState._updateSizeAndTransform (package:flutter/src/widgets/editable_text.dart:2669:48)
#4      EditableTextState._updateSizeAndTransform.<anonymous closure> (package:flutter/src/widgets/editable_text.dart:2672:49)
#5      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
#6      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1089:9)
#7      SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
#11     _invoke (dart:ui/hooks.dart:151:10)
#12     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
#13     _drawFrame (dart:ui/hooks.dart:115:31)
(elided 5 frames from class _AssertionError and dart:async)
====================================================================================================

======== Exception caught by scheduler library =====================================================
The following assertion was thrown during a scheduler callback:
'package:flutter/src/rendering/object.dart': Failed assertion: line 2517 pos 12: 'attached': is not true.

Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
  https://github.com/flutter/flutter/issues/new?template=2_bug.md

When the exception was thrown, this was the stack: 
#2      RenderObject.getTransformTo (package:flutter/src/rendering/object.dart:2517:12)
#3      RenderBox.localToGlobal (package:flutter/src/rendering/box.dart:2603:39)
#4      RenderEditable._snapToPhysicalPixel (package:flutter/src/rendering/editable.dart:2238:33)
#5      RenderEditable.getLocalRectForCaret (package:flutter/src/rendering/editable.dart:1732:23)
#6      EditableTextState._updateComposingRectIfNeeded (package:flutter/src/widgets/editable_text.dart:2690:40)
#7      EditableTextState._updateComposingRectIfNeeded.<anonymous closure> (package:flutter/src/widgets/editable_text.dart:2695:49)
#8      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
#9      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1089:9)
#10     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
#14     _invoke (dart:ui/hooks.dart:151:10)
#15     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
#16     _drawFrame (dart:ui/hooks.dart:115:31)
(elided 5 frames from class _AssertionError and dart:async)
====================================================================================================

======== Exception caught by scheduler library =====================================================
The following assertion was thrown during a scheduler callback:
'package:flutter/src/rendering/object.dart': Failed assertion: line 2517 pos 12: 'attached': is not true.

Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
  https://github.com/flutter/flutter/issues/new?template=2_bug.md

When the exception was thrown, this was the stack: 
#2      RenderObject.getTransformTo (package:flutter/src/rendering/object.dart:2517:12)
#3      RenderBox.localToGlobal (package:flutter/src/rendering/box.dart:2603:39)
#4      RenderEditable._snapToPhysicalPixel (package:flutter/src/rendering/editable.dart:2238:33)
#5      RenderEditable.getLocalRectForCaret (package:flutter/src/rendering/editable.dart:1732:23)
#6      EditableTextState._updateCaretRectIfNeeded (package:flutter/src/widgets/editable_text.dart:2704:47)
#7      EditableTextState._updateCaretRectIfNeeded.<anonymous closure> (package:flutter/src/widgets/editable_text.dart:2708:49)
#8      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
#9      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1089:9)
#10     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
#14     _invoke (dart:ui/hooks.dart:151:10)
#15     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
#16     _drawFrame (dart:ui/hooks.dart:115:31)
(elided 5 frames from class _AssertionError and dart:async)
====================================================================================================

======== Exception caught by scheduler library =====================================================
The following assertion was thrown during a scheduler callback:
'package:flutter/src/rendering/object.dart': Failed assertion: line 2517 pos 12: 'attached': is not true.

Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
  https://github.com/flutter/flutter/issues/new?template=2_bug.md

When the exception was thrown, this was the stack: 
#2      RenderObject.getTransformTo (package:flutter/src/rendering/object.dart:2517:12)
#3      RenderViewportBase.getOffsetToReveal (package:flutter/src/rendering/viewport.dart:796:52)
#4      RenderViewportBase.showInViewport (package:flutter/src/rendering/viewport.dart:1165:55)
#5      RenderViewportBase.showOnScreen (package:flutter/src/rendering/viewport.dart:1111:46)
#6      RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#7      RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#8      RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#9      RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#10     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#11     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#12     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#13     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#14     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#15     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#16     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#17     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#18     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#19     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#20     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#21     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#22     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#23     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#24     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#25     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#26     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#27     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#28     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#29     EditableTextState._scheduleShowCaretOnScreen.<anonymous closure> (package:flutter/src/widgets/editable_text.dart:2454:22)
#30     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
#31     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1089:9)
#32     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
#36     _invoke (dart:ui/hooks.dart:151:10)
#37     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
#38     _drawFrame (dart:ui/hooks.dart:115:31)
(elided 5 frames from class _AssertionError and dart:async)
====================================================================================================

======== Exception caught by scheduler library =====================================================
The following assertion was thrown during a scheduler callback:
'package:flutter/src/rendering/object.dart': Failed assertion: line 2517 pos 12: 'attached': is not true.

Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
  https://github.com/flutter/flutter/issues/new?template=2_bug.md

When the exception was thrown, this was the stack: 
#2      RenderObject.getTransformTo (package:flutter/src/rendering/object.dart:2517:12)
#3      RenderViewportBase.getOffsetToReveal (package:flutter/src/rendering/viewport.dart:796:52)
#4      RenderViewportBase.showInViewport (package:flutter/src/rendering/viewport.dart:1165:55)
#5      RenderViewportBase.showOnScreen (package:flutter/src/rendering/viewport.dart:1111:46)
#6      RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#7      RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#8      RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#9      RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#10     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#11     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#12     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#13     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#14     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#15     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#16     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#17     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#18     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#19     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#20     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#21     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#22     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#23     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#24     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#25     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#26     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#27     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#28     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
#29     EditableTextState._scheduleShowCaretOnScreen.<anonymous closure> (package:flutter/src/widgets/editable_text.dart:2454:22)
#30     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
#31     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1089:9)
#32     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
#36     _invoke (dart:ui/hooks.dart:151:10)
#37     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
#38     _drawFrame (dart:ui/hooks.dart:115:31)
(elided 5 frames from class _AssertionError and dart:async)
====================================================================================================

======== Exception caught by widgets library =======================================================
The following assertion was thrown while finalizing the widget tree:
Duplicate GlobalKey detected in widget tree.

The following GlobalKey was specified multiple times in the widget tree. This will lead to parts of the widget tree being truncated unexpectedly, because the second time a key is seen, the previous instance is moved to the new location. The key was:
- [LabeledGlobalKey<NavigatorState>#4a1c8]
This was determined by noticing that after the widget with the above global key was moved out of its previous parent, that previous parent never updated during this frame, meaning that it either did not update at all or updated before the widget was moved, in either case implying that it still thinks that it should have a child with that global key.
The specific parent that did not update after having one or more children forcibly removed due to GlobalKey reparenting is:
- Listener(listeners: [down], behavior: deferToChild, renderObject: RenderPointerListener#ca1f4 NEEDS-LAYOUT NEEDS-COMPOSITING-BITS-UPDATE DETACHED)
A GlobalKey can only be specified on one widget at a time in the widget tree.
When the exception was thrown, this was the stack: 
#0      BuildOwner.finalizeTree.<anonymous closure> (package:flutter/src/widgets/framework.dart:2991:15)
#1      BuildOwner.finalizeTree (package:flutter/src/widgets/framework.dart:3016:8)
#2      WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:884:19)
#3      RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:363:5)
#4      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
#5      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1081:9)
#6      SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
#10     _invoke (dart:ui/hooks.dart:151:10)
#11     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
#12     _drawFrame (dart:ui/hooks.dart:115:31)
(elided 3 frames from dart:async)
====================================================================================================

同时输入框丢失焦点时也会报错:


======== Exception caught by widgets library =======================================================
The following assertion was thrown building _MediaQueryFromWindow(state: _MediaQueryFromWindowState#9c4cc):
'package:flutter/src/widgets/framework.dart': Failed assertion: line 5356 pos 14: '() {
        // check that it really is our descendant
        Element? ancestor = dependent._parent;
        while (ancestor != this && ancestor != null)
          ancestor = ancestor._parent;
        return ancestor == this;
      }()': is not true.

Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
  https://github.com/flutter/flutter/issues/new?template=2_bug.md

The relevant error-causing widget was: 
  ScreenUtilInit ScreenUtilInit:file:///Users/lfh/Developer/wakeai/yzzw_app/lib/src/app.dart:32:14
When the exception was thrown, this was the stack: 
#2      InheritedElement.notifyClients (package:flutter/src/widgets/framework.dart:5356:14)
#3      ProxyElement.updated (package:flutter/src/widgets/framework.dart:5118:5)
#4      InheritedElement.updated (package:flutter/src/widgets/framework.dart:5338:13)
#5      ProxyElement.update (package:flutter/src/widgets/framework.dart:5106:5)
#6      Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#7      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
#8      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4928:11)
#9      Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
#10     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2659:19)
#11     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:882:21)
#12     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:363:5)
#13     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
#14     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1081:9)
#15     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
#19     _invoke (dart:ui/hooks.dart:151:10)
#20     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
#21     _drawFrame (dart:ui/hooks.dart:115:31)
(elided 5 frames from class _AssertionError and dart:async)
====================================================================================================

======== Exception caught by widgets library =======================================================
The following assertion was thrown while finalizing the widget tree:
Duplicate GlobalKey detected in widget tree.

The following GlobalKey was specified multiple times in the widget tree. This will lead to parts of the widget tree being truncated unexpectedly, because the second time a key is seen, the previous instance is moved to the new location. The key was:
- [LabeledGlobalKey<NavigatorState>#4a1c8]
This was determined by noticing that after the widget with the above global key was moved out of its previous parent, that previous parent never updated during this frame, meaning that it either did not update at all or updated before the widget was moved, in either case implying that it still thinks that it should have a child with that global key.
The specific parent that did not update after having one or more children forcibly removed due to GlobalKey reparenting is:
- Listener(listeners: [down], behavior: deferToChild, renderObject: RenderPointerListener#ca1f4 NEEDS-LAYOUT NEEDS-COMPOSITING-BITS-UPDATE DETACHED)
A GlobalKey can only be specified on one widget at a time in the widget tree.
When the exception was thrown, this was the stack: 
#0      BuildOwner.finalizeTree.<anonymous closure> (package:flutter/src/widgets/framework.dart:2991:15)
#1      BuildOwner.finalizeTree (package:flutter/src/widgets/framework.dart:3016:8)
#2      WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:884:19)
#3      RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:363:5)
#4      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
#5      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1081:9)
#6      SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
#10     _invoke (dart:ui/hooks.dart:151:10)
#11     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
#12     _drawFrame (dart:ui/hooks.dart:115:31)
(elided 3 frames from dart:async)
====================================================================================================

======== Exception caught by widgets library =======================================================
The following assertion was thrown while finalizing the widget tree:
Duplicate GlobalKey detected in widget tree.

The following GlobalKey was specified multiple times in the widget tree. This will lead to parts of the widget tree being truncated unexpectedly, because the second time a key is seen, the previous instance is moved to the new location. The key was:
- [LabeledGlobalKey<NavigatorState>#4a1c8]
This was determined by noticing that after the widget with the above global key was moved out of its previous parent, that previous parent never updated during this frame, meaning that it either did not update at all or updated before the widget was moved, in either case implying that it still thinks that it should have a child with that global key.
The specific parent that did not update after having one or more children forcibly removed due to GlobalKey reparenting is:
- Listener(listeners: [down], behavior: deferToChild, renderObject: RenderPointerListener#ca1f4 NEEDS-LAYOUT NEEDS-COMPOSITING-BITS-UPDATE DETACHED)
A GlobalKey can only be specified on one widget at a time in the widget tree.
When the exception was thrown, this was the stack: 
#0      BuildOwner.finalizeTree.<anonymous closure> (package:flutter/src/widgets/framework.dart:2991:15)
#1      BuildOwner.finalizeTree (package:flutter/src/widgets/framework.dart:3016:8)
#2      WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:884:19)
#3      RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:363:5)
#4      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
#5      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1081:9)
#6      SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
#10     _invoke (dart:ui/hooks.dart:151:10)
#11     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
#12     _drawFrame (dart:ui/hooks.dart:115:31)
(elided 3 frames from dart:async)
====================================================================================================

======== Exception caught by widgets library =======================================================
The following assertion was thrown while finalizing the widget tree:
Duplicate GlobalKey detected in widget tree.

The following GlobalKey was specified multiple times in the widget tree. This will lead to parts of the widget tree being truncated unexpectedly, because the second time a key is seen, the previous instance is moved to the new location. The key was:
- [LabeledGlobalKey<NavigatorState>#4a1c8]
This was determined by noticing that after the widget with the above global key was moved out of its previous parent, that previous parent never updated during this frame, meaning that it either did not update at all or updated before the widget was moved, in either case implying that it still thinks that it should have a child with that global key.
The specific parent that did not update after having one or more children forcibly removed due to GlobalKey reparenting is:
- Listener(listeners: [down], behavior: deferToChild, renderObject: RenderPointerListener#9e300 NEEDS-LAYOUT NEEDS-COMPOSITING-BITS-UPDATE DETACHED)
A GlobalKey can only be specified on one widget at a time in the widget tree.
When the exception was thrown, this was the stack: 
#0      BuildOwner.finalizeTree.<anonymous closure> (package:flutter/src/widgets/framework.dart:2991:15)
#1      BuildOwner.finalizeTree (package:flutter/src/widgets/framework.dart:3016:8)
#2      WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:884:19)
#3      RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:363:5)
#4      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
#5      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1081:9)
#6      SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
#10     _invoke (dart:ui/hooks.dart:151:10)
#11     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
#12     _drawFrame (dart:ui/hooks.dart:115:31)
(elided 3 frames from dart:async)
====================================================================================================

退回5.4.0+1,除了触发多次rebuild外,一切正常。

lianfanghua commented 2 years ago

[✓] Flutter (Channel stable, 2.10.3, on macOS 11.6.5 20G527 darwin-x64, locale zh-Hans-CN) • Flutter version 2.10.3 at /Users/lfh/.fvm/versions/2.10.3 • Upstream repository https://github.com/flutter/flutter.git • Framework revision 7e9793dee1 (8 weeks ago), 2022-03-02 11:23:12 -0600 • Engine revision bd539267b4 • Dart version 2.16.1 • DevTools version 2.9.2 • Pub download mirror https://pub.flutter-io.cn • Flutter download mirror https://storage.flutter-io.cn

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3) • Android SDK at /Users/lfh/Library/Android/sdk • Platform android-31, build-tools 30.0.3 • ANDROID_HOME = /Users/lfh/Library/Android/sdk • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java • Java version OpenJDK Runtime Environment (build 11.0.11+0-b60-7590822) • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1) • Xcode at /Applications/Xcode.app/Contents/Developer • CocoaPods version 1.11.3

[✓] Chrome - develop for the web • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2021.1) • Android Studio at /Applications/Android Studio.app/Contents • Flutter plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/6351-dart • Java version OpenJDK Runtime Environment (build 11.0.11+0-b60-7590822)

[✓] IntelliJ IDEA Ultimate Edition (version 2020.2.3) • IntelliJ at /Applications/IntelliJ IDEA.app • Flutter plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] Connected device (3 available) • MI 6 (mobile) • 98f5b511 • android-arm64 • Android 9 (API 28) • iPad mini (6th generation) (mobile) • B9C08480-8B05-46E4-9298-0D4FF0CE04BF • ios • com.apple.CoreSimulator.SimRuntime.iOS-15-2 (simulator) • Chrome (web) • chrome • web-javascript • Google Chrome 100.0.4896.127

shichunlei commented 2 years ago

遇到了同样的问题,所有输入框,只要键盘弹出就会报错

Can't find keyplane that supports type 5 for keyboard iPhone-PortraitTruffle-PhonePad; using 26000_PortraitTruffle_iPhone-Complex-Pad_Default

======== Exception caught by scheduler library =====================================================
The following assertion was thrown during a scheduler callback:
'package:flutter/src/rendering/object.dart': Failed assertion: line 2517 pos 12: 'attached': is not true.

Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
  https://github.com/flutter/flutter/issues/new?template=2_bug.md

When the exception was thrown, this was the stack: 
#2      RenderObject.getTransformTo (package:flutter/src/rendering/object.dart:2517:12)
#3      RenderBox.localToGlobal (package:flutter/src/rendering/box.dart:2603:39)
#4      RenderEditable._snapToPhysicalPixel (package:flutter/src/rendering/editable.dart:2238:33)
#5      RenderEditable.getLocalRectForCaret (package:flutter/src/rendering/editable.dart:1732:23)
#6      EditableTextState._updateCaretRectIfNeeded (package:flutter/src/widgets/editable_text.dart:2704:47)
#7      EditableTextState._updateCaretRectIfNeeded.<anonymous closure> (package:flutter/src/widgets/editable_text.dart:2708:49)
#8      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
#9      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1089:9)
#10     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
#14     _invoke (dart:ui/hooks.dart:151:10)
#15     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
#16     _drawFrame (dart:ui/hooks.dart:115:31)
(elided 5 frames from class _AssertionError and dart:async)
====================================================================================================
lianfanghua commented 2 years ago

刚刚又测试了下,不弹出键盘也会报错(用iPad mini模拟器)

shichunlei commented 2 years ago

刚刚又测试了下,不弹出键盘也会报错(用iPad mini模拟器)

已经强制使用 5.4.0+1

lianfanghua commented 2 years ago

5.4.0+1虽然会触发rebuild,但是在真机上性能还是可以接受的,但是在模拟器上就惨不忍睹了

Mounir-Bouaiche commented 2 years ago

Sorry, version 5.5.0 is under development and is not stable yet.

lizhuoyuan commented 2 years ago

will test

meng-fucius commented 2 years ago

同样的问题 所有的输入框在弹起键盘时都会报错 收起键盘时也会报错

lizhuoyuan commented 2 years ago

请先退回5.4

ahmednasser74 commented 2 years ago

I am downgraded to 5.4.0+1 and still had the same issue when opening the keyboard with this error

The following assertion was thrown building MediaQueryFromWindow (state: _MediaQueryFromWindowState#0539d):
'package:flutter/src/widgets/framework.dart': Failed assertion: line 5356 pos 14: '() {
// check that it really is our descendar
dant
Element? ancestor = dependent._parent;
while (ancestor != this && ancestor != null)
ancestor ancestor._parent;
return ancestor == this;
}()': is not true.
lizhuoyuan commented 2 years ago

I am downgraded to 5.4.0+1 and still had the same issue when opening the keyboard with this error

The following assertion was thrown building MediaQueryFromWindow (state: _MediaQueryFromWindowState#0539d):
'package:flutter/src/widgets/framework.dart': Failed assertion: line 5356 pos 14: '() {
// check that it really is our descendar
dant
Element? ancestor = dependent._parent;
while (ancestor != this && ancestor != null)
ancestor ancestor._parent;
return ancestor == this;
}()': is not true.

Please confirm that the version of 5.4.0 + 1 is used, and then describe the problem

ElshiatyTube commented 2 years ago

I fixed it temporarily by using 5.0.0+2 version and set MaterialApp builder context to ScreenUtil, something like this:

ScreenUtilInit(
          builder: (_)=>MaterialApp(
            builder: (context, widget) {
              ScreenUtil.setContext(context);
              return widget!;
            },
            title: appName,
          )
      ),

Hope to fix the issue in the latest version

ahmednasser74 commented 2 years ago

@ElshiatyTube thanks for your help ScreenUtil.setContext(context); solve the error when keyboard opened but i had the same issue when i used .sp in textStyle in ThemeData which throw the same error here and i solve it by remove this .sp from TextStyle

Mounir-Bouaiche commented 2 years ago

@ahmednasser74 @ElshiatyTube @lizhuoyuan @meng-fucius @shichunlei @lianfanghua , Please try with master branch and tell us if it works with you so we can ship a stable version in pub.dev.

dependencies:

  flutter_screenutil:
    git:
      url: https://github.com/OpenFlutter/flutter_screenutil
      branch: master
lianfanghua commented 2 years ago

setContext被删除了吗?

error: The method 'setContext' isn't defined for the type 'ScreenUtil'. 

另外在init中,context也直接传null,也就是说完全放弃和上下文的关系?

ScreenUtil.init(
          null,
          deviceSize: constraints.biggest,
          designSize: designSize,
          splitScreenMode: splitScreenMode,
          minTextAdapt: minTextAdapt,
        );

由于context为null,因此statusBarHeight和bottomBarHeight永远为0,这是对的吗?

而之前的异常已经不会出现了。键盘弹起缩回也不会导致rebuild了。

如果这个版本是稳定版,请同时更新使用方法,谢谢。

Mounir-Bouaiche commented 2 years ago

@lianfanghua 嗨,我的朋友,我们仍然支持上下文,在保存文件之前推送更改只是一个错误。 现在尝试使用 master 分支。

Mounir-Bouaiche commented 2 years ago

@lianfanghua 是的,当我们确保一切都按预期工作时,我们将更新 README。

非常感谢您的帮助和反馈。

Mounir-Bouaiche commented 2 years ago

Hi @lianfanghua , I have recently publish the new version of the library. Go check it out and if it works fine for you please close this issue, or else drop error log here. Thank you.

lianfanghua commented 2 years ago

@Mounir-Bouaiche 问题已经修复了,非常感谢。