Flutter 跳转多个页面后回到第一个页面并实现参数传递
在Flutter中,你可以使用Navigator来管理页面跳转,并且可以通过构造函数或者Navigator.of(context).pushNamed
方法传递参数。
以下是一个简单的例子,展示了如何从第二个页面回到第一个页面,并且传递参数:
首先,你需要在第一个页面设置一个接收参数的构造函数:
class FirstPage extends StatelessWidget {
final String data;
FirstPage({Key key, this.data}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('First Page'),
),
body: Center(
child: Text(data ?? 'No data'),
),
);
}
}
然后,在第二个页面,当你准备跳转回第一个页面时,你可以这样做:
class SecondPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Second Page'),
),
body: Center(
child: RaisedButton(
child: Text('Go back to First Page with data'),
onPressed: () {
Navigator.of(context).pop('This is the data from Second Page');
},
),
),
);
}
}
在onPressed
回调中,我们使用Navigator.of(context).pop
方法来关闭当前页面,同时传递一个字符串参数给上一个页面。
最后,确保你的MaterialApp
中定义了路由:
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Navigation Example',
routes: {
'/': (context) => FirstPage(),
'/second': (context) => SecondPage(),
},
onGenerateRoute: (settings) {
if (settings.name == '/') {
final data = settings.arguments;
if (data != null) {
return MaterialPageRoute(builder: (context) => FirstPage(data: data));
}
}
},
);
}
}
在这个例子中,当从第二个页面返回到第一个页面时,你可以看到传递的数据显示在第一个页面上。这个例子演示了如何使用Navigator.pop
与Navigator.pushNamed
结合来传递简单的字符串数据。
评论已关闭