_navigatorToSecondPage(BuildContext context) async { //异步的方法接受第二个页面关闭时返回的数据 final result = await Navigator.push( context, MaterialPageRoute( builder: (context) => SecondPage(), ) ); //将数据在底部弹出 Scaffold.of(context).showSnackBar(SnackBar(content: Text('$result'),)); }在第二个页面关闭时,将数据同时返回,这样第一个页面就能接收到:
Navigator.pop(context,'hi google');下面时完整的代码:
import 'package:flutter/material.dart'; void main() { runApp(MaterialApp( title: '页面返回传递数据示例', home: FirstScreen(), )); } class FirstScreen extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('第一个页面'), ), body: RouteButton(), ); } } class RouteButton extends StatelessWidget { @override Widget build(BuildContext context) { return RaisedButton( onPressed: () { _navigatorToSecondPage(context); }, child: Text('跳转到第二个页面'), ); } _navigatorToSecondPage(BuildContext context) async { //异步的方法接受第二个页面关闭时返回的数据 final result = await Navigator.push( context, MaterialPageRoute( builder: (context) => SecondPage(), ) ); //将数据在底部弹出 Scaffold.of(context).showSnackBar(SnackBar(content: Text('$result'),)); } } class SecondPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('第二个页面'), ), body:Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Padding( padding: EdgeInsets.all(8.0), child: RaisedButton( onPressed: (){ //返回,并发送数据给上一页 Navigator.pop(context,'hi google'); }, child: Text('hi google'), ), ), Padding( padding: EdgeInsets.all(8.0), child: RaisedButton( onPressed: (){ //返回,并发送数据给上一页 Navigator.pop(context,'hi flutter'); }, child: Text('hi flutter'), ), ) ], ), ) ); } }
部分素材资源来源网站,本站提供免费下载,如有侵权请联系站长马上删除!