Flutter-14-页面跳转并返回数据

异步请求和等待:

使用async...await就可以实现
_navigateToXiaoJieJie(BuildContext context) async{ //async是启用异步方法

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

}
}

SnackBar的使用

SnackBar是用户操作后,显示提示信息的一个控件,类似Tost,会自动隐藏。SnackBar是以Scaffold的showSnackBar方法来进行显示的。

Scaffold.of(context).showSnackBar(SnackBar(content:Text('$result')));

返回数据的方式

返回数据其实是特别容易的,只要在返回时带第二个参数就可以了。

Navigator.pop(context,'xxxx'); //xxx就是返回的参数

全部代码:

import 'package:flutter/material.dart';

void main(){
runApp(MaterialApp(
title:'页面跳转返回数据',
home:FirstPage()
));
}

class FirstPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar:AppBar(title:Text("找小姐姐要电话")),
body:Center(
child: RouteButton(),
)
);
}
}

//跳转的Button
class RouteButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return RaisedButton(
onPressed:(){
_navigateToXiaoJieJie(context);
},
child: Text('去找小姐姐'),
);
}

_navigateToXiaoJieJie(BuildContext context) async{ //async是启用异步方法

final result = await Navigator.push(//等待
  context, 
  MaterialPageRoute(builder: (context)=> XiaoJieJie())
  );

  Scaffold.of(context).showSnackBar(SnackBar(content:Text('$result')));

}
}

class XiaoJieJie extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar:AppBar(
title:Text('我是小姐姐')
),
body:Center(
child:Column(
children: [
RaisedButton(
child: Text('大长腿小姐姐'),
onPressed: (){
Navigator.pop(context,'大长腿:1511008888');
},
) ,
RaisedButton(
child: Text('小蛮腰小姐姐'),
onPressed: (){
Navigator.pop(context,'大长腿:1511009999');
},
) ,
],
)
) ,
);
}
}

你可能感兴趣的:(Flutter-14-页面跳转并返回数据)