這里實現(xiàn)flutter第三方地圖導航,選用最簡單的方式--調(diào)用第三方地圖客戶端;但各種地圖客戶端用的坐標系不一定相同,先了解下常見的坐標系:
為通化縣等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及通化縣網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為成都網(wǎng)站建設、成都網(wǎng)站設計、通化縣網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
地圖應用api坐標系:
在 pubspec.yaml 文件中添加依賴插件:
一般android和ios調(diào)起第三方應用是通過scheme方式,這里調(diào)起第三方地圖客戶端導航也一樣,如高德地圖,ios scheme為iosamap,android scheme為androidamap; 所以flutter需要引用url_launcher;
未完待續(xù)~~
gRPC是谷歌開發(fā)的一款遠程過程調(diào)用系統(tǒng),可以讓客戶端像調(diào)用本地對象一樣使用服務端應用的方法,使用protocol buffers接口定義語言來定義服務方法,protocol buffer定義參數(shù)和返回類型。
protobuf類似json,是一種數(shù)據(jù)結構協(xié)議,在android studio中安裝Protobuf Support,方便查看編寫的proto文件
dart使用proto插件將proto文件生成對應的dart文件,使用如下步驟
1、安裝flutter之后,再flutter的下面路徑中有pub命令,需要將命令加入到path中。
可以vi ~/.zshrc,在文件中加入source ~/.bash_profile,然后在vi ~/.bash_profile文件中加入下面路徑(:分割不同的路徑)
export PATH=/Users/webull/app/flutter/bin:/Users/webull/app/flutter/bin/cache/dart-sdk/bin:/Users/webull/.pub-cache/bin:$PATH
其中fluter/bin是flutter的命令路徑,dart-sdk/bin中包含了pub和其他dart命令,.pub-cache/bin是之后運行pub之后建立的路徑,里面包含了proto-gen-dart命令,用來將proto文件轉換為dart的命令
2、使用下面的命令安裝proto插件
$ pub global activate protoc_plugin
安裝完成后,上面的用戶目錄中的.pub-cache目錄才會有proto-gen-dart文件。
1、其中/Users/webull是我的用戶目錄 app/flutter是flutter的安裝目錄
參考:
1、gRPC介紹
2、gRPC配置
新建一個Flutter工程,android模塊。
1,只有一個Activity組件,它是Dart層繪制Widget的容器。
2,Application配置FlutterApplication。
應用Application配置io.flutter.app.FlutterApplication類,App首次啟動時,初始化。
調(diào)用FlutterMain.startInitialization()方法。
initConfig方法,從AndroidManfest.xml配置的applicaion節(jié)點獲取meta-data數(shù)據(jù),初始化以下默認值。
這些值都是使用中用到的name,例如,抽取apk中asset資源時,flutter_assets打包目錄,打包產(chǎn)物data名稱。
initResources方法, 初始化資源。
在Flutter打包apk的asset目錄下,包括fluttter_asset目錄/資源項,將資源從apk中抽取,保存在 Context.getDir("flutter", 0) 目錄下。
/data/user/0/包名/app_flutter目錄。
在目錄中創(chuàng)建一個時間戳文件,根據(jù)apk版本和包信息記錄的lastUpdateTime更新時間,第二次啟動時,若apk未更新,不需要再次抽取。
加載so庫,libflutter.so,System.loadLibrary()。
主頁面繼承FlutterActivity,配置啟動模式singleTop。
FlutterActivity類在io.flutter.app包, (區(qū)別io.flutter.embedding.android包), 組件生命周期委托給FlutterActivityDelegate類。
組件啟動,onCreate方法。
FlutterMain.ensureInitializationComplete方法,確保資源成功抽取完成,創(chuàng)建FlutterView視圖(io.flutter.view),繼承SurfaceView類,setContentView方法,設置組件主布局即FlutterView視圖。
最后,根據(jù)Bundle路徑,runBundle()加載運行,
調(diào)用FlutterView的runFromBundle方法,入口點在dart的main方法,
通過FlutterNativeView,調(diào)用FlutterJNI的native方法。
nativeRunBundleAndSnapshotFromLibrary方法。
任重而道遠
沒有引用極光推送包 之前得權限:
-訪問網(wǎng)絡
-修改/刪除SDK卡中的內(nèi)容
-拍照
-控制震動器
-查看網(wǎng)絡狀態(tài)
-查看WLANK狀態(tài)
-讀取手機狀態(tài)和身份【去掉 tx_device_id 包 該權限沒有 】
極光推送包引入后 手機權限多了以下這些:
-修改全局系統(tǒng)設置
-裝載和卸載文件系統(tǒng)
-顯示系統(tǒng)及警報
-大概位置
-更改WLAN狀態(tài)
-精準的(GPS)位置
-訪問額外的位置信息提供程序命令
-更改網(wǎng)絡連接性
-檢索當前運行的應用程序