如何在Flutter中传递参数,如果用户使用箭头返回?
在Flutter中,当用户使用返回箭头返回上一页时,如果需要传递参数,可以通过覆盖返回按钮的行为来实现。可以使用WillPopScope
小部件来实现此功能。以下是解决方法的代码示例:
import 'package:flutter/material.dart';
void main() async {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: Navigator(
onGenerateRoute: (settings) => MaterialPageRoute(
builder: (context) => MyHomePage(),
),
),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key}) : super(key: key);
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State
void _onButtonPressed() {
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => OtherPage()))
.then((value) {
print("returned: $value");
if (value != null) {
setState(() {
// ...
});
}
});
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Demo")),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children:
RaisedButton(
child: Text("Open another screen"),
onPressed: _onButtonPressed),
],
),
),
);
}
}
class OtherPage extends StatelessWidget {
OtherPage({Key key}) : super(key: key);
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async {
// 在这里可以返回任何你需要的内容...
Navigator.of(context).pop("my value");
// 取消默认行为
return false;
},
child: Scaffold(
appBar: AppBar(title: Text("Other page")),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children:
Text('Click on return button'),
],
),
),
),
);
}
}
在上述代码中,通过在OtherPage
小部件中使用WillPopScope
,并在其onWillPop
回调中使用Navigator.of(context).pop()
来手动返回上一页并传递参数。这样,当用户点击返回箭头时,将执行onWillPop
回调,并返回指定的参数值。
当用户使用箭头返回时,Flutter 如何传递参数?
在 Flutter 中,当用户使用箭头返回时,可以通过以下方法传递参数:
1. 首先,需要定义一个变量来存储返回的数据。例如,可以创建一个名为 "result" 的变量。
final result = await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SelectionScreen(),
),
);
2. 使用 Navigator.push 方法将数据传递给下一个屏幕。在这个例子中,我们将数据传递给名为 SelectionScreen 的屏幕。
3. 在 SelectionScreen 屏幕中,可以通过 Navigator.pop 方法返回数据给上一个屏幕。
Navigator.pop(context, selectedData);
4. 回到上一个屏幕后,可以通过 result 变量来获取传递的数据。
这样,当用户使用箭头返回到上一个屏幕时,就可以传递参数并获取返回的数据了。
更多详细信息,请查看 Flutter 文档中的 文档。