flutter 基本路由管理

注册路由

//① 引入文件
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"));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值