在我的应用程序中单击一个按钮后,将打开一个弹出窗口。单击一次按钮,然后工作正常,但是每当我连续2次连续单击按钮3次,就会收到以下错误消息。
我收到此错误。
flutter: ════════════════════════════════════════════════════════════════════════════════════════════════════
flutter: ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
flutter: The following assertion was thrown while finalizing the widget tree:
flutter: Duplicate GlobalKey detected in widget tree.
flutter: The following GlobalKey was specified multiple times in the widget tree. This will lead to parts of
flutter: the widget tree being truncated unexpectedly, because the second time a key is seen, the previous
flutter: instance is moved to the new location. The key was:
flutter: - [LabeledGlobalKey<FormState>#5f491]
flutter: This was determined by noticing that after the widget with the above global key was moved out of its
flutter: previous parent, that previous parent never updated during this frame, meaning that it either did
flutter: not update at all or updated before the widget was moved, in either case implying that it still
flutter: thinks that it should have a child with that global key.
flutter: The specific parent that did not update after having one or more children forcibly removed due to
flutter: GlobalKey reparenting is:
flutter: - Column(direction: vertical, mainAxisAlignment: start, crossAxisAlignment: center, renderObject:
flutter: RenderFlex#d62e9 relayoutBoundary=up21)
flutter: A GlobalKey can only be specified on one widget at a time in the widget tree.
flutter:
flutter: When the exception was thrown, this was the stack:
flutter: #0 BuildOwner.finalizeTree.<anonymous closure> (package:flutter/src/widgets/framework.dart:2881:15)
flutter: #1 BuildOwner.finalizeTree (package:flutter/src/widgets/framework.dart:2906:8)
flutter: #2 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:915:18)
flutter: #3 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:302:5)
flutter: #4 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1117:15)
flutter: #5 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1055:9)
flutter: #6 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:971:5)
flutter: #10 _invoke (dart:ui/hooks.dart:251:10)
flutter: #11 _drawFrame (dart:ui/hooks.dart:209:3)
flutter: (elided 3 frames from dart:async)
flutter: ════════════════════════════════════════════════════════════════════════════════════════════════════
════════ Exception caught by widgets library ═══════════════════════════════════════════════════════
'package:flutter/src/widgets/will_pop_scope.dart': Failed assertion: line 61 pos 12: '_route == ModalRoute.of(context)': is not true.
The relevant error-causing widget was:
Form-[LabeledGlobalKey<FormState>#5f491] file:///Users/pkimac/Documents/Project/GateInn/lib/screens/GateKeeperManageScreen.dart:78:18
════════════════════════════════════════════════════════════════════════════════════════════════════
[VERBOSE-2:ui_dart_state.cc(177)] Unhandled Exception: Failed assertion: boolean expression must not be null
#0 _GateKeeperManageScreenState.showAlertView.<anonymous closure> (package:gateinn/screens/GateKeeperManageScreen.dart:150:11)
#1 _rootRunUnary (dart:async/zone.dart:1198:47)
#2 _CustomZone.runUnary (dart:async/zone.dart:1100:19)
#3 _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
#4 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
#5 Future._propagateToListeners (dart:async/future_impl.dart:725:32)
#6 Future._completeWithValue (dart:async/future_impl.dart:529:5)
#7 _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:40:15)
#8 _completeOnAsyncReturn (dart:async-patch/async_patch.dart:311:13)
#9 Alert.show (package:gateinn/library/alert_view/alert.dart)
<asynchronous suspension>
#10 _GateKeeperManageScreenState.showAlertView (package:gateinn/screens/GateKeeperManageScreen.dart<…>
════════ Exception caught by widgets library ═══════════════════════════════════════════════════════
Duplicate GlobalKey detected in widget tree.
════════════════════════════════════════════════════════════════════════════════════════════════════
flutter: ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
flutter: The following assertion was thrown building
flutter: Overlay-[LabeledGlobalKey<OverlayState>#abe0f](dependencies: [_EffectiveTickerMode], state:
flutter: OverlayState#3c1ef(entries: [OverlayEntry#00489(opaque: true; maintainState: false),
flutter: OverlayEntry#fabc5(opaque: false; maintainState: true), OverlayEntry#8e6f6(opaque: true;
flutter: maintainState: false), OverlayEntry#9029f(opaque: false; maintainState: true)])):
flutter: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 5098 pos 14:
flutter: '_dependents.isEmpty': is not true.
════════ Exception caught by widgets library ═══════════════════════════════════════════════════════
'package:flutter/src/widgets/framework.dart': Failed assertion: line 5098 pos 14: '_dependents.isEmpty': is not true.
The relevant error-causing widget was:
FlutterEasyLoading file:///Users/pkimac/Documents/Project/GateInn/lib/main.dart:253:16
════════════════════════════════════════════════════════════════════════════════════════════════════
flutter: #31 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #32 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6105:14)
flutter: #33 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #34 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #35 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #36 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6105:14)
flutter: #37 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #38 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #39 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #40 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #41 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #42 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #43 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #44 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6105:14)
flutter: #45 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #46 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6105:14)
flutter: #47 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #48 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6105:14)
flutter: #49 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #50 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6105:14)
flutter: #51 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #52 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #53 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #54 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6105:14)
flutter: #55 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #56 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #57 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #58 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6105:14)
flutter: #59 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #60 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #61 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #62 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #63 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #64 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6105:14)
flutter: #65 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #66 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #67 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #68 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #69 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #70 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6105:14)
flutter: #71 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #72 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6105:14)
flutter: #73 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #74 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6105:14)
flutter: #75 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #76 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6105:14)
flutter: #77 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #78 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #79 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #80 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6105:14)
flutter: #81 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #82 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6105:14)
flutter: #83 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #84 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #85 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #86 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6105:14)
flutter: #87 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #88 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #89 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #90 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #91 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #92 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6105:14)
flutter: #93 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #94 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #95 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #96 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6105:14)
flutter: #97 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #98 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #99 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #100 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #101 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #102 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #103 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #104 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #105 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #106 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6105:14)
flutter: #107 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #108 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #109 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #110 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #111 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #112 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6105:14)
flutter: #113 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #114 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #115 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #116 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #117 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #118 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4681:14)
flutter: #119 _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:2018:13)
flutter: #120 _InactiveElements.add (package:flutter/src/widgets/framework.dart:2030:7)
flutter: #121 Element.deactivateChild (package:flutter/src/widgets/framework.dart:3605:29)
flutter: #122 RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5740:11)
flutter: #123 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6246:17)
flutter: #124 Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
flutter: #125 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
flutter: #126 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
flutter: #127 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
flutter: #128 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2730:33)
flutter: #129 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:913:20)
flutter: #130 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:302:5)
flutter: #131 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1117:15)
flutter: #132 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1055:9)
flutter: #133 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:971:5)
flutter: #137 _invoke (dart:ui/hooks.dart:251:10)
flutter: #138 _drawFrame (dart:ui/hooks.dart:209:3)
flutter: (elided 5 frames from class _AssertionError and dart:async)
flutter:
flutter: ════════════════════════════════════════════════════════════════════════════════════════════════════
[VERBOSE-2:profiler_metrics_ios.mm(184)] Error retrieving thread information: (ipc/send) invalid destination port
[VERBOSE-2:profiler_metrics_ios.mm(184)] Error retrieving thread information: (ipc/send) invalid destination port
这是我的代码
class _KeeperManageScreenState extends State<KeeperManageScreen> {
final addFormKey = GlobalKey<FormState>();
TextEditingController userIdController = TextEditingController();
TextEditingController passwordController = TextEditingController();
TextEditingController reEnterPasswordController = TextEditingController();
showAlertView(BuildContext context) {
var alertStyle = AlertStyle(
animationType: AnimationType.grow,
overlayColor: Colors.black87,
isCloseButton: true,
isOverlayTapDismiss: true,
descStyle: TextStyle(fontWeight: FontWeight.bold),
titleStyle: TextStyle(fontWeight: FontWeight.w500, fontSize: 18),
animationDuration: Duration(milliseconds: 400),
);
Alert(
context: myGlobals.scaffoldKey.currentContext,
style: alertStyle,
title: getTranslated(context, "Test"),
content: Form(
key: addFormKey,
child: Column(
children: <Widget>[
TextFormField(
controller: userIdController,
decoration: InputDecoration(
icon: Icon(Icons.account_circle),
labelText: getTranslated(context, "Login Id"),
),
),
TextFormField(
controller: passwordController,
decoration: InputDecoration(
icon: Icon(Icons.lock),
labelText: getTranslated(context, "Password"),
// hintText: getTranslated(context, "Password")
), ,
),
TextFormField(
controller: reEnterPasswordController,
decoration: InputDecoration(
icon: Icon(Icons.lock),
labelText: getTranslated(context, "Confirm Password"),
),
)
],
),
),
buttons: [
DialogButton(
color: appThemeColor,
onPressed: () {
onAddBtnPressed();
},
child: Text(
"Add",
style: TextStyle(color: Colors.white, fontSize: 20),
),
)
]).show();
}
@override
Widget build(BuildContext context) {
return Scaffold(
key: myGlobals.scaffoldKey,
appBar: AppBar(
title: Text(getTranslated(context, "manage_keeper"),
textAlign: TextAlign.center),
actions: <Widget>[
GestureDetector(
onTap: () {
showAlertView(context);
},
child: Icon(
Icons.add_circle_outline,
size: 26.0,
),
),
], ,
),
body: Container(),
);
}
}
如何解决此错误?
答案 0 :(得分:1)
将密钥从 static final 更改为 just final 并添加 debugLabel 为我解决了
class _SomeState 扩展状态 {
final GlobalKey _formKey = GlobalKey(debugLabel: '_SomeState'); ....
用final解决这个问题
使用这个--v
final GlobalKey _formKey = GlobalKey();
答案 1 :(得分:0)
删除final
GlobalKey<FormState> addFormKey = GlobalKey<FormState>();