Flutter Getx 路由管理
Get.to()实现普通路由跳转
一、设置应用程序入口
import 'package:flutter/material.dart';
import 'package:get/get.dart'; void main() {
runApp(MyApp());
} class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return GetMaterialApp( //重点
title: "GetX",
home: Scaffold(
appBar: AppBar(
title: Text("GetX Title"),
),
),
);
}
}
二、调用to方法切换路由
ElevatedButton(
onPressed: () async {
Get.to(KidPage()); //页面跳转
// Get.to("/page");
},
child: const Text("GetX中路由跳转")
)
调用Get.toNamed()跳转到命名路由
Navigator.pushNamed(context, "/login");
Get.toNamed("/login");
Get.toNamed("/shop",arguments: {
"id":20
});
Get.back(); 返回到上一级页面
Navigator.of(context).pop();
Get.back();
Get.offAll(); 返回到根
Navigator.of(context).pushAndRemoveUntil(
MaterialPageRoute(builder: (BuildContext context) {
return const Tabs(index: 4);
})
, (route) => false);
Get.offAll( const Tabs(index: 4));
Get.off(NextScreen());
Get.off(NextScreen());
Flutter Getx 配置路由以及动画
GetX可以使用之前命名路由的 onGenerateRoute 也可以使用 getPages 来配置路由;
一、defaultTransition可以配置默认动画
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return GetMaterialApp(
debugShowCheckedModeBanner: false, //去除debug图标
theme: ThemeData(primarySwatch: Colors.red),
initialRoute: "/",
defaultTransition: Transition.rightToLeftWithFade, //默认动画效果
getPages: [ //配置路由
GetPage(name: "/", page: () => const MypageGet()),
GetPage(name: "/MyHomePage", page: () => const MyHomePage()),
],
);
}
}
二、GetPage 可以配置动态路由
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return GetMaterialApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
appBarTheme: const AppBarTheme(
centerTitle: true,
)),
initialRoute: "/",
defaultTransition: Transition.rightToLeftWithFade, //页面跳转动画
getPages: [ //配置路由
GetPage(name: "/", page: () => const Tabs()),
GetPage(name: "/login", page: () => const LoginPage()),
GetPage(
name: "/registerFirst",
page: () => const RegisterFirstPage(),
transition: Transition.rightToLeft), //页面跳转动画
GetPage(
name: "/registerSecond", page: () => const RegisterSecondPage()),
GetPage(name: "/registerThird", page: () => const RegisterThirdPage()),
GetPage(name: "/shop", page: () => const ShopPage()),
],
);
}
}
三、Getx 路由跳转传值以及接受数据
getPages: [
...
GetPage(name: "/shop", page: () => const ShopPage()),
...
],
Get.toNamed("/shop",arguments: {
"id":20
});
print(Get.arguments);
print(Get.arguments['id']);
Flutter Getx 路由抽离
新建routes.dart
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:xcx_flutter/page/getX/getx.dart';
import 'package:xcx_flutter/page/homepage.dart'; class APPage {
static final routes = [
GetPage(name: "/", page: () => const MypageGet()),
GetPage(name: "/MyHomePage", page: () => const MyHomePage()),
];
}
入口
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return GetMaterialApp(
debugShowCheckedModeBanner: false, //去除debug图标
theme: ThemeData(primarySwatch: Colors.red),
initialRoute: "/",
getPages: APPage.routes,
// home: MypageGet(),
);
}
}
Flutter Getx 中间件配置
新建shopMiddleware.dart
import 'package:flutter/cupertino.dart';
import 'package:get/get.dart';
class ShopMiddleWare extends GetMiddleware {
@override
// 优先级越低越先执行
int? get priority => -1;
@override
RouteSettings redirect(String ? route){
print("——————————中间件打印————————————");
print(route);
return const RouteSettings(name: '/KidPage');
}
}
GetPage配置路由
class APPage {
static final routes = [
GetPage(name: "/", page: () => const MypageGet()),
GetPage(
name: "/MyHomePage",
page: () => const MyHomePage(),
middlewares: [ShopMiddleWare()]), //中间件使用
// KidPage
GetPage(name: "/KidPage", page: () => const KidPage()),
];
}
Flutter Getx 路由管理的更多相关文章
- Flutter 应用入门:路由管理
路由(Route)在移动开发中通常指页面(Page),这跟web开发中单页应用的Route概念意义是相同的,Route在Android中通常指一个Activity,在iOS中指一个ViewContro ...
- 6.2.初识Flutter应用之路由管理
路由管理 路由(Route)在移动开发中通常指页面(Page),这跟web开发中单页应用的Route概念意义是相同的,Route在Android中通常指一个Activity,在iOS中指一个ViewC ...
- flutter最简单轻量便捷的路由管理方案NavRouter
大家好,我是CrazyQ1,今天给大家推荐一个路由管理方案,用的非常不错的,叫nav_router. 项目地址是:https://github.com/fluttercandies/nav_route ...
- Flutter GetX使用---简洁的魅力!
前言 使用Bloc的时候,有一个让我至今为止十分在意的问题,无法真正的跨页面交互!在反复的查阅官方文档后,使用一个全局Bloc的方式,实现了"伪"跨页面交互,详细可查看:flutt ...
- 【源码篇】Flutter GetX深度剖析 | 我们终将走出自己的路(万字图文)
前言 人心中的成见是一座大山,任你怎么努力都休想搬动. 这是电影<哪吒>里申公豹说的一句话,也是贯彻整部电影的一个主题:或许这句话引起了太多人的共鸣:35岁职场危机,大厂卡本科学历,无房无 ...
- WebApp中的页面生命周期及路由管理
最近切换到一个新项目,使用的技术栈是Require+Backbone,鉴于对鞋厂webapp框架的了解,发现这个新项目有些缺陷,主要是单纯依赖Backbone造成的,也就是Backbone的好和坏都在 ...
- Springcloud Gateway 路由管理
Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开 ...
- (转)flutter 新状态管理方案 Provide (一)-使用
flutter 新状态管理方案 Provide (一)-使用 版权声明:本文为博主原创文章,基于CC4.0协议,首发于https://kikt.top ,同步发于csdn,转载必须注明出处! ...
- vue路由管理-保留滚动位置功能、按需加载模块名自定义
路由管理:保留滚动位置 其实现与组件的keep-alive相关,仅设置了keep-aive的页面,实施保留回退位置能力. keep-alive介绍 作用 把切换出去的组件保留在内存中,可以保留它的状态 ...
- 谈谈后台服务的RPC和路由管理
版权声明:本文由廖念波原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/147 来源:腾云阁 https://www.qclo ...
随机推荐
- 重温dp——最长上升公共子序列
一道经典的dp了 题目描述 给出 1,2,-,n 的两个排列 P1 和 P2 ,求它们的最长公共子序列. 输入格式 第一行是一个数 n. 接下来两行,每行为 n 个数,为自然数 1,2,-,n 的一 ...
- 【分段传输】c#使用IAsyncEnumerable实现流式分段传输
引言 在使用SSE的时候,前端可以实现流式传输,但是有个问题就是这是一个独占的连接,相当于如果你不手动关闭连接,就会一直请求,一直连接调用接口,而且发送的数据格式也是按照定义好的协议来,而使用c#自带 ...
- Nginx-自动漂移VIP
自动漂移VIP-1 #!/bin/bash #2020-03-16 14:24 #auto change nginx vip.sh #By Precious ##################### ...
- dijkstra算法(朴素 + 堆优化)
dijkstra算法的大题思路是通过n - 1次迭代,每次迭代把一个点距汇点的最短路确定,当n - 1次循环过后所有点的最短路都已经确定 注意:dijkstra算法只适用于没有负权边的单源最短路 以下 ...
- C#/.NET/.NET Core优秀项目和框架2023年10月简报
前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(公众号每周至少推荐两个优秀的项目和框架当然节假日除外),公众号推文有项目和框架的介绍.功能特点以及部分截图等(打不开或 ...
- 记录一下我的ctf比赛的web题目
Web之getshell: 具体代码如下 <?php highlight_file(__FILE__); error_reporting(0); echo "<h1>WEL ...
- 解决报错Invalid bound statement (not found)
解决报错Invalid bound statement (not found) 问题描述: 在玩mybatis-plus的时候,在测试类写了一个测试批量插入的方法,结果就报错: 它的意思是 无效的跳转 ...
- 大立科技DM63红外相机SDK开发Ⅰ-连接仪器
1.开发准备 为了方便发开,需要下载Visual Studio,本开发基于Visual Studio 2022,使用C++. 通过Visual Studio创建好项目后,将DMSDK V1.16.3内 ...
- java把数据批量插入iotdb
package com.xlkh.kafka; import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson ...
- 在路上---学习篇(一)Python 数据结构和算法 (5)二分查找、二叉树遍历
独白: 利用算法进行查找指定元素,最近学习二分查找和二叉树遍历.二分查找前提是在有序中进行查找,二叉树引入了树的概念.树的概念其中有许多小知识点,也是一种新的数据结构.还是之前的感悟,需了解其本质才会 ...