亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

Flutter 局部路由實(shí)現(xiàn)

golden_hamster / 1714人閱讀

摘要:是借鑒的開(kāi)發(fā)思想實(shí)現(xiàn)的,在子組件的插槽上,有,有。當(dāng)然也有類(lèi)似的,那就是,不過(guò)是以的形式實(shí)現(xiàn)像。的使用無(wú)非個(gè)屬性初始路由匹配路由在實(shí)現(xiàn)層面首先的高度為。最后執(zhí)行尋找路由順序是,這個(gè)和的是類(lèi)似的。

Flutter是借鑒React的開(kāi)發(fā)思想實(shí)現(xiàn)的,在子組件的插槽上,React有this.props.children,Vue有。

當(dāng)然Flutter也有類(lèi)似的Widget,那就是Navigator,不過(guò)是以router的形式實(shí)現(xiàn)(像???)。

Navigator的使用無(wú)非3個(gè)屬性

initialRoute: 初始路由

onGenerateRoute: 匹配路由

onUnknownRoute: 404

在實(shí)現(xiàn)層面

首先:Navigator的高度為infinity。如果直接父級(jí)非最上級(jí)也是infinity會(huì)產(chǎn)生異常,例如,Scaffold -> Column -> Navigator。所以:Navigator需要附件限制高度,例如:Scaffold -> Column -> Container(height: 300) -> Navigator

然后:在onGenerateRoute屬性中,使用第一個(gè)BuildContext參數(shù),能夠在MaterialApp未設(shè)置route的情況下使用Navigator.pushNamed(nContext, "/efg");跳到對(duì)應(yīng)的子路由中。

最后:Navigator執(zhí)行尋找路由順序是 initialRoute -> onGenerateRoute -> onUnknownRoute,這個(gè)和React的Route是類(lèi)似的。

最后附上源碼

import "package:flutter/material.dart";

class NavigatorPage extends StatefulWidget {
  @override
  _NavigatorPageState createState() => _NavigatorPageState();
}

class _NavigatorPageState extends State {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Navigator"),
      ),
      body: Column(
        children: [
          Text("Navigator的高度為infinity"),
          Text("如果直接父級(jí)非最上級(jí)也是infinity會(huì)產(chǎn)生異常"),
          Container(
            height: 333,
            color: Colors.amber.withAlpha(111),
            child: Navigator( // Navigator
              initialRoute: "/abc",
              onGenerateRoute: (val) {
                RoutePageBuilder builder;
                switch (val.name) {
                  case "/abc":
                    builder = (BuildContext nContext, Animation animation, Animation secondaryAnimation) => Column(
                      // 并沒(méi)有在 MaterialApp 中設(shè)定 /efg 路由
                      // 因?yàn)镹avigator的特性 使用nContext 可以跳轉(zhuǎn) /efg
                      children: [
                        Text("呵呵呵"),
                        RaisedButton(
                          child: Text("去 /efg"),
                          onPressed: () {
                            Navigator.pushNamed(nContext, "/efg");
                          },
                        )
                      ],
                    );
                  break;
                  case "/efg":
                    builder = (BuildContext nContext, Animation animation, Animation secondaryAnimation) => Row(
                      children: [
                        RaisedButton(
                          child: Text("去 /hhh"),
                          onPressed: () {
                            Navigator.pushNamed(nContext, "/hhh");
                          },
                        )
                      ],
                    );
                  break;
                  default:
                    builder = (BuildContext nContext, Animation animation, Animation secondaryAnimation) => Center(
                      child: RaisedButton(
                        child: Text("去 /abc"),
                        onPressed: () {
                          Navigator.pushNamed(nContext, "/abc");
                        },
                      )
                    );
                }
                return PageRouteBuilder(
                  pageBuilder: builder,
                  // transitionDuration: const Duration(milliseconds: 0),
                );
              },
              onUnknownRoute: (val) {
                print(val);
              },
              observers: []
            ),
          ),
          Text("Navigator執(zhí)行尋找路由順序"),
          Text("initialRoute"),
          Text("onGenerateRoute"),
          Text("onUnknownRoute"),
        ],
      ),
    );
  }
}
項(xiàng)目地址: https://github.com/zhongmeizhi/fultter-example-app

擼完代碼記得給顆星哦。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/104591.html

相關(guān)文章

  • 跨平臺(tái)技術(shù)演進(jìn)

    摘要:接下來(lái),我將從原理優(yōu)缺點(diǎn)等方面為大家分享跨平臺(tái)技術(shù)演進(jìn)。小程序年是微信小程序飛速發(fā)展的一年,年,各大廠商快速跟進(jìn),已經(jīng)有了很大的影響力。下面,我們以微信小程序?yàn)槔?,分析小程序的技術(shù)架構(gòu)。 前言 大家好,我是simbawu ,@BooheeFE Team Leader,關(guān)于這篇文章,有問(wèn)題歡迎來(lái)這里討論。 隨著移動(dòng)互聯(lián)網(wǎng)的普及和快速發(fā)展,手機(jī)成了互聯(lián)網(wǎng)行業(yè)最大的流量分發(fā)入口。以及隨著5G...

    魏憲會(huì) 評(píng)論0 收藏0
  • 跨平臺(tái)技術(shù)演進(jìn)

    摘要:接下來(lái),我將從原理優(yōu)缺點(diǎn)等方面為大家分享跨平臺(tái)技術(shù)演進(jìn)。小程序年是微信小程序飛速發(fā)展的一年,年,各大廠商快速跟進(jìn),已經(jīng)有了很大的影響力。下面,我們以微信小程序?yàn)槔?,分析小程序的技術(shù)架構(gòu)。 前言 大家好,我是simbawu ,@BooheeFE Team Leader,關(guān)于這篇文章,有問(wèn)題歡迎來(lái)這里討論。 隨著移動(dòng)互聯(lián)網(wǎng)的普及和快速發(fā)展,手機(jī)成了互聯(lián)網(wǎng)行業(yè)最大的流量分發(fā)入口。以及隨著5G...

    MasonEast 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<