<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Flutter一個輕量且強(qiáng)大的插件:GetX 之路由管理

          共 2352字,需瀏覽 5分鐘

           ·

          2021-04-01 15:38

          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

          瀏覽 169
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  星空无限AV | 黄色一级电影网站 | 亚洲精品hd | 色欲AV成人 | 黄色成人网站在线观看免费 |