如果API调用返回错误,我想显示AlertDialog
。
但是当我尝试在API调用上显示AlertDialog
时出现错误:
E / flutter(25472):[错误:flutter / lib / ui / ui_dart_state.cc(148)] 未处理的异常:setState()或markNeedsBuild()在调用期间 建立。 E / flutter(25472):此叠加小部件无法标记为 需要建立,因为该框架已经在 构建小部件。可以将小部件标记为需要构建 仅在其祖先之一当前处于构建阶段时 建造。允许此异常是因为框架可以构建 父部件在孩子之前,这意味着肮脏的后代会 总是被建造。否则,框架可能无法访问此小部件 在此构建阶段。 E / flutter(25472):其上的小部件 调用setState()或markNeedsBuild()的是:E / flutter(25472):
叠加-[LabeledGlobalKey#faad1]
也许是因为我在AlertDialog
父级动画制作过程中尝试显示AnimatedContainer
(在发生错误时动画):
AnimatedContainer(
…
onPressed() async {
callAPI();
if (error) {
await _showAlertDialog();
}
对于AlertDialog
,我使用标准的Flutter示例:
Future<void> _showAlertDialog() async {
return showDialog<void>(
context: context,
barrierDismissible: false, // user must tap button!
builder: (BuildContext context) {
return AlertDialog(
title: Text('Rewind and remember'),
content: SingleChildScrollView(
child: ListBody(
children: <Widget>[
Text('You will never be satisfied.'),
Text('You\’re like me. I’m never satisfied.'),
],
),
),
actions: <Widget>[
FlatButton(
child: Text('Regret'),
onPressed: () {
Navigator.of(context).pop();
},
),
],
);
},
);
}
在父母AlertDialog
制作动画时如何显示AnimatedContainer
?
谢谢!
答案 0 :(得分:0)
该错误提醒我们必须先构建页面,然后才能创建此新组件。
解决方案可能是使用addPostFrameCallback方法,在请求数据后等待页面构建完成:
WidgetsBinding.instance.addPostFrameCallback((_){
/// Interface Request
});
您可以在以下网站上找到更多信息:https://www.didierboelens.com/faq/week2/