首页 > 其他分享 >Flutter之GetX之路由管理

Flutter之GetX之路由管理

时间:2023-04-05 14:24:41浏览次数:43  
标签:settings Get NextScreen GetX context Flutter 路由 页面

GetX之路由管理

GetX有一套完整的路由管理,并且不需要context上下文,API非常简洁

直接导航

导航到新的页面

Get.to(NextScreen());

返回,此方法可以用于关闭SnackBars、Dialogs、BottomSheets或任何你通常会用Navigator.pop(context)关闭的东西。

Get.back();

进入下一个页面并将上一个页面移除

Get.off(NextScreen());

进入下一个页面并将之前所有的路由移除

Get.offAll(NextScreen());

带参数

从A页面到B页面

Get.to(B(), arguments: "data")

在B页面接收参数

final data = Get.parameters

回传数据到A页面

Get.back(result: "result")

在A页面接收从B页面传回来的数据,因为Get.to本身是一个Future,可以通过await或者.then方法获取

final res = await Get.to(const WNEmptyPage());

或者

Get.to(const WNEmptyPage())?.then((value) { print(value); });

和原生API的对比


// 默认的Flutter导航
Navigator.of(context).push(
  context,
  MaterialPageRoute(
    builder: (BuildContext context) {
      return HomePage();
    },
  ),
);

// 使用Flutter语法获得,而不需要context。
navigator.push(
  MaterialPageRoute(
    builder: (_) {
      return HomePage();
    },
  ),
);

// get语法 (这要好得多)
Get.to(HomePage());

别名导航

可以创建一个路由表,给每一个页面创建一个别名

通过在GetMaterialAppgetPage添加

void main() {
  runApp(
    GetMaterialApp(
      initialRoute: '/',
      getPages: [
        GetPage(name: 'homePage', page: () => MyHomePage()),
      ],
    )
  );
}

也可以在onGenerateRoute中定义

onGenerateRoute: (settings) {
              final args = settings.arguments;
              switch (settings.name) {
                case "homePage":
                  return CupertinoPageRoute(
                      builder: (BuildContext context) => MyHomePage(),
                      settings: settings);
              }
            }           

此回调会带有一个setting参数,可以在里面获取对应路由的别名,传进来的参数等

使用就直接在之前的API上加上Named后缀

Get.to对应
Get.toNamed("/NextScreen");

Get.off对应
Get.offNamed("/NextScreen");

Get.offAll对应
Get.offAllNamed("/NextScreen");

如果找不到对应别名的路由,可能没有在路由表中没有注册,就可以在GetMaterialApp定义一个unknownPage

unknownRoute: GetPage(name: 'unknownPage', page: () => const UnknownPage())

或者是通过回调的方式

onUnknownRoute: (settings) {
    return CupertinoPageRoute(
                   builder: (BuildContext context) => const UnknownPage(),
                      settings: settings); 
}

传输数据也是差不多的

Get.toNamed("/NextScreen", arguments: 'Get is the best');

print(Get.arguments);
//Get is the best

标签:settings,Get,NextScreen,GetX,context,Flutter,路由,页面
From: https://www.cnblogs.com/r1cardo/p/17289362.html

相关文章

  • Flutter之GetX之GetConnect
    Flutter之GetX之GetConnectGetConnect可以便捷的通过http或websockets进行前后台通信。默认配置能轻松的通过extendGetConnect就能使用GET/POST/PUT/DELETE/SOCKET方法与RestAPI或websockets通信。classUserProviderextendsGetConnect{//GetrequestFuture<Respo......
  • Flutter之GetX之国际化
    Flutter之GetX之国际化在GetMaterialApp中设置GetMaterialApp(locale:Get.deviceLocale,translations:Messages(),fallbackLocale:constLocale("en_US"),)其中设置的locale为用Get.deviceLocale设置的设备语言translations设置的为我们继承Translation......
  • Flutter之GetX之GetBuilder
    Flutter之GetX之GetBuilderGetX是Flutter的一个非常强力的三方库,包含了非常多的功能,比如状态管理、路由管理、国际化、路由中间件、主题、数据库等等今天简单介绍一下状态管理中的GetBuilder实现有关状态管理当你的Flutter应用的状态发生改变时(例如,用户在设置界面中点击......
  • Flutter之GetX之Obs
    Flutter之GetX之Obs除了之前说过的GetBuilder,GetX还有其他的状态管理方式一个后缀就可以把一个变量变得可观察,变量每次改变的时候,使用它的小部件就会被更新varname='周杰伦'.obs;然后通过Obx或者GetX包裹并使用响应式变量的控件,在变量改变的时候就会被更新Obx(()=>......
  • 认识路由器
    什么是路由器? 1、路由器是网络上的选经器,为IP数据选择传送的路径;2、与交换机不同,路由器的每个端口连接不同的物理网络。 路由器提供哪些接口? 1、路由器上可以提供不同种类、不同协议的接口,用于连接不同不同接口的网络设备;2、可以提供以太网接口、串行接口等多种接口。3、以太网......
  • 单臂路由实现VLAN间通信
    VLAN间通信 1、一个VLAN的单播、组播、广播不会进入另一个VLAN;2、VLAN之间的通信需要借助于三层的路由功能来实现。 不合理的直连路由 1、与多少个VLAN连接,路由器就需要提供多少个以太网接口,每个接口连接一个VLAN;2、连接哪个VLAN,该路由器接口就配置这个VLAN的一个IP地址,作为这......
  • 实验一 华为路由交换技术基本配置
    实验一华为路由交换技术基本配置实验目的:掌握进入进入路由器、交换机各种模式配置登陆console口密码配置系统视图密码保存、删除配置等基本命令实验拓扑:实验步骤:一、路由器的基本配置1.双击PC1,打开串口,连接路由器AR1左侧为刚进入路由器时的默认模式--用户模式(用......
  • flask框架01 flask与pythonweb框架介绍 flask快速使用 登录显示用户信息案列 配置
    今日内容详细目录今日内容详细1Flask和pythonweb框架介绍1.1flask介绍2flask快速使用3登录,显示用户信息小案例3.1login.html3.2home.html3.3detail.html3.4py文件4配置文件方式5路由系统5.1转换器1Flask和pythonweb框架介绍pythonweb框架的本质都一样1.同步框架......
  • 三层聚合(路由)
    注意事项三层接口不能捆绑到二层聚合接口R1配置[R1-Eth-Trunk1]undoportswitch[R1]intEth-Trunk1[R1-GigabitEthernet0/0/0]eth-trunk1[R1-GigabitEthernet0/0/1]eth-trunk1[R1]displayipinterfacebrief*down:administrativelydown^down:standby(l):loopback......
  • 用户路由及按钮权限管理
    需求背景:当我们在做后台管理系统的时候,都会涉及到系统的菜单树如何动态显示的问题。目前基本上都是RBAC的解决方案,即Role-Based Access Control,权限与角色相关联,给用户通设置适当角色的而得到角色的权限 路由权限方案:1、前端路由根据角色控制页面权限:即为每个页面设置允许......