首页 > 解决方案 > 带有返回数据的 Flutter Back 按钮

问题描述

我有一个带有两个按钮的界面,它们会弹出并返回 true 或 false,如下所示:

onPressed: () => Navigator.pop(context, false)

我需要调整 appbar 中的后退按钮,所以它会弹出并返回 false。有没有办法做到这一点?

标签: flutterdartback-button

解决方案


更简单的方法是将 body 包裹在WillPopScope中,这样它将与Top 上的 Back Button 和 Bottom 上的Android Back Button 一起使用

这是一个两个后退按钮都返回 false 的示例:

final return = Navigator.of(context).push(MaterialPageRoute<bool>(
    builder: (BuildContext context) {
      return Scaffold(
        appBar: AppBar(
          title: Text("New Page"),
        ),
        body: WillPopScope(
          onWillPop: () async {
             Navigator.pop(context, false);
             return false;
          },
          child: newPageStuff(),
        ),
      );
    },
));

在他们建议使用的其他答案中:

领先:BackButton(...)

我发现这适用于顶部的后退按钮,而不适用于 Android。

无论如何,我包括一个例子:

final return = Navigator.of(context).push(MaterialPageRoute<bool>(
    builder: (BuildContext context) {
      return Scaffold(
        appBar: AppBar(
          leading: BackButton(
            onPressed: () => Navigator.pop(context, false),
          ),
          title: Text("New Page"),
        ),
        body: newPageStuff(),
      );
    },
));

推荐阅读