1.當(dāng)我們使用flutter開發(fā)的時(shí)候 頁面里面只有 initState 與dispose方法.
成都創(chuàng)新互聯(lián)公司專注于靜海企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城網(wǎng)站開發(fā)。靜海網(wǎng)站建設(shè)公司,為靜海等地區(qū)提供建站服務(wù)。全流程按需開發(fā)網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
initState 只有進(jìn)入頁面的時(shí)候調(diào)用,并且在二級頁面返回的時(shí)候 是不會有調(diào)用的
dispose 當(dāng)頁面銷毀的時(shí)候 才會調(diào)用,你進(jìn)入二級頁面是不會調(diào)用的
綜上分析者兩個(gè)方法沒有辦法友盟頁面統(tǒng)計(jì)分享上報(bào)
2.我們可以使用 NavigatorObserver來解決
首先新建一個(gè) 繼承與NavigatorObserver的類 實(shí)現(xiàn)NavigatorObserver 的方法就可以了
最后我們需要再 MaterialApp里面的navigatorObservers添加監(jiān)聽就可以了
這時(shí)候 會有一個(gè)問題點(diǎn)擊tabbar幾個(gè)主頁是沒有統(tǒng)計(jì)的 ,我們也需要再tabbar的點(diǎn)擊方法來進(jìn)行處理
如果我們目前的項(xiàng)目是Android的,但是接下來我們希望部分頁面可以使用Flutter進(jìn)行開發(fā),甚至我們希望在Native頁面中嵌入FlutterUI組件,那么我們該如何實(shí)現(xiàn)呢?
假設(shè)你現(xiàn)在Android項(xiàng)目的目錄的結(jié)構(gòu)是這樣的
這時(shí)候如果你想創(chuàng)建一個(gè)Flutter模塊,使得Android模塊和Flutter模塊之間可以進(jìn)行交互,我們可以通過Android Studio新建一個(gè)Flutter Module,具體過程是:File — New — New Module ,之后選擇Flutter Module,指定Project Location的路徑為
也就是說,最終你的項(xiàng)目結(jié)構(gòu)會是這樣的
接下來在Android Module的 build.gradle 文件中添加flutter依賴
先創(chuàng)建一個(gè)Flutter頁面
這里比較重要的是 window.defaultRouteName 這個(gè)字段,這個(gè)字段可以接收從Native傳遞過來的參數(shù) (下文我們會介紹原生傳遞參數(shù)的方法),也就是說通過這個(gè)字段我們就可以進(jìn)行Flutter頁面的路由的分發(fā)
我們可以直接在Android的 MainActivity 中啟動一個(gè) FlutterActivity ,這里的 initialRoute 方法中傳遞的參數(shù)就對應(yīng)Flutter層的 window.defaultRouteName
注意:需要在 AndroidManifest.xml 注冊 FlutterActivity
自己創(chuàng)建一個(gè) FlutterAppActivity 繼承自 FlutterActivity
在 MainActivity 中啟動 FlutterAppActivity (另外別忘了在 AndroidManifest.xml 中注冊 FlutterAppActivity )
兩種啟動方式的區(qū)別
如果單純只是想打開一個(gè)Flutter頁面,兩種方式實(shí)際上基本沒有太大區(qū)別,第一種方式也許還會更簡單一點(diǎn)。但是,在Flutter開發(fā)中,我們往往還需要開發(fā)一些Native插件供Flutter調(diào)用,如果使用復(fù)寫 FlutterActivity 的方式更有利于我們在 FlutterActivity 中注冊我們的Native插件,所以實(shí)際開發(fā)中一般推薦使用第二種方式
擴(kuò)展思考
initialRoute 從名稱上看起來是Flutter提供給我們進(jìn)行Native與Flutter交互的路由跳轉(zhuǎn)的,但是實(shí)際上他就是一個(gè)字符串,我們不僅僅可以傳遞一個(gè)路由名稱,有時(shí)候我們也可以通過這個(gè)參數(shù)傳遞一串JSON數(shù)據(jù),然后在Flutter端進(jìn)行解析,這樣我們就可以通過這個(gè)參數(shù)做更多的事情
activity_main.xml
FrameLayout 用于承載Flutter組件
MainActivity.java
使用 FragmentManager 將 FlutterFragment 添加到 FrameLayout 容器中
運(yùn)行結(jié)果
上半部分是原生的TextView,下半部分是Flutter的Text組件
本節(jié)主要介紹了Native和Flutter之間的頁面跳轉(zhuǎn),以及同一個(gè)頁面中Native與Flutter組件的組合。接下來會介紹如何編寫Android插件與Flutter進(jìn)行數(shù)據(jù)交互
一、前言
Flutter開發(fā),就需要對各種狀態(tài)的管理,就是在請求數(shù)據(jù)的時(shí)候需要實(shí)時(shí)變化,各種交互變化等,在沒有使用GetX之前使用Provider,用Provider的時(shí)候覺得真香,挺方便的,需要刷新的時(shí)候直接 notifyListeners(); 用了GetX之后覺得Provider太繁瑣了。這邊介紹下GetX的使用以及常用的方法。
二、 GetX
GetX 是 Flutter 上的一個(gè)輕量且強(qiáng)大的解決方案:高性能的狀態(tài)管理、智能的依賴注入和便捷的路由管理。
1、相關(guān)優(yōu)勢:
三、使用
1、第一步 引入get
2、第二步
修改入口、配置路由
3、路由
Routes類
Pages類
4、狀態(tài)管理
我一般一個(gè)page對應(yīng)一個(gè)controller, controller來處理邏輯,控制page.
簡單使用
5、依賴注入
依賴注入也是我喜歡的,可以減少很多工作。
第一步
第二步
6、跨頁面交互
7、黑暗模式
可以參考前期寫的博客。 黑暗模式的適配
本文將簡單梳理一下 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è)模塊,即說明集成成功。
接著在工程根目錄下運(yùn)行 pod install ,即可集成上 Flutter Module??吹轿覀兊?Pods 中多了以下幾個(gè)模塊,即說明集成成功。
這一塊直接參照 Flutter Boost 官方提供的 example 就好了:
PlatformRouterImp.h:
PlatformRouterImp.m:
可以看到,F(xiàn)lutter Boost 支持常規(guī) push,也支持打開模態(tài)彈窗,也支持手動 pop。
AppDelegate.h:
AppDelegate.m:
同樣的,這里可在 Native 端用兩種不同的方式去打開我們在 Flutter Module 中注冊好的路由名。
至此,我們成功在 iOS 工程中接入了 Flutter Boost,那就開啟我們的混編之旅吧~
網(wǎng)頁名稱:flutter路由,flutter路由插件
文章鏈接:http://jinyejixie.com/article44/dsdjdhe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、電子商務(wù)、移動網(wǎng)站建設(shè)、App開發(fā)、網(wǎng)站收錄、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)