目录
注册路由
//① 引入文件
import 'package:myapp/pages/userinfo/main.dart';
import 'package:myapp/pages/userinfo/set_name.dart';
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
// home: UserInfo(),
title: 'Title',
initialRoute: '/',
//②注册路由
routes: {
'/': (BuildContext context) => UserInfo(),
'/SetPhone': (BuildContext context) => SetPhonePage()},
);
}
}
使用路由跳转(A页面)
//A页面使用
Navigator.of(context).pushNamed('/SetName'));
使用路由带参跳转(A页面)
//A页面使用
Navigator.of(context).pushNamed('/SetName',arguments: {"phone": phone},));
获取路由返回参数 (A页面)
Navigator.of(context).pushNamed('/SetName').then(
(value) => setState(() => username = value),
);
//then里面value 是通过路由返回的参数
获取路由传递的参数(B页面)
//顶部定义一个参数,方便B页面其他widget使用
Map arguments;
int phone;
class SetPhonePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
arguments = ModalRoute.of(context).settings.arguments;
phone = arguments["phone"];
return child:Text(phone);
}
}
通过路由返回参数 (B页面)
Navigator.of(context).pop(); //不带参
Navigator.of(context).pop(value); //带参 value为返回值
移除所有页面跳到指定页面(适用于退出登录)
Navigator.of(context).pushNamedAndRemoveUntil("/getAuthCode", ModalRoute.withName("/getAuthCode"));
任意界面返回应用首页。
路由作用:移除 [/homePage] 除外其它所有界面。
Navigator.of(context).popUntil(ModalRoute.withName("/homePage"));