Я использую пакеты Flutter Geolocator и Google Maps для определения местоположения устройства.Я использую Круговой индикатор выполнения, чтобы дождаться определения текущего местоположения.После определения Google Карты загружаются с указанием местоположения устройства.
При загрузке приложения отображается круговой индикатор выполнения, но карта не загружается, несмотря на то, что уведомление отображается и принимается для использования служб определения местоположения;приложение висит на круглом индикаторе выполнения.Я не считаю, что это проблема API, поскольку я успешно загрузил карту с координатами, указанными в InitialCameraPosition.
Если местоположение устройства не определено, что является причиной того, что карта не загружается суказано местоположение?
Я попытался запустить приложение как на эмуляторе Android, так и на физическом устройстве, но безуспешно.
Android Manifest:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="smartkart.app.com.coffee">
<!-- io.flutter.app.FlutterApplication is an android.app.Application
that
calls FlutterMain.startInitialization(this); in its onCreate
method.
In most cases you can leave this as-is, but you if you want to
provide
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. -->
<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION" />
<application
android:name="io.flutter.app.FlutterApplication"
android:label="coffee"
android:icon="@mipmap/ic_launcher">
<meta-data android:name="com.google.android.geo.API_KEY"
android:value="API KEY HERE"/>
<activity../>
Maps Screen
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:geolocator/geolocator.dart';
class FirstScreen extends StatefulWidget {
const FirstScreen({Key key}) : super(key: key);
@override
State<FirstScreen> createState() => _FirstScreen();
}
class _FirstScreen extends State<FirstScreen> {
GoogleMapController mapController;
var currentLocation;
@override
void initState(){
super.initState();
Geolocator().getCurrentPosition().then((currloc){
currentLocation = currloc;
});
}
@override
Widget build(BuildContext context) {
return currentLocation == null ? Container(
alignment: Alignment.center,
child: Center(
child: CircularProgressIndicator(),
),
):
Stack(
children: <Widget>[
GoogleMap(
initialCameraPosition:
CameraPosition(target: LatLng(currentLocation.latitude,
currentLocation.longitude), zoom: 10),
onMapCreated: _onMapCreated,
myLocationEnabled: true,
mapType: MapType.normal,
),
],
);
}
void _onMapCreated(GoogleMapController controller) {
setState(() {
mapController = controller;
});
}
}
Я ожидаю, что уведомление будет использовать службы определения местоположения при круговом ходепанель отображается.После определения местоположения InitialCameraPosition отображает местоположение устройства на карте.