Flutter 中的路由参数:传递与接收数据
Flutter 中的路由参数:传递与接收数据
在Flutter中,使用命名路由并借助MaterialPageRoute的settings属性传递参数,接收时从ModalRoute.of(context).settings.arguments获取。
更多关于Flutter 中的路由参数:传递与接收数据的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在 Flutter 中,使用 Navigator.push
传递参数,如 Navigator.push(context, MaterialPageRoute(builder: (context) => SecondPage(data: 'Hello')));
。接收参数则通过 ModalRoute.of(context)!.settings.arguments
或构造函数。
在 Flutter 中,可以通过 Navigator.push
传递参数,使用 ModalRoute.of(context)
接收参数。例如:
传递参数:
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SecondScreen(data: 'Hello'),
),
);
接收参数:
class SecondScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
final String data = ModalRoute.of(context)!.settings.arguments as String;
return Scaffold(
body: Center(child: Text(data)),
);
}
}
通过这种方式,可以在不同页面间传递和接收数据。
使用ModalRoute.of(context).settings.arguments
接收,导航时传入Navigator.pushNamed(context, routeName, arguments: data)
。
在 Flutter 中,路由参数用于在不同页面之间传递数据。你可以通过 Navigator.push
方法传递参数,并在目标页面中通过 ModalRoute.of(context)
接收参数。以下是具体的实现步骤:
1. 传递数据
在跳转到新页面时,可以通过 Navigator.push
方法的 arguments
参数传递数据。
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SecondScreen(),
settings: RouteSettings(
arguments: 'Hello from FirstScreen!', // 传递的参数
),
),
);
2. 接收数据
在目标页面中,可以通过 ModalRoute.of(context)
获取传递过来的参数。
class SecondScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
// 接收传递过来的参数
final String message = ModalRoute.of(context)!.settings.arguments as String;
return Scaffold(
appBar: AppBar(
title: Text('Second Screen'),
),
body: Center(
child: Text(message),
),
);
}
}
3. 传递复杂对象
如果你需要传递更复杂的数据(如对象),可以定义一个类,并将该类的实例作为参数传递。
class User {
final String name;
final int age;
User(this.name, this.age);
}
// 传递对象
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SecondScreen(),
settings: RouteSettings(
arguments: User('John', 30), // 传递对象
),
),
);
// 接收对象
class SecondScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
final User user = ModalRoute.of(context)!.settings.arguments as User;
return Scaffold(
appBar: AppBar(
title: Text('Second Screen'),
),
body: Center(
child: Text('Name: ${user.name}, Age: ${user.age}'),
),
);
}
}
通过这种方式,你可以在 Flutter 应用中轻松地传递和接收路由参数。