Я включил на свою флаттер-страницу простой компонент GoogleMap только для того, чтобы посмотреть, работает ли он, но я не могу решить эту проблему. Я компилирую приложение, и когда я перехожу на страницу, я получаю следующую ошибку в консоли:
"E/GoogleMapController( 3376): Cannot enable MyLocation layer as location permissions are not granted"
Я вижу компонент, но не вижу карту (см. изображение):

Добавлены конфигурации:
//(AndroidManifest.xml)
<meta-data android:name = "com.google.android.geo.API_KEY" android:value = "apikey"/>
//(pubspec.yaml)
google_maps_flutter: ^0.5.0
РЕДАКТИРОВАТЬ - РЕШЕНИЕ
Добавьте пакет разрешений, чтобы запросить разрешение. Вы можете установить этот пакет для управления вашими разрешениями: https://pub.dartlang.org/packages/permission
android.permission.ACCESS_FINE_LOCATION считается опасным разрешением. Вы использовали пакет permission для запроса разрешения? https://pub.dartlang.org/packages/permission
Я использовал пакет разрешений, как было предложено. @JuthiSarkerAka
Если на эмуляторе удалите следующее в файле AndroidМанифест:
<uses-permission android:name = "android.permission.ACCESS_FINE_LOCATION"/>
и хранить:
<uses-permission android:name = "android.permission.INTERNET"/>
Это сработало для меня. Я также закрыл и перестроил все приложение в эмуляторе.
Начиная с декабрь 2019 г. мне не удалось использовать плагин разрешения. Даже после добавления необходимых данных манифеста и обновления проекта до Android API 29 он все равно возвращался, PermissionStatus.notAgain.
Что действительно сработало, так это добавление плагина разрешения_обработчик с предоставленным ими данные манифеста (только часть местоположения). Кроме того, обновление Android API до версии 29, как подробно описано в здесь, и замена compileSDKVersion и targetSdkVersion в android/app/build.gradle на 29.
Данные Mainfest, непосредственно перед тегом <application> в каталоге android/app/src/main/AndroidManifest.xml
<!-- Permissions options for the `location` group -->
<uses-permission android:name = "android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name = "android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name = "android.permission.ACCESS_BACKGROUND_LOCATION" />
Перезапустите IDE, чтобы все изменения вступили в силу. Затем, чтобы запросить разрешение в вашем приложении:
import 'package:permission_handler/permission_handler.dart';
void setPermissions() async{
Map<PermissionGroup, PermissionStatus> permissions =
await PermissionHandler().requestPermissions([PermissionGroup.location]);
}
Мне удалось решить проблему:
Включите этот оператор if в свою основную функцию перед запуском виджета Stateless/Stateful в runApp().
void main() {
if (defaultTargetPlatform == TargetPlatform.android) {
AndroidGoogleMapsFlutter.useAndroidViewSurface = true;
}
runApp(LocationPage());
}
Если у вас возникнут новые проблемы, проверьте журнал на наличие ссылок, которые помогут настроить ваш проект с помощью Google Maps SDK. Пошаговые процедуры просты для понимания и понимания. Дайте мне знать, если у вас есть какие-либо проблемы.
Да, я знаю. Это было только для того, чтобы проверить, решает ли это мою проблему. Нет, я добавлю пакет разрешений!