在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天、每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,不妨来瞅瞅码农的轨迹。
我在 2020年时,总结过 Bloc 、Provider、Stream 跨组件通信的使用方式,大家有兴趣可以来瞅瞅
在2021年,Provider扩展了5.0,使用起来更方便,于是我重新录制制作了一期教程,当然大家也可以关注一下公众号,视频教程是首先在公众号中免费播出,每日都会有技术类的内容发布。
GetX 使用前的准备
首先你需要添加依赖
get: ^4.1.3
然后在使用时需要导包
import 'package:get/get.dart';
GetX使用的第一步
第一步就是程序入口处的 MaterialApp 替换为 GetMaterialApp,代码如下:
import 'package:flutter/material.dart';
import 'package:get/get.dart';
//程序入口
void main() {
runApp(RootApp());
}
class RootApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
//使用 GetX第一步
return GetMaterialApp(
theme: ThemeData(
primarySwatch: Colors.blue,
),
//静态路径
routes: {
"/testa": (context) => TestAPage(),
},
//默认显示的首页页面
home: MyHomePage(),
);
}
}
动态路由
默认情况下使用 Navigator 方式来打开页面 TestAPage ,需要构建一个 MaterialPageRoute 路由,代码如下:
//动态 路由的方式
Navigator.of(context).push(
new MaterialPageRoute(
builder: (BuildContext context) {
return new TestAPage();
},
),
).then((value) {
//获取上一个页面的数据
});
当你使用 GetX时,你可以这样来写
Get.to(new TestAPage());
当然如果你需要获取 页面 TestAPage 的回传参数时,你可以这样来写
//Gex 动态的方式 获取数据
void fun5() async {
//动态 态的方式 并获取A页面的返回值
var value = await Get.to(new TestAPage());
print("A页面的返回值 $value");
}
看到这样的代码后,你会使用什么 ???
静态路由
默认情况下使用 Navigator 方式以静态路由来打开页面 ,首先你需要在程序入口处的 MaterialApp 中的routes 中配置路由规则,如这里配置的
class RootApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
//使用 GetX第一步
return GetMaterialApp(
theme: ThemeData(
primarySwatch: Colors.blue,
),
//静态路径
routes: {
"/testa": (context) => TestAPage(),
},
//默认显示的首页页面
home: MyHomePage(),
);
}
}
然后使用Navigator 方式代码如下
Navigator.of(context).pushNamed("/testa");
使用 GetX 代码如下
Get.toNamed("/tefun4");
替换当前页面
使用 Navigator 方式
Navigator.of(context).pushReplacement(
new MaterialPageRoute(
builder: (BuildContext context) {
return new TestAPage();
},
),
);
使用 GetX 方式
Get.off(new TestAPage());
打开新页面 关闭之前的所有页面
这种应用场景如需要登录使用的APP,退出登录时,关闭所有的页面,然后打开登录页面。
Navigator 方式
Navigator.of(context).pushAndRemoveUntil(
new MaterialPageRoute(
builder: (BuildContext context) {
return new TestAPage();
},
),
(Route route) => false,
);
GetX 方式
Get.offAll(new TestAPage());
完毕
不局限于思维,不局限语言限制,才是编程的最高境界。
以小编的性格,肯定是要录制一套视频的,随后会上传
有兴趣 你可以关注一下