Flutter 如何在FutureBuilder中显示对话框
飘飘然, 我使用FutureBuilder显示API中的数据。 我想弹出一个错误对话框时,有错误 但是,当我调用showDialog()时,它会抛出错误 这是我的密码Flutter 如何在FutureBuilder中显示对话框,flutter,showdialog,Flutter,Showdialog,飘飘然, 我使用FutureBuilder显示API中的数据。 我想弹出一个错误对话框时,有错误 但是,当我调用showDialog()时,它会抛出错误 这是我的密码 return FutureBuilder( future: xxx, builder: (context, snapshot) { if (snapshot.hasData) { //DO SOMETHING } else if (snapsho
return FutureBuilder(
future: xxx,
builder: (context, snapshot) {
if (snapshot.hasData) {
//DO SOMETHING
} else if (snapshot.hasError) {
//TODO: Show Error
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text("Error"),
content: Text("HAHAHA"),
actions: <Widget>[
FlatButton(
child: Text("No"),
),
FlatButton(
child: Text("Yes")
),
],
);
}
);
return Container();
} else {
//DO SOMETHING
}
},
返回FutureBuilder(
未来:xxx,
生成器:(上下文,快照){
if(snapshot.hasData){
//做点什么
}else if(snapshot.hasrerror){
//TODO:显示错误
显示对话框(
上下文:上下文,
生成器:(BuildContext上下文){
返回警报对话框(
标题:文本(“错误”),
内容:文本(“哈哈哈”),
行动:[
扁平按钮(
子项:文本(“否”),
),
扁平按钮(
子项:文本(“是”)
),
],
);
}
);
返回容器();
}否则{
//做点什么
}
},
请帮助建议如何在FutureBuilder中显示对话框。当构建方法正在构建小部件时,我们不能调用setState、navigate或showDialog。因此,我们可以等待一微秒,同时构建方法完成构建小部件,以便我们可以显示对话框 创建一个如下所示的方法
showError() async {
await Future.delayed(Duration(microseconds: 1));
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text("Error"),
content: Text("HAHAHA"),
actions: <Widget>[
FlatButton(
child: Text("No"),
),
FlatButton(child: Text("Yes")),
],
);
});
}
showError()异步{
等待未来。延迟(持续时间(微秒:1));
显示对话框(
上下文:上下文,
生成器:(BuildContext上下文){
返回警报对话框(
标题:文本(“错误”),
内容:文本(“哈哈哈”),
行动:[
扁平按钮(
子项:文本(“否”),
),
扁平按钮(子项:文本(“是”),
],
);
});
}
并在要显示对话框的位置调用此方法。当生成方法正在生成小部件时,我们不能调用setState、navigate或showDialog。因此,我们可以等待一微秒,同时生成方法完成生成小部件,以便显示对话框 创建一个如下所示的方法
showError() async {
await Future.delayed(Duration(microseconds: 1));
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text("Error"),
content: Text("HAHAHA"),
actions: <Widget>[
FlatButton(
child: Text("No"),
),
FlatButton(child: Text("Yes")),
],
);
});
}
showError()异步{
等待未来。延迟(持续时间(微秒:1));
显示对话框(
上下文:上下文,
生成器:(BuildContext上下文){
返回警报对话框(
标题:文本(“错误”),
内容:文本(“哈哈哈”),
行动:[
扁平按钮(
子项:文本(“否”),
),
扁平按钮(子项:文本(“是”),
],
);
});
}
并在要显示对话框的位置调用此方法