【问题标题】:How to catch any Flutter exception如何捕捉任何 Flutter 异常
【发布时间】:2021-10-17 16:20:55
【问题描述】:

我的应用程序根据一些用户定义的字符串生成代码。生成的代码可能无效,并且可能会生成一个 UI 树,该树会抛出,例如:

Widget parseUserInput();

parseUserInput('Flexible>Expanded')
=> Yields: Flexible(child: Expanded(child: Container())

这段代码在 Flutter 中抛出。异常被 Flutter 自己捕获。

======== Exception caught by widgets library =======================================================
The following assertion was thrown while applying parent data.:
Incorrect use of ParentDataWidget.
...

我无法用 try/catch 捕捉到这个异常,因为 Flutter 已经捕捉到它了。我也无法通过 MaterialApp 的 ErrorWidget.builder 捕捉到它,因为它似乎也没有被触发。

还有其他方法可以解决这个问题吗?在一个理想的世界里,我会这样做:

ErrorWidget(
    onError: revertToLastValidUserInput,
    child: WidgetBuilder(builder: (context) => parseUserInput(...)
)
)

【问题讨论】:

  • 您不能为用户输入创建过滤器或警告吗?
  • 过滤用户输入的所有可能错误不是很合理。另外,我不太确定所有错误会是什么。
  • 我认为最好的方法是使用导致错误的模式,因为即使你可以编写一个小部件来捕获错误,对于这种总是会出现异常的情况,你会怎么做@ 987654326@。您需要将整个应用程序包装在一个错误小部件中,这将使调试变得困难

标签: flutter dart


【解决方案1】:

以这种方式消除异常并不是一个好习惯。 用户应该意识到错误,在这种情况下,例如,您可以在处理输入之前验证输入并向用户显示警报(Text() 、对话框或其他内容)。

【讨论】:

    猜你喜欢
    • 2019-04-01
    • 2012-03-20
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 2015-12-19
    • 1970-01-01
    相关资源
    最近更新 更多