如何连续关闭对话框和底页?

时间:2020-02-26 15:29:14

标签: flutter

我有一个显示底页的功能。如果选择了此底页的一项,则使用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;}

0 个答案:

没有答案
相关问题