flutter - 无法关闭对话框
问题描述
我正在使用SimpleDialog
which 具有SimpleDialogOption
可用于在对话框中构建列表的子项。我的对话框在一个FutureBuilder
,所以我需要用WidgetsBinding.instance.addPostFrameCallback((_)
. SimpleDialogOption
有一个onPressed
回调,我可以在其中设置状态。这调用了另一个重建,因为WidgetsBinding.instance.addPostFrameCallback((_)
(我认为!)而使对话框保持打开状态。如果我不调用 setState,对话框就会消失。我无法关闭我的对话。反正围绕这个...
FutureBuilder<List<Suburb>>(
future: suburbs,
builder: (context, snapshot) {
switch (snapshot.connectionState) {
// when future has not finished
case ConnectionState.active:
case ConnectionState.waiting:
return CircularProgressIndicator();
// when future has finished
case ConnectionState.done:
final suburbs = snapshot.data;
if (suburbs == null) {
WidgetsBinding.instance.addPostFrameCallback((_) {
showAlertDialog(
context: context,
title: 'No postocde',
content: 'We can' '/t seem to find that postocode ',
defaultActionText: 'OK',
).then((_) => _controller.clear());
});
return Container();
}
if (suburbs.length == 1) {
suburb = suburbs[0].name;
suburbCode = suburbs[0].code;
return(Text(suburbs[0].name));
} else if (suburbs.length == 2) {
showDialog(
context: context,
builder: (BuildContext context) {
return SimpleDialog(
backgroundColor: Colors.white,
title: Text('Pick'),
children: [
SimpleDialogOption(
child: Text(suburbs[0].name),
onPressed: () {
Navigator.of(context).pop();
setState(() {
WidgetsBinding.instance
.cancelFrameCallbackWithId(1);
suburb = suburbs[0].name;
});
},
),
SimpleDialogOption(
child: Text(suburbs[1].name),
onPressed: () {
Navigator.of(context).pop();
setState(() {
suburb = suburbs[0].name;
});
},
)
],
);
});
return Column(
children: [
FlatButton(
child: Text(suburbs[0].name),
onPressed: () {
setState(() {
suburb = suburbs[0].name;
suburbCode = suburbs[0].code;
});
},
),
FlatButton(
child: Text(suburbs[1].name),
onPressed: () {
setState(() {
suburb = suburbs[1].name;
suburbCode = suburbs[1].code;
});
},
),
],
);
}
return Container();
// initial title
default:
return Container();
}
},
),
解决方案
推荐阅读
- javascript - POST 请求不返回节点中的表单下拉值
- python - Python字典什么都不显示
- javascript - 使用量角器为同一个硒测试用例使用多个 .properties 文件
- javascript - angular js href在url开头添加不安全
- javascript - 如何在Javascript数组中替换单引号而不是双引号?
- android - 安装调试 apk 时的 INSTALL_FAILED_NO_MATCHING_ABIS(编辑:22.10.2019 安装 APP 在 8.1 设备 SHELL_UNRESPONSIVE 上挂起)
- android - 列表视图中的对话框过渡动画
- reactjs - React:无法将组件表单数据访问到另一个组件中
- javascript - 使用 api 的动态 select2 选项
- javascript - 关闭模态窗口后防止页面滚动回顶部