定位集成
配置高德定位依賴庫
新建 Flutter 項目,使用 Android Studio 打開項目里的 android 工程,或者右鍵 android 目錄-> flutter -> open Android module in Android Studio。
在 Android 工程里,切換為 Android 視圖:
打開 build.gradle 文件,添加定位依賴包:
implementation('com.amap.api:location:5.2.0')
點擊 Sync Now 或者 工具欄上的🐘圖標同步依賴包:
打開清單文件AndroidManifest.xml
,配置權限和服務:
<!--訪問網絡-->
<uses-permission android:name="android.permission.INTERNET" />
<!--粗略定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!--精確定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!--申請調用A-GPS模塊-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<!--用於獲取運營商信息,用於支持提供運營商信息相關的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--用於訪問wifi網絡信息,wifi信息會用於進行網絡定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--用於獲取wifi的獲取權限,wifi信息會用來進行網絡定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!--用於讀取手機當前的狀態-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--用於寫入緩存數據到擴展存儲卡-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 配置定位Service -->
<service android:name="com.amap.api.location.APSService"/>
配置簽名文件
高德平台需要簽名的 sha1 ,所以需要配置簽名文件,debug 模式調試和正式包各需要一個,也可以使用同一個 keystore 。 工具欄 Build -> Generate Signed Bundle / APK -> 選擇 APK -> Next -> Create new ,打開 New Key Store 窗口:
key store path 選擇當前項目根目錄或者你喜歡的任何目錄,命名為 debug.keystore 或者你喜歡的名字,兩個地方的 Password 可以一樣,Alias 需要填寫,下面的 Certificate 填寫一項即可:
點擊 ok -> 點擊 Next,選擇 debug ,當然如果 debug 和 release 使用同一個簽名文件的話也可同時選擇 debug 和 release,並勾選 V2 簽名:
完成后可以看到項目里的 debug.keystore 文件:
重復上面方法,再創建一個 release.keystore 文件。點擊 Project Structure:
選擇 Modules -> app -> Signing Configs -> + -> 默認有 debug,再添加一個 release ,分別選擇對應的 keystore:
點擊 ok 后再次打開 build.gradle 文件,可以看到簽名配置對應剛才配置的簽名文件:
signingConfigs {
debug {
storeFile file('/Users/apple/AndroidStudioProjects/flutter/map_demo/android/debug.keystore')
storePassword '123456'
keyAlias 'amap'
keyPassword '123456'
}
release {
storeFile file('/Users/apple/AndroidStudioProjects/flutter/map_demo/android/release.keytore')
storePassword '123456'
keyAlias 'amap'
keyPassword '123456'
}
}
高德平台 Key 申請
打開高德開放平台 | 高德地圖API (amap.com),注冊成為高德開放平台用戶,打開控制台創建一個應用,填入對應的信息,這里有個錯誤,SHA1 其實是 MD5 ,不要填寫 SHA1。
獲取MD5: 在剛才的項目里,打開 Terminal,輸入下面命令,路徑就是 debug.keystore 和 release.keystore的路徑:
keytool -list -v -keystore ./debug.keystore
輸入秘鑰庫口令,就是設置的 Password ,復制 MD5 ,去高德開放平台粘貼。
發布版和調試版都設置后,復制 key 。
在清單文件里,配置apikey
:
<!-- 配置定位Service -->
<service android:name="com.amap.api.location.APSService"/>
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="f6c46787c43cb7df5510d9f4c530fd1e"/>
Flutter 文件配置
回到 Flutter 項目,添加高德定位庫和權限申請依賴,執行 pub get
:
amap_flutter_location: ^2.0.0
permission_handler:
在獲取定位的入口配置權限申請,注冊監聽:
/// 動態申請定位權限
requestPermission();
///注冊定位結果監聽
_locationListener = _locationPlugin
.onLocationChanged()
.listen((Map<String, Object> result) {
setState(() {
_locationResult = result;
});
});
只要獲取到定位,這里都會回調,result
包含了很全的定位信息。 如果運行報錯:INVALID_USER_KEY
,說明你的 keystore 的 MD5 不正確,也許平台會把 SHA1 改為真正的 SHA1 ,所以不妨試試填入 SHA1。
地圖集成
Android工程添加地圖依賴
回到 Android 工程,添加地圖依賴:
implementation 'com.amap.api:3dmap:5.0.0'
回到 Flutter 工程,在pubspec.yaml
里添加插件依賴:
amap_flutter_map: ^2.0.1
在布局中使用 map :
final AMapWidget map = AMapWidget(
onMapCreated: onMapCreated,
// 定位小藍點配置
myLocationStyleOptions: MyLocationStyleOptions(true),
// 是否指南針
// compassEnabled: true,
);
Android開發該如何快速上手Flutter?
我們可以利用 Flutter 官方網站的教程,搭建好環境,寫出一些 Demo 示例,在此之后需要了解如何混合開發,“萬物皆 Widget”到底怎么理解?對於 State 的理解等原理知識...
這些對我們Android開發來說都有一定的難度。
為了讓大家快速無痛上手 Flutter,給大家分享一份阿里大神總結的《Flutter進階學習筆記》。
整理大綱
-
為什么Flutter是跨平台開發的終極之選
-
在Windows上搭建Flutter開發環境
-
編寫您的第一個 Flutter App
-
Flutter開發環境搭建和調試
-
Dart語法篇之基礎語法(一)
-
Dart語法篇之集合的使用與源碼解析(二)
-
Dart語法篇之集合操作符函數與源碼分析(三)
-
Dart語法篇之函數的使用(四)
-
Dart語法篇之面向對象基礎(五)
-
Dart語法篇之面向對象繼承和Mixins(六)
-
Dart語法篇之類型系統與泛型(七)
-
Flutter中的widget
第一章 為什么Flutter是跨平台開發的終極之選
-
這是為什么?
-
跨平台開發
-
什么是 Flutter
-
Flutter 的特性
-
Flutter 構建應用的工具
-
使用 Flutter 構建的熱門應用
-
構建 Flutter 應用的成本
-
……
第二章 在Windows上搭建Flutter開發環境
-
使用鏡像
-
系統要求
-
獲取Flutter SDK
-
編輯器設置
-
Android設置
-
起步: 配置編輯器
-
起步: 體驗
-
體驗熱重載
-
創建新的應用
-
運行應用程序
-
……
第三章 編寫您的第一個 Flutter App
-
第1步: 創建 Flutter app
-
第2步: 使用外部包(package)
-
第3步: 添加一個 有狀態的部件(Stateful widget)
-
第4步: 創建一個無限滾動ListView
-
第5步: 添加交互
-
第6步: 導航到新頁面
-
第7步:使用主題更改UI
-
……
第四章 Flutter開發環境搭建和調試
-
開發環境的搭建
-
模擬器的安裝與調試
-
開發環境的搭建
-
模擬器的安裝與調試
-
……
第五章 Dart語法篇之基礎語法(一)
-
Hello Dart
-
數據類型
-
變量和常量
-
集合(List、Set、Map)
-
流程控制
-
運算符
-
異常
-
函數
-
……
第六章 Dart語法篇之集合的使用與源碼解析(二)
-
List
-
Set
-
Map
-
Queue
-
LinkedList
-
HashMap
-
Map、HashMap、LinkedHashMap、SplayTreeMap區別
-
命名構造函數from和of的區別以及使用建議
-
……
第七章 Dart語法篇之集合操作符函數與源碼分析(三)
-
Iterable
Iterable類關系圖
Iterable類方法圖
-
forEach
介紹
使用方式
源碼解析
-
map
介紹
使用方式
源碼解析
-
any
介紹
使用方式
源碼解析
-
every
介紹
使用方式
源碼解析
-
where
介紹
使用方式
源碼解析
-
firstWhere和singleWhere和lastWhere
介紹
使用方式
源碼解析
-
join
介紹
使用方式
源碼解析
-
take
介紹
使用方式
源碼解析
-
takeWhile
介紹
使用方式
源碼解析
……
第八章 Dart語法篇之函數的使用(四)
-
函數參數
-
匿名函數(閉包,lambda)
-
箭頭函數
-
局部函數
-
頂層函數和靜態函數
-
main函數
-
……
第九章 Dart語法篇之面向對象基礎(五)
-
屬性訪問器(accessor)函數setter和getter
-
面向對象中的變量
-
構造函數
-
抽象方法、抽象類和接口
-
類函數
-
……
第十章 Dart語法篇之面向對象繼承和Mixins(六)
-
類的單繼承
-
基於Mixins的多繼承
-
……
第十一章 Dart語法篇之類型系統與泛型(七)
-
可選類型
-
接口類型
-
泛型
-
類型具體化
-
……
第十二章 Flutter中的widget
-
Flutter頁面-基礎Widget
-
Widget
-
StatelessWidget
-
Stateful Widget
-
State生命周期
-
基礎widget
-
文本顯示
-
……
文中篇幅有限,僅僅展示了一部分內容,所有資料都放在了【GitHub】,需要的朋友自行獲取。
特別認同一句話:只有擁抱變化,才能比別人更早發現機會。
沒有誰甘願薪資增長緩慢或一直被無情壓榨,或早或晚我們都會走上進階之路。與其被動接受,不如主動出擊,先爭取成為技術強+思維深+視野廣的工程師,機會來臨時才能從容不迫地順應而上,比別人更快一步。