initialize method
Initialization.
Location information is available or not and permissions are granted.
初期化を行います。
位置情報が利用可能かどうかとパーミッションの許可を行います。
Implementation
Future<void> initialize({
Duration timeout = const Duration(seconds: 60),
}) async {
if (initialized) {
return;
}
if (_completer != null) {
return _completer?.future;
}
_completer = Completer<void>();
try {
if (!await location.Geolocator.isLocationServiceEnabled()
.timeout(timeout)) {
throw Exception(
"Location service not available. The platform may not be supported or it may be disabled in the settings. please confirm.",
);
}
_permissionStatus =
await Permission.locationWhenInUse.status.timeout(timeout);
if (_permissionStatus != PermissionStatus.granted) {
_permissionStatus =
await Permission.locationWhenInUse.request().timeout(timeout);
}
if (_permissionStatus != PermissionStatus.granted) {
throw Exception(
"You are not authorized to use the location information service. Check the permission settings.",
);
}
_initialized = true;
notifyListeners();
_completer?.complete();
_completer = null;
} catch (e) {
_completer?.completeError(e);
_completer = null;
rethrow;
} finally {
_completer?.complete();
_completer = null;
}
}