我有一个显示底页的功能。如果选择了此底页的一项,则使用Navigator.of(context).pop()
将其关闭,并显示一个对话框。如果用户点击“取消”按钮,我也想关闭该对话框,因此我再次尝试使用Navigator.of(context).pop()
。但是什么也没发生,我收到错误消息Looking up a deactivated widget's ancestor is unsafe.
,我尝试删除第一个错误消息,现在可以通过按“取消”按钮取消对话框,但底部的表单仍然存在。理想情况下,这是一种使当前形式的应用正常运行的方法,但同时将两者关闭也可以。
我将非常感谢您的帮助。
编辑:添加了代码
List<Widget> exerciseSelectionItems(BuildContext context, String schoolClassId) {
List<Widget> items = new List<Widget>();
for (var i = 0; i < selectableExercises.length; i++) {
Exercise currentExercise = selectableExercises[i];
items.add(
ListTile(
leading: Icon(currentExercise.icon),
title: Text(currentExercise.name),
onTap: () {
Navigator.of(context).pop();
showDialog(
context: context,
child: AlertDialog(
title: Text(
AppLocalizations.of(context).translate('create_homework'),
),
content: Text(
AppLocalizations.of(context)
.translate('create_homework_message'),
),
actions: <Widget>[
FlatButton(
child: Text('OK'),
onPressed: () {
Database().addHomework(
schoolClassId,
Homework(i, DateTime.now().millisecondsSinceEpoch),
);
Navigator.of(context).pop();
},
),
FlatButton(
child: Text(
AppLocalizations.of(context).translate('cancel'),
),
onPressed: () {
Navigator.of(context).pop();
},
),
],
),
);
},
),
);
}
return items;}