为什么 Flutter Map 不随着 Consumer 中坐标的变化而更新?

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

我正在尝试使用 flutter_map 在 Flutter 中显示地图并使用 Consumer 更新坐标。但是,地图不会在坐标更改时更新。如果我使用文本小部件而不是地图,则更改效果很好。是什么导致了这个问题,我该如何解决?这是我的代码:

Consumer<DataManager>(
  builder: (context, manager, child) {
    return MapCoordinateWidget(
      coordinates: LatLng(
        manager.coordinates!.latitude,
        manager.coordinates!.longitude,
      ),
    );
  },
)

class MapCoordinateWidget extends StatelessWidget {
  MapCoordinateWidget({super.key, required this.coordinates});

  LatLng coordinates;

  @override
  Widget build(BuildContext context) {
    bool isLight = Theme.of(context).brightness == Brightness.light;
    String styleUrl = isLight
        ? "https://tiles.stadiamaps.com/tiles/alidade_smooth/{z}/{x}/{y}{r}.png"
        : "https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/{z}/{x}/{y}{r}.png";

    return ClipRRect(
      borderRadius: BorderRadius.circular(20),
      child: SizedBox(
        height: 180,
        child: FlutterMap(
          options: MapOptions(
            center: coordinates,
            zoom: 10,
            interactiveFlags: InteractiveFlag.none,
            keepAlive: true,
          ),
          children: [
            TileLayer(
              urlTemplate: "$styleUrl?api_key={api_key}",
              additionalOptions: const {"api_key": stadiaMapsApiKey},
              maxZoom: 20,
              maxNativeZoom: 20,
            )
          ],
        ),
      ),
    );
  }
}

我已经尝试在 MapOptions 中设置 keepAlive 标志,但这并没有解决问题。

flutter dart provider fluttermap
© www.soinside.com 2019 - 2024. All rights reserved.