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 ...
随机推荐
- 客制开发tiptop程序随记-pta表结构问题-误删表的恢复
添加字段的语法:alter table tablename add (column datatype [default value][null/not null],-.); 删除字段的语法:alter ...
- NFC and Contactless Technologies
NFC and Contactless Technologies NFC与无接触技术 NFC technology enables simple and safe two-way interactio ...
- eclipse使用技巧和插件
eclipse使用技巧和插件 本篇文章只列举了一部分技巧和插件,并没有包括大家都知道的快捷键和技巧,而是一些不经常用但又很方便的功能. 一,技巧 给Eclipse添加更方便的提示功能:Windows– ...
- [ABC308G] Minimum Xor Pair Query 题解
Minimum Xor Pair Query 题目大意 维护一个序列,支持动态插入,删除,查询最小异或对. 思路分析 看到查询最小异或对首先想到 01Trie,但 01Trie 不支持删除,考虑暴力套 ...
- db-cdc之mysql 深入了解并使用binlog
1.什么是binlog? 2.binlog可以用来干什么? 3.怎么样使用binlog? binlog是记录所有数据库表结构变更(例如CREATE.ALTER TABLE-)以及表数据修改(INSER ...
- 虹科技术|Redis企业版数据库:实现金融服务IT现代化!
随着新冠肺炎和技术创新推动企业进入新的数字时代,金融行业客户现在需要一种快速.简单且根据需求量身定制的数字银行体验.这就需要银行进行转型,以提供更加数字化的服务,但无论战略.方法,还是满足消费者极高期 ...
- 如何使用DALL-E 3
如何使用 DALL-E 3:OpenAI 图像生成指南 DALL-E 3 是 OpenAI 图像生成器的高级版本,它可以理解自然语言提示来创建详细图像. 它克服了以前版本的方形图像限制,现在支持各种宽 ...
- centos7安装node-v18版本真是难呢
背景 背景就是上一篇文章提到的,部署gitbook这个文档中心的话,是需要先安装node,然后,如果你的node版本过高的话,一般会报错,此时,网上很多文章就是降node版本解决,但其实用高版本也是有 ...
- shell脚本之规范与变量
shell编程规范与变量 名词简述 面向过程语言 按照顺序执行程序 第一件事干什么->第二件事干什么......(C,shell...) 面向对象语言 把程序看成一个整体(java,python ...
- 练习回—编译安装nginx
练习回 练习,编译安装nginx. 1.yum安装依赖环境 yum -y install pcre-devel zlib-devel gcc gcc-c++ make 2."下载" ...