
geolocator | Flutter package
Geolocation plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API for generic location (GPS etc.)...
概要:geolocatorというプラグインを使用して位置情報を取る方法についてメモ
■手順
インストール

geolocator install | Flutter package
Geolocation plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API for generic location (GPS etc.)...
Installingタブに書かれている通りに実行します①か②を実行します。
①ターミナルから以下を実行する
flutter pub add geolocator
②pabspec.yamlファイルに以下を手動で追加
dependencies: //これは追加するんじゃんくてもともとあるdepen‥の下に追加しろってこと
geolocator: ^9.0.2 //Verはその時の最新で
そのあと、ターミナルからflutter pub getを実行
これでプラグインは入った
AndroidManifestを修正

geolocator | Flutter package
Geolocation plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API for generic location (GPS etc.)...
Readmeタグを選択後少し下にスクロールAndroidで必要な処理が書かれてるからそれを実行
AndroidXと書かれている件は無視します。※新規でプロジェクト作っているので、この辺りは過去にアプリ作ってる人が対応必要な内容
Premissionsに書かれているのが必要な処理
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
上記を<manifest>の下に書けとあるので従います。

ファイル場所と書き方は上図参照
エミュレータなので位置を適当に設定
androidStudioでエミュレータを起動していると上部に3つの点がありますよね、そこをクリック

Location→適当に地図上をクリック→Set Location

使用する
geolocatorを使用するdartファイルの上部に以下を追加
import 'package:geolocator/geolocator.dart';
とりあえず、位置情報をプリントするためのclassを作ってその中に以下のメソッドを追加します。
コードの大半はGPT4が吐いたコードなのでわかる範囲で補足コメントは入れました。
void getLocation() async {
// async(非同期) はGPS位置情報の取得など時間のかかるタスクを実行できるようにする
bool isLocationPermissionGranted =
await requestLocationPermission(); //位置情報許可情報 //await:これが完了しないと次に進まない
if (isLocationPermissionGranted) {
Position position = await Geolocator.getCurrentPosition(
desiredAccuracy: LocationAccuracy
.low); //LocationAccuracy.// 位置情報の精度:高ければ高いほどバッテリー消費増
print(position);
} else {
print('Access to location denied.');
}
}
//位置情報許可を求める
Future<bool> requestLocationPermission() async {
LocationPermission permission = await Geolocator.checkPermission();
if (permission == LocationPermission.denied) {
permission = await Geolocator.requestPermission();
if (permission == LocationPermission.deniedForever) {
return false;
}
if (permission == LocationPermission.denied) {
return false;
}
}
return true;
}
で、getLocation()を実行させると、

こんな感じで位置情報が出る。
あぁ、当然、位置情報の許可を下ろさないとこの結果は出ません。
※エミュレータとか起動させているようならHotreloadじゃなくてRunで実行しなおすようにしてください。


コメント