GetX 是 Flutter 上的一个轻量且强大的解决方案:高性能的状态管理、智能的依赖注入和便捷的路由管理。 GetX官方以低功能、高性能、低耦合为基本原则,以轻量级的方式,给开发者提供众多功能。
GetX所能提供的功能包括:状态管理、路由管理、依赖管理,提供如国际化、主题等等更多实用工具,今天我们来看下GetX 之路由管理是怎么样的。
以往在使用路由管理时,都绕不开上下文(context),如
Navigator.pushNamed(context, '/login', arguments: arguments);
或
Navigator.pop(context)
都需要一个context上下文,即使封装也都需要从widget builder传入context。接下来我们看看getX路由是多么方便。
使用getX,首先要引入依赖库,pubspec.yaml加入该库,并拉取依赖到本地。
get: ^3.25.0
然后在用到的地方引入头文件
import 'package:get/get.dart';
void main() {
runApp(
GetMaterialApp(
home: HomePage(),
),
);
}
Get.to(LoginPage());
Get.back();
Get.off(LoginPage());
可以用在启动屏、登录页中。
Get.offAll(LoginPage());
可以发现,上面的push和pop方式,不需要传递context,省下了很多麻烦,这个GetX在路由管理的最大优势,这样增加了路由管理的书写范围,扩大了你代码灵活性,不用担心context在哪,而特意使用builder。
当然,这里路由管理也可以使用别名导航。
如果你习惯使用别名路由导航,GetX也支持
void main() {
// 别名路由配置
runApp(
GetMaterialApp(
initialRoute: '/',
getPages: [
GetPage(name: '/', page: () => OnePage()),
GetPage(
name: '/two', page: () => TwoPage(), transition: Transition.zoom),
],
),
);
}
GetMaterialApp下还有一个属性unknownRoute,可以设置未定义路由的导航,如错误页面。
unknownRoute: GetPage(name: '/notfound', page: () => UnknownRoutePage()),
Get.toNamed("/two");
Get.offNamed("/two");
Get.offAllNamed("/two");
Get.toNamed("/two", arguments: 'www.qson.tech');
在你别名为two的页面通过Get.arguments
即可获取数据。
下一篇带大家了解GetX的响应式状态管理器,更多关于GetX的内容,后续会继续发出,你也可以访问GetX的github地址:https://github.com/jonataslaw/getx