新建一個(gè)Flutter工程,android模塊。
創(chuàng)新互聯(lián)是一家專注于成都做網(wǎng)站、網(wǎng)站建設(shè)與策劃設(shè)計(jì),江陰網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:江陰等地區(qū)。江陰做網(wǎng)站價(jià)格咨詢:18980820575
1,只有一個(gè)Activity組件,它是Dart層繪制Widget的容器。
2,Application配置FlutterApplication。
應(yīng)用Application配置io.flutter.app.FlutterApplication類,App首次啟動(dòng)時(shí),初始化。
調(diào)用FlutterMain.startInitialization()方法。
initConfig方法,從AndroidManfest.xml配置的applicaion節(jié)點(diǎn)獲取meta-data數(shù)據(jù),初始化以下默認(rèn)值。
這些值都是使用中用到的name,例如,抽取apk中asset資源時(shí),flutter_assets打包目錄,打包產(chǎn)物data名稱。
initResources方法, 初始化資源。
在Flutter打包apk的asset目錄下,包括fluttter_asset目錄/資源項(xiàng),將資源從apk中抽取,保存在 Context.getDir("flutter", 0) 目錄下。
/data/user/0/包名/app_flutter目錄。
在目錄中創(chuàng)建一個(gè)時(shí)間戳文件,根據(jù)apk版本和包信息記錄的lastUpdateTime更新時(shí)間,第二次啟動(dòng)時(shí),若apk未更新,不需要再次抽取。
加載so庫(kù),libflutter.so,System.loadLibrary()。
主頁(yè)面繼承FlutterActivity,配置啟動(dòng)模式singleTop。
FlutterActivity類在io.flutter.app包, (區(qū)別io.flutter.embedding.android包), 組件生命周期委托給FlutterActivityDelegate類。
組件啟動(dòng),onCreate方法。
FlutterMain.ensureInitializationComplete方法,確保資源成功抽取完成,創(chuàng)建FlutterView視圖(io.flutter.view),繼承SurfaceView類,setContentView方法,設(shè)置組件主布局即FlutterView視圖。
最后,根據(jù)Bundle路徑,runBundle()加載運(yùn)行,
調(diào)用FlutterView的runFromBundle方法,入口點(diǎn)在dart的main方法,
通過FlutterNativeView,調(diào)用FlutterJNI的native方法。
nativeRunBundleAndSnapshotFromLibrary方法。
任重而道遠(yuǎn)
在說flutter國(guó)際化前,不得不提到,在uni-app中支持的Vue-i18n,兩者有相似之處,也有差異的地方。
本篇借鑒了三篇熱門帖子
Flutter中的國(guó)際化:如何寫一個(gè)多語(yǔ)言的App
Flutter國(guó)際化完整例子
Internationalization - Make an Flutter application multi-lingual
只記錄根據(jù)手機(jī)系統(tǒng)語(yǔ)言自動(dòng)轉(zhuǎn)換app語(yǔ)言
引入后,保存會(huì)自動(dòng)加入安裝此依賴
我們新建一個(gè)和"/lib"同級(jí)別的文件夾"/locale",然后在這個(gè)文件夾中新建兩個(gè)文件,分別為"i18n_en.json" 和" i18n_zh.json"。再在"/lib"文件夾下創(chuàng)建和"main.dart"同級(jí)的"translation.dart"和"application.dart"。
??文件夾樹現(xiàn)在是這個(gè)樣子的:
MyApplication
? |
? +- android
? +- build
? +- images
? +- ios
? +- lib
?? |
?? +-main.dart
?? +-translation.dart
?? +-application.dart
? +- locale
?? |
?? +- i18n_en.json
?? +- i18n_zh.json
? +- test
在pubspec.yaml繼續(xù)加入json,引入靜態(tài)資源
補(bǔ)充:如果需要強(qiáng)制轉(zhuǎn)換的話(我自己沒有用到)
在開發(fā)應(yīng)用的時(shí)候,有時(shí)候需要本地存儲(chǔ)一個(gè)臨時(shí)數(shù)據(jù),這時(shí)候可以使用 Flutter 的 shared_preferences 插件,此插件在 iOS 上使用 NSUserDefaults,在 Android 上使用 SharedPreferences,為簡(jiǎn)單數(shù)據(jù)提供持久存儲(chǔ)。
先安裝依賴:
shared_preferences 使用的存儲(chǔ)方式是 key-value 形式。
雖然使用鍵值存儲(chǔ)非常簡(jiǎn)單方便,但它有一些限制:
shared_preferences 實(shí)例常用方法:
本文標(biāo)題:flutter化,flutter特性
當(dāng)前鏈接:http://jinyejixie.com/article30/dsdgcpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站收錄、用戶體驗(yàn)、服務(wù)器托管、網(wǎng)站導(dǎo)航、建站公司
聲明:本網(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í)需注明來源: 創(chuàng)新互聯(lián)