Flutter 使用GetX時(shí)如何進(jìn)行路由攔截

目錄

問題描述

需要對路由進(jìn)行攔截艰毒,比方說在跳轉(zhuǎn)某些頁面之前必須先登錄了才可以摩梧,所以需要點(diǎn)擊的時(shí)候跳轉(zhuǎn)登錄頁瓮孙,而這里我使用了GetX管理路由,想了一段時(shí)間才實(shí)現(xiàn)了路由的攔截

問題解決

由于我是使用的GetX(https://pub.dev/packages/get)來進(jìn)行路由管理的柑船,因此我使用的GetMaterialApp

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  late SPUtil spUtils;
  @override
  void initState() {
    SPUtil.getInstance().then((value) =>
      spUtils = value
    );
  }
  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Demo',
      theme: ThemeData(
          primarySwatch: Colors.blue,
          iconTheme: IconThemeData(color: Colors.black) //用于Icon顏色
      ),
      //注冊路由表
      initialRoute: PageNameData.PAGE_MAIN,
      routingCallback: (routing) {
        if(routing?.current != '/'){
          // Get.removeRoute(routing!.route!);
        }
      },
      getPages: [
        GetPage(
            name: PageNameData.PAGE_MAIN,
            page: () => getPage(PageNameData.PAGE_MAIN),
            transition: PageStyleData.transition
        ),
        GetPage(
            name: PageNameData.PAGE_LOGIN,
            page: ()=>getPage(PageNameData.PAGE_LOGIN),
            transition: PageStyleData.transition
        ),
        GetPage(
            name: PageNameData.PAGE_DRVICEINFO,
            page: () => getPage(PageNameData.PAGE_DRVICEINFO),
            transition: PageStyleData.transition
        ),
        GetPage(
            name: PageNameData.PAGE_ADDDRVICE,
            page: () => getPage(PageNameData.PAGE_ADDDRVICE),
            transition: PageStyleData.transition
        ),
        GetPage(
            name: PageNameData.PAGE_ADDDEVICESCANPAGE,
            page: () => getPage(PageNameData.PAGE_ADDDEVICESCANPAGE),
            transition: PageStyleData.transition
        ),
        GetPage(
            name: PageNameData.PAGE_SCANQRCODEPAGE,
            page: () => getPage(PageNameData.PAGE_SCANQRCODEPAGE),
            transition: PageStyleData.transition
        ),
      ],
    );
  }

  Widget getPage(String pageName){
    //沒有登錄,跳轉(zhuǎn)登錄頁面
    if(spUtils.getToken(defaultValue: "") == ""){
      return LoginPage();
    }

    if(pageName == PageNameData.PAGE_ADDDRVICE){
      return AddDevicePage();
    }else if(pageName == PageNameData.PAGE_DRVICEINFO){
      return DeviceInfoPage();
    }else if(pageName == PageNameData.PAGE_LOGIN){
      return LoginPage();
    }else if(pageName == PageNameData.PAGE_ADDDEVICESCANPAGE){
      return AddDeviceScanPage();
    }else if(pageName == PageNameData.PAGE_SCANQRCODEPAGE){
      return ScanQrCodePage();
    }else if(pageName == PageNameData.PAGE_MAIN){
      return MainPage();
    }

    return MainPage();

  }
}

GetX中使用getPages來配置路由泼各,這里我就通過修改GetPage返回page的方法來實(shí)現(xiàn)路由的攔截

Widget getPage(String pageName){
    //沒有登錄(Token為空)鞍时,跳轉(zhuǎn)登錄頁面
    if(spUtils.getToken(defaultValue: "") == ""){
      return LoginPage();
    }

    if(pageName == PageNameData.PAGE_ADDDRVICE){
      return AddDevicePage();
    }else if(pageName == PageNameData.PAGE_DRVICEINFO){
      return DeviceInfoPage();
    }else if(pageName == PageNameData.PAGE_LOGIN){
      return LoginPage();
    }else if(pageName == PageNameData.PAGE_ADDDEVICESCANPAGE){
      return AddDeviceScanPage();
    }else if(pageName == PageNameData.PAGE_SCANQRCODEPAGE){
      return ScanQrCodePage();
    }else if(pageName == PageNameData.PAGE_MAIN){
      return MainPage();
    }

    return MainPage();

  }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市扣蜻,隨后出現(xiàn)的幾起案子逆巍,更是在濱河造成了極大的恐慌,老刑警劉巖莽使,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锐极,死亡現(xiàn)場離奇詭異,居然都是意外死亡芳肌,警方通過查閱死者的電腦和手機(jī)溪烤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門味咳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人檬嘀,你說我怎么就攤上這事槽驶。” “怎么了鸳兽?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵掂铐,是天一觀的道長。 經(jīng)常有香客問我揍异,道長全陨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任衷掷,我火速辦了婚禮辱姨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘戚嗅。我一直安慰自己雨涛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布懦胞。 她就那樣靜靜地躺著替久,像睡著了一般。 火紅的嫁衣襯著肌膚如雪躏尉。 梳的紋絲不亂的頭發(fā)上蚯根,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機(jī)與錄音胀糜,去河邊找鬼颅拦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛教藻,可吹牛的內(nèi)容都是我干的距帅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼怖竭,長吁一口氣:“原來是場噩夢啊……” “哼锥债!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起痊臭,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤哮肚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后广匙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體允趟,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年鸦致,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了潮剪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涣楷。...
    茶點(diǎn)故事閱讀 39,703評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖抗碰,靈堂內(nèi)的尸體忽然破棺而出狮斗,到底是詐尸還是另有隱情,我是刑警寧澤弧蝇,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布碳褒,位于F島的核電站,受9級(jí)特大地震影響看疗,放射性物質(zhì)發(fā)生泄漏沙峻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一两芳、第九天 我趴在偏房一處隱蔽的房頂上張望摔寨。 院中可真熱鬧,春花似錦怖辆、人聲如沸是复。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽佑笋。三九已至翼闹,卻和暖如春斑鼻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背猎荠。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工坚弱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人关摇。 一個(gè)月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓荒叶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親输虱。 傳聞我的和親對象是個(gè)殘疾皇子些楣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容