将位置流从Geolocator导入StreamBuilder Flutter

问题描述 投票:0回答:1

我只是从Flutter开始,这是State / Stream / BloC概念的新手。我正在尝试根据FlutterMapGeolocator()流中的坐标更新Position中心。目前,我只是调用setState()用新值更新变量,但是接下来我将尝试使用Bloc模式。现在,除了在流的位置的坐标上设置中心之外,我还在相同的坐标上设置了Marker。我原本希望在屏幕中心看到一个稳定的标记,而在下面看到一个正在移动的地图,但是相反。.地图稳定并且图标在移动。.您能看到我弄错了什么吗?另外,对于stream:StreamBuilder属性,我如何将Geolocator()的流作为事件传递?

非常感谢您的时间和帮助。

这是流:

StreamSubscription positionStream = _geolocator
        .getPositionStream(locationOptions)
        .listen((Position position) {
      setState(() {
        _position = position;
      });
      print(
          _position.latitude.toString() + ',' + _position.longitude.toString()); // ok
    });

这是地图和标记:

Container(
                height: 670,
                width: 370,
                child: FlutterMap(
                  options: MapOptions(
                    center: LatLng(_position.latitude, _position.longitude),
                    minZoom: 16.0,
                    maxZoom: 19.0,
                  ),
                  layers: [
                    TileLayerOptions(
//                        urlTemplate:
//                        'https://api.openrouteservice.org/mapsurfer/{z}/{x}/{y}.png?api_key=omitted',
                        urlTemplate:
                            'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
                        subdomains: ['a', 'b', 'c'],
                        keepBuffer: 20),
                    new MarkerLayerOptions(
                      markers: [
                        new Marker(
                            point: new LatLng(
                                _position.latitude, _position.longitude),
                            height: 200,
                            width: 200,
                            builder: (context) => IconButton(
                                  icon: Icon(Icons.location_on),
                                  color: Colors.red,
                                  iconSize: 60,
                                  onPressed: () {
                                    print('icon tapped');
                                  },
                                )),
                      ],
                    ),
                  ],
                ),
              ),
flutter stream flutter-dependencies
1个回答
0
投票

发现了问题。我没有分配任何MapController()。因此,我创建了一个并将其分配给FlutterMap。在setState()中添加了_controller.move(LatLng(_position.latitude, _position.longitude), 16.0);,现在的行为是预期的。屏幕中央的稳定图标和下方的移动地图。希望这对其他人有帮助。但是我仍然会尝试使用BLoC模式实现相同的目的。干杯

© www.soinside.com 2019 - 2024. All rights reserved.