flutter - 带有返回数据的 Flutter Back 按钮
问题描述
我有一个带有两个按钮的界面,它们会弹出并返回 true 或 false,如下所示:
onPressed: () => Navigator.pop(context, false)
我需要调整 appbar 中的后退按钮,所以它会弹出并返回 false。有没有办法做到这一点?
解决方案
更简单的方法是将 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(),
);
},
));
推荐阅读
- c++ - C++ 每 x 秒调用一次函数
- java - 如何在每次更改的正则表达式中添加一个字符?
- jquery - 在传递值时定位动态添加的文本值显示为空
- cefsharp - 自动滚动第二帧
- python - 使用正则表达式从熊猫数据框中的单元格中提取日期
- objective-c - 目标-c,object_getClassName(obj) vs NSStringFromClass([obj class])
- c# - 即使没有 datetime 列,也会获得“将 varchar 数据类型转换为 datetime 数据类型导致超出范围的值”
- node.js - 如何将对象或变量与 Promise.all 一起传递?
- excel - 在编译以下代码时,我有一个错误对象变量或未设置块变量
- datagrip - 在结果集上编辑/删除数据时获取执行查询的日志