问题标签 [flutter-alertdialog]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
flutter - 如果有人没有在时间段内将文本输入第一个对话框,则显示第二个对话框?
我已经出现了一个对话框,如果有人正确输入了某个单词,可以关闭该对话框。我想知道如果有人在某个时间范围内没有在第一个文本框中输入任何内容,是否可以显示第二个对话框。例如,如果该人在接下来的 5 分钟内没有输入文本,有没有办法触发第二个对话框出现?
如果此人提供的文本不正确,我会调用该函数NoDialog
,但如果此人在一段时间内没有在文本框中输入任何内容,我不确定如何做出“if”语句。我认为如果该人将文本留空,然后调用附加了 Future.delayed 的新函数,我可以做一个“if”语句,但是我找不到一种方法来为没有文本的情况下一个“if”语句是进入。同样在这种情况下,我相信该人必须按“输入”键,但我希望显示第二个对话框,因为用户没有触摸屏幕上的任何内容。这可能吗?
flutter - 无法编译 SchedulerBinding.instance.addPostFrameCallback 和 executeAfterBuild() 异步也不起作用
在我的应用程序中,用户会看到一个拼图,该拼图由 Flutter 的 CustomerPainter 类的重新实现绘制,并接受通过点击 Canvas 做出的动作。画布不断更新和重新绘制以显示动作。当用户做出最后一步并完成正确的解决方案时,应用程序应该告诉用户。该应用程序正在使用 Flutter 的 AlertDialog 向用户发出此类消息。
问题在于,当检测到解决方案情况时,应用程序深入 CustomPainter 的 paint() 方法。任何在此时发出消息的尝试都会导致应用程序崩溃。给用户的消息确实出现了,但到那时应用程序已经崩溃了。错误消息是:
[ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception:
setState() or markNeedsBuild() called during build.
或
[ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception:
Build scheduled during frame.
这些信息之后是关于发生了什么以及应该做什么的全面建议。Stack Overflow 上也有一些建议,但我无法让它们中的任何一个起作用。
如果我在我的小部件构建中编写 SchedulerBinding.instance.addPostFrameCallback 它将无法编译,因为它需要来自 BindingBase 的几个部分。SchedulerBinding 是一个 mixin。如果我尝试将 BindingBase 混入到我的 Widget,编译将再次失败,因为 BindingBase 是一个类,具有构造函数,而不是混入。
如果我采用异步方式,使用 Future executeAfterBuild(),应用程序编译但再次崩溃,显然是因为异步函数立即执行(正常)并且没有在小部件构建之后安排,正如一些堆栈中所建议的那样溢出帖子。该应用程序在崩溃时肯定不在 setState() 中,因此可能 markNeedsBuild() 以某种方式触发了崩溃。
我正在使用 Flutter 2.8.2 和 Dart 2.15.1,以及健全的 null 安全性。Flutter 的小部件调度策略是否发生了变化?我提到的 Stack Overflow 帖子已经有 3 年的历史了。
flutter - How to close specific Dialog
I am opening a dialog from another dialog and trying to close the 1st dialog, but it is closing the recent dialog. Similar kind of git issue.
I've tried
- putting
ValueKey
onAlertDialog
- using
rootNavigator:true
while pop - keeping
context
into variable and doingNavigator.of(specifiqContext).pop()
But none of them is working. Code to reproduce the issue on dartPad.
How can I close bellow Dialog(Dialog 2
) without closing above(Dialog 1
).
I don't like to close both and reopen the
Dialog 1
.