方法一:通过构造函数传递数据
- 在PageB中定义接收数据的变量和构造函数
class PageB extends StatelessWidget {
final String data;
PageB({required this.data});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('PageB')),
body: Center(
child: Text('Received data: $data'),
),
);
}
}
- 在PageA中通过
Navigator.push
跳转到PageB并传递数据
class PageA extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('PageA')),
body: Center(
child: ElevatedButton(
onPressed: () {
String dataToSend = 'Hello from PageA';
Navigator.push(
context,
MaterialPageRoute(builder: (context) => PageB(data: dataToSend)),
);
},
child: Text('Go to PageB'),
),
),
);
}
}
方法二:使用Navigator.pushNamed
并通过ModalRoute.of(context)?.settings.arguments
获取数据
- 配置路由并在PageB中获取数据
void main() {
runApp(
MaterialApp(
initialRoute: '/',
routes: {
'/': (context) => PageA(),
'/pageB': (context) {
final arguments = ModalRoute.of(context)?.settings.arguments as String?;
return PageB(data: arguments ?? '');
},
},
),
);
}
class PageB extends StatelessWidget {
final String data;
PageB({required this.data});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('PageB')),
body: Center(
child: Text('Received data: $data'),
),
);
}
}
- 在PageA中通过
Navigator.pushNamed
跳转到PageB并传递数据
class PageA extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('PageA')),
body: Center(
child: ElevatedButton(
onPressed: () {
String dataToSend = 'Hello from PageA';
Navigator.pushNamed(context, '/pageB', arguments: dataToSend);
},
child: Text('Go to PageB'),
),
),
);
}
}