Google maps 我的流在两次获得纬度和经度后崩溃,并且不';I don’我不明白我现在的处境。这是什么原因造成的?

Google maps 我的流在两次获得纬度和经度后崩溃,并且不';I don’我不明白我现在的处境。这是什么原因造成的?,google-maps,flutter,dart,Google Maps,Flutter,Dart,在两次地理位置更新后,它崩溃并且在地图中不跟随我: StreamSubscription subscription; super.initState(); subscription = getPositionStream(desiredAccuracy: LocationAccuracy.high, distanceFilter: 10).listen( (Position position) async { getLo

在两次地理位置更新后,它崩溃并且在地图中不跟随我:

  StreamSubscription subscription;


    super.initState();
    subscription = getPositionStream(desiredAccuracy: LocationAccuracy.high, distanceFilter: 10).listen(
            (Position position) async {
              getLocation();
              centerScreen(position);
          print(position == null ? 'Unknown' : position.latitude.toString() + ', ' + position.longitude.toString());
        });
  }
为了安全起见,我尝试将:subscription.resume()添加到我的_onmacreated(flattergooglemaps)中。没有影响

这是我的位置:

  Future getLocation() async {

    Position position =
        await getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
    lat = position.latitude;
    lng = position.longitude;

    setState(() {});
  }
和我的中央屏幕功能:

  Future<void> centerScreen(Position position) async {

    final GoogleMapController controller = await _controller.future;
    controller.animateCamera(CameraUpdate.newCameraPosition(CameraPosition(
        target: LatLng(position.latitude, position.longitude),
        zoom: _currentZoom)));
  }
未来中心屏幕(位置)异步{
最终GoogleMapController=wait_controller.future;
controller.animateCamera(CameraUpdate.newCameraPosition(CameraPosition(
目标:LatLng(位置.纬度,位置.经度),
缩放:_currentZoom));
}
这是最新发布的颤振地理定位器和颤振谷歌地图


我两天来一直在想这个问题。。。我非常感谢你的帮助。提前谢谢。

将其从我的初始状态中删除。将其传递给getLocation,如下所示:

  Future getLocation() async {

    subscription = getPositionStream(desiredAccuracy: LocationAccuracy.high, distanceFilter: 10).listen(
            (Position position) async {
              final GoogleMapController controller = await _controller.future;
//    final GoogleMapController currentZoom = await _controller.zoom;
              controller.animateCamera(CameraUpdate.newCameraPosition(CameraPosition(
                  target: LatLng(position.latitude, position.longitude),
                  zoom: _currentZoom)));

        });

很好用。

谷歌地图颤振与地理定位器

 // GoogleMapFlutter with Geolocator
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:geolocator/geolocator.dart';

class Map extends StatefulWidget {
  @override
  _MapState createState() => _MapState();
}

class _MapState extends State<Map> {
  bool mapToggle = false;
  var currentLocation;

  @override
  //initiate position
  void initState() {
    super.initState();
    //Geolocation
    Geolocator.getCurrentPosition().then((currloc) {
      setState(() {
        currentLocation = currloc;
        mapToggle = true;
      });
    });
  }

  //Location Marker
  Set<Marker> _createMarker() {
    return <Marker>[
      Marker(
        markerId: MarkerId("currentLocation"),
        position: LatLng(currentLocation.latitude, currentLocation.longitude),
        icon: BitmapDescriptor.defaultMarker,
        infoWindow: InfoWindow(title: "Your Location"),
      )
    ].toSet();
  }

  @override
  Widget build(BuildContext context) {
    return Stack(
      children: [
        mapToggle
            //Google Map flutter
            ? GoogleMap(
                mapType: MapType.normal,
                markers: _createMarker(),
                initialCameraPosition: CameraPosition(
                    target: LatLng(
                        currentLocation.latitude, currentLocation.longitude),
                    zoom: 15.0))
            //Loading
            : Center(
                child: Text(
                'Loading.. Please wait..',
                style: TextStyle(fontSize: 20.0),
              )),
      ],
    );
  }
}

//带地理定位器的谷歌地图颤振
进口“包装:颤振/材料.省道”;
导入“包:google_-maps_-flatter/google_-maps_-flatter.dart”;
导入“包:地理定位器/地理定位器.dart”;
类映射扩展了StatefulWidget{
@凌驾
_MapState createState();
}
类映射状态扩展状态{
boolmaptoggle=false;
无功电流定位;
@凌驾
//起始位置
void initState(){
super.initState();
//地理定位
Geolocator.getCurrentPosition().then((currloc){
设置状态(){
currentLocation=currloc;
mapToggle=true;
});
});
}
//定位标记
设置_createMarker(){
返回[
标记(
markerId:markerId(“当前位置”),
位置:LatLng(当前位置.纬度,当前位置.经度),
图标:BitmapDescriptor.defaultMarker,
infoWindow:infoWindow(标题:“您的位置”),
)
].toSet();
}
@凌驾
小部件构建(构建上下文){
返回堆栈(
儿童:[
映射切换
//谷歌地图颤振
?谷歌地图(
mapType:mapType.normal,
标记:_createMarker(),
initialCameraPosition:CameraPosition(
目标:拉丁美洲(
currentLocation.纬度,currentLocation.经度),
缩放:15.0)
//装载
:中心(
子:文本(
'正在加载..请稍候..',
样式:TextStyle(fontSize:20.0),
)),
],
);
}
}

您好,欢迎来到SO!虽然这段代码可以回答这个问题,但提供关于它如何和/或为什么解决问题的附加上下文将提高答案的长期价值。请阅读,然后