代码:

import 'package:flutter/material.dart';

void main(List<String> args) {
runApp(MaterialApp(
title: '导航返回数据',
home: FirstPage(),
));
}

class FirstPage extends StatelessWidget{
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('首页'),),
body: Center(
child: RouteButton(),
),
);
}
}
class RouteButton extends StatelessWidget {

@override
Widget build(BuildContext context) {
return RaisedButton(
child: Text('去旅行'),
onPressed: (){
_goToChooseTripLine(context);
},
);
}
 
_goToChooseTripLine(BuildContext context) async{

final result = await Navigator.push(context, MaterialPageRoute(
builder: (context) => Trip()
));
Scaffold.of(context).showSnackBar(SnackBar(content: Text('$result')));
}
 
}


class Trip extends StatelessWidget {
 
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('旅行路线'),),
body: Center(
child: Column(
children: <Widget>[
RaisedButton(
child: Text('北京到西藏'),
onPressed: (){
Navigator.pop(context,'北京到西藏 4天3晚 5000元');
},
),

RaisedButton(
child: Text('北京到上海'),
onPressed: (){
Navigator.pop(context,'北京到上海 5天4晚 4000元');
},
)
],
),
)
);
}
}
 
总结:

//导航带回数据

//异步请求

_变量名(BuildContext context) async{

异步等待导航栏压栈的结果—类似于OC的block

final 变量2= await Navigator.push(context,MaterialPageRoute(builder:(context)=>类名());

//toast

scaffold.of(context).showSnackBar(SnackBar(content:Text(‘$变量2’)))

}

//类似于函数 不过这个函数写成了一个变量

onPressed:(){

_变量名(context);

}

onPressed:(){

Navigator.pop(context,’xxxxx’)//xxxx就是导航栏需要传回去的数据

}