【发布时间】:2020-04-12 06:37:32
【问题描述】:
我得到了这个简单的构建函数,当snapshot 出现错误时,它应该会显示一个对话框,但是如果没有出现以下错误,我就无法这样做:
flutter:以下断言被抛出构建 FutureBuilder(脏,依赖:颤振: [_LocalizationsScope-[GlobalKey#f4f3f],_InheritedTheme],状态: 颤动:_FutureBuilderState#175f8):颤动: 在构建期间调用 setState() 或 markNeedsBuild()。扑腾:这个 叠加小部件无法标记为需要构建,因为 框架已经在颤抖:构建小部件的过程。一种 小部件可以在构建阶段标记为需要构建 颤振:仅当其祖先之一正在构建时。这 允许异常是因为框架颤动:构建父级 孩子之前的小部件,这意味着肮脏的后代将永远是 建成。 flutter:否则,框架可能不会访问这个小部件 在此构建阶段。 flutter: setState() 或 markNeedsBuild() 被称为:颤振:
叠加层-[LabeledGlobalKey#07fd4]
代码:
showUnknownErrorAlertDialog(BuildContext context, [void Function() onClose]) {
showDialog(
context: context,
builder: (BuildContext builderContext) {
return AlertDialog(
title: Text(AppLocalizations.of(builderContext).lang['unknownError']),
actions: <Widget>[
FlatButton(
child: Text(AppLocalizations.of(builderContext).lang['close']),
onPressed: () {
Navigator.of(builderContext).pop();
if (onClose != null) {
onClose();
}
},
),
],
);
}
);
}
goBack() {
locator<AppNavigation>().navigateTo('gameOverview', AppGameArgs(gameName));
}
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: getGameSession(),
builder: (context, AsyncSnapshot<DocumentSnapshot> snapshot) {
if (snapshot.hasError) {
return showUnknownErrorAlertDialog(context, () {
goBack();
});
}
/ ... omitted code .../
如果出现错误时不允许显示对话框或立即离开,我应该如何处理构建函数中的错误?
【问题讨论】: