我正在尝试使用 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 标志,但这并没有解决问题。