中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

flutter路由,flutter路由插件

flutter 路由監(jiān)聽(tīng)友盟頁(yè)面統(tǒng)計(jì)方案

1.當(dāng)我們使用flutter開(kāi)發(fā)的時(shí)候 頁(yè)面里面只有 initState 與dispose方法.

成都創(chuàng)新互聯(lián)公司專注于靜海企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城網(wǎng)站開(kāi)發(fā)。靜海網(wǎng)站建設(shè)公司,為靜海等地區(qū)提供建站服務(wù)。全流程按需開(kāi)發(fā)網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

initState 只有進(jìn)入頁(yè)面的時(shí)候調(diào)用,并且在二級(jí)頁(yè)面返回的時(shí)候 是不會(huì)有調(diào)用的

dispose 當(dāng)頁(yè)面銷毀的時(shí)候 才會(huì)調(diào)用,你進(jìn)入二級(jí)頁(yè)面是不會(huì)調(diào)用的

綜上分析者兩個(gè)方法沒(méi)有辦法友盟頁(yè)面統(tǒng)計(jì)分享上報(bào)

2.我們可以使用 NavigatorObserver來(lái)解決

首先新建一個(gè) 繼承與NavigatorObserver的類 實(shí)現(xiàn)NavigatorObserver 的方法就可以了

最后我們需要再 MaterialApp里面的navigatorObservers添加監(jiān)聽(tīng)就可以了

這時(shí)候 會(huì)有一個(gè)問(wèn)題點(diǎn)擊tabbar幾個(gè)主頁(yè)是沒(méi)有統(tǒng)計(jì)的 ,我們也需要再tabbar的點(diǎn)擊方法來(lái)進(jìn)行處理

Flutter(六)Android與Flutter混合開(kāi)發(fā)(Hybird)

如果我們目前的項(xiàng)目是Android的,但是接下來(lái)我們希望部分頁(yè)面可以使用Flutter進(jìn)行開(kāi)發(fā),甚至我們希望在Native頁(yè)面中嵌入FlutterUI組件,那么我們?cè)撊绾螌?shí)現(xiàn)呢?

假設(shè)你現(xiàn)在Android項(xiàng)目的目錄的結(jié)構(gòu)是這樣的

這時(shí)候如果你想創(chuàng)建一個(gè)Flutter模塊,使得Android模塊和Flutter模塊之間可以進(jìn)行交互,我們可以通過(guò)Android Studio新建一個(gè)Flutter Module,具體過(guò)程是:File — New — New Module ,之后選擇Flutter Module,指定Project Location的路徑為

也就是說(shuō),最終你的項(xiàng)目結(jié)構(gòu)會(huì)是這樣的

接下來(lái)在Android Module的 build.gradle 文件中添加flutter依賴

先創(chuàng)建一個(gè)Flutter頁(yè)面

這里比較重要的是 window.defaultRouteName 這個(gè)字段,這個(gè)字段可以接收從Native傳遞過(guò)來(lái)的參數(shù) (下文我們會(huì)介紹原生傳遞參數(shù)的方法),也就是說(shuō)通過(guò)這個(gè)字段我們就可以進(jìn)行Flutter頁(yè)面的路由的分發(fā)

我們可以直接在Android的 MainActivity 中啟動(dòng)一個(gè) FlutterActivity ,這里的 initialRoute 方法中傳遞的參數(shù)就對(duì)應(yīng)Flutter層的 window.defaultRouteName

注意:需要在 AndroidManifest.xml 注冊(cè) FlutterActivity

自己創(chuàng)建一個(gè) FlutterAppActivity 繼承自 FlutterActivity

在 MainActivity 中啟動(dòng) FlutterAppActivity (另外別忘了在 AndroidManifest.xml 中注冊(cè) FlutterAppActivity )

兩種啟動(dòng)方式的區(qū)別

如果單純只是想打開(kāi)一個(gè)Flutter頁(yè)面,兩種方式實(shí)際上基本沒(méi)有太大區(qū)別,第一種方式也許還會(huì)更簡(jiǎn)單一點(diǎn)。但是,在Flutter開(kāi)發(fā)中,我們往往還需要開(kāi)發(fā)一些Native插件供Flutter調(diào)用,如果使用復(fù)寫 FlutterActivity 的方式更有利于我們?cè)?FlutterActivity 中注冊(cè)我們的Native插件,所以實(shí)際開(kāi)發(fā)中一般推薦使用第二種方式

擴(kuò)展思考

initialRoute 從名稱上看起來(lái)是Flutter提供給我們進(jìn)行Native與Flutter交互的路由跳轉(zhuǎn)的,但是實(shí)際上他就是一個(gè)字符串,我們不僅僅可以傳遞一個(gè)路由名稱,有時(shí)候我們也可以通過(guò)這個(gè)參數(shù)傳遞一串JSON數(shù)據(jù),然后在Flutter端進(jìn)行解析,這樣我們就可以通過(guò)這個(gè)參數(shù)做更多的事情

activity_main.xml

FrameLayout 用于承載Flutter組件

MainActivity.java

使用 FragmentManager 將 FlutterFragment 添加到 FrameLayout 容器中

運(yùn)行結(jié)果

上半部分是原生的TextView,下半部分是Flutter的Text組件

本節(jié)主要介紹了Native和Flutter之間的頁(yè)面跳轉(zhuǎn),以及同一個(gè)頁(yè)面中Native與Flutter組件的組合。接下來(lái)會(huì)介紹如何編寫Android插件與Flutter進(jìn)行數(shù)據(jù)交互

Flutter狀態(tài)管理--GetX的簡(jiǎn)單使用

一、前言

Flutter開(kāi)發(fā),就需要對(duì)各種狀態(tài)的管理,就是在請(qǐng)求數(shù)據(jù)的時(shí)候需要實(shí)時(shí)變化,各種交互變化等,在沒(méi)有使用GetX之前使用Provider,用Provider的時(shí)候覺(jué)得真香,挺方便的,需要刷新的時(shí)候直接 notifyListeners(); 用了GetX之后覺(jué)得Provider太繁瑣了。這邊介紹下GetX的使用以及常用的方法。

二、 GetX

GetX 是 Flutter 上的一個(gè)輕量且強(qiáng)大的解決方案:高性能的狀態(tài)管理、智能的依賴注入和便捷的路由管理。

1、相關(guān)優(yōu)勢(shì):

三、使用

1、第一步 引入get

2、第二步

修改入口、配置路由

3、路由

Routes類

Pages類

4、狀態(tài)管理

我一般一個(gè)page對(duì)應(yīng)一個(gè)controller, controller來(lái)處理邏輯,控制page.

簡(jiǎn)單使用

5、依賴注入

依賴注入也是我喜歡的,可以減少很多工作。

第一步

第二步

6、跨頁(yè)面交互

7、黑暗模式

可以參考前期寫的博客。 黑暗模式的適配

Flutter Boost 接入實(shí)踐(iOS 篇)

本文將簡(jiǎn)單梳理一下 iOS 工程接入的 Flutter Boost 的流程,以作為前文的補(bǔ)充。

flutter_application_path = '../flutter_module'

load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')

target 'FlutterHybridiOS' do

install_all_flutter_pods(flutter_application_path)

end

接著在工程根目錄下運(yùn)行 pod install ,即可集成上 Flutter Module??吹轿覀兊?Pods 中多了以下幾個(gè)模塊,即說(shuō)明集成成功。

接著在工程根目錄下運(yùn)行 pod install ,即可集成上 Flutter Module。看到我們的 Pods 中多了以下幾個(gè)模塊,即說(shuō)明集成成功。

這一塊直接參照 Flutter Boost 官方提供的 example 就好了:

PlatformRouterImp.h:

PlatformRouterImp.m:

可以看到,F(xiàn)lutter Boost 支持常規(guī) push,也支持打開(kāi)模態(tài)彈窗,也支持手動(dòng) pop。

AppDelegate.h:

AppDelegate.m:

同樣的,這里可在 Native 端用兩種不同的方式去打開(kāi)我們?cè)?Flutter Module 中注冊(cè)好的路由名。

至此,我們成功在 iOS 工程中接入了 Flutter Boost,那就開(kāi)啟我們的混編之旅吧~

網(wǎng)頁(yè)名稱:flutter路由,flutter路由插件
文章鏈接:http://www.rwnh.cn/article44/dsdjdhe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、電子商務(wù)、移動(dòng)網(wǎng)站建設(shè)、App開(kāi)發(fā)、網(wǎng)站收錄、云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
浙江省| 威远县| 马尔康县| 姚安县| 涞水县| 阳高县| 江油市| 内江市| 靖西县| 察雅县| 宝兴县| 文登市| 宿迁市| 施甸县| 长垣县| 贵南县| 长乐市| 孟村| 大同市| 察隅县| 靖安县| 五莲县| 平江县| 樟树市| 汤原县| 清原| 湖口县| 罗城| 长泰县| 隆化县| 财经| 浏阳市| 盐亭县| 民和| 阳东县| 庐江县| 永春县| 新宁县| 秦皇岛市| 扶风县| 平顶山市|