Flutter一個輕量且強(qiáng)大的插件:GetX 之路由管理
GetX 是 Flutter 上的一個輕量且強(qiáng)大的解決方案:高性能的狀態(tài)管理、智能的依賴注入和便捷的路由管理。
GetX官方以低功能、高性能、低耦合為基本原則,以輕量級的方式,給開發(fā)者提供眾多功能。

GetX所能提供的功能包括:狀態(tài)管理、路由管理、依賴管理,提供如國際化、主題等等更多實用工具,今天我們來看下GetX 之路由管理是怎么樣的。
以往在使用路由管理時,都繞不開上下文(context),如
Navigator.pushNamed(context, '/login', arguments: arguments);
或
Navigator.pop(context)
都需要一個context上下文,即使封裝也都需要從widget builder傳入context。接下來我們看看getX路由是多么方便。
GetX依賴
使用getX,首先要引入依賴庫,pubspec.yaml加入該庫,并拉取依賴到本地。
get: ^3.25.0
然后在用到的地方引入頭文件
import 'package:get/get.dart';
GetX路由管理
普通路由導(dǎo)航
在你的MaterialApp前加上 "Get",把它變成GetMaterialApp。
void main() {
runApp(
GetMaterialApp(
home: HomePage(),
),
);
}
導(dǎo)航到新頁面
Get.to(LoginPage());
pop 返回、關(guān)閉snackbars, dialogs, bottomsheets
Get.back();
push到下一頁,但禁止從下一頁返回過來
Get.off(LoginPage());
可以用在啟動屏、登錄頁中。
push到下一頁,并且從棧內(nèi)移除以前的所有路由
Get.offAll(LoginPage());
可以發(fā)現(xiàn),上面的push和pop方式,不需要傳遞context,省下了很多麻煩,這個GetX在路由管理的最大優(yōu)勢,這樣增加了路由管理的書寫范圍,擴(kuò)大了你代碼靈活性,不用擔(dān)心context在哪,而特意使用builder。
當(dāng)然,這里路由管理也可以使用別名導(dǎo)航。
別名路由導(dǎo)航
如果你習(xí)慣使用別名路由導(dǎo)航,GetX也支持
要使用別名路由導(dǎo)航,需要定義路由,在main函數(shù)內(nèi)使用GetMaterialApp,并設(shè)置相關(guān)屬性。
void main() {
// 別名路由配置
runApp(
GetMaterialApp(
initialRoute: '/',
getPages: [
GetPage(name: '/', page: () => OnePage()),
GetPage(
name: '/two', page: () => TwoPage(), transition: Transition.zoom),
],
),
);
}
GetMaterialApp下還有一個屬性unknownRoute,可以設(shè)置未定義路由的導(dǎo)航,如錯誤頁面。
unknownRoute: GetPage(name: '/notfound', page: () => UnknownRoutePage()),
push到下一頁
Get.toNamed("/two");
push下一頁并移除前一個頁面。
Get.offNamed("/two");
push下一頁并移除所有之前的頁面
Get.offAllNamed("/two");
push時攜帶數(shù)據(jù) 主要在后面加上你要傳遞的數(shù)據(jù)即可
Get.toNamed("/two", arguments: 'www.qson.tech');
在你別名為two的頁面通過Get.arguments即可獲取數(shù)據(jù)。
下一篇帶大家了解GetX的響應(yīng)式狀態(tài)管理器,更多關(guān)于GetX的內(nèi)容,后續(xù)會繼續(xù)發(fā)出,你也可以訪問GetX的github地址:https://github.com/jonataslaw/getx
