如何解决Flutter:如何在切换页面时保持 Google Maps Polylines 的状态
我使用的是 Google Maps Flutter 包,我的应用显示了用户使用折线行驶的路线。我的问题是,当我更改到新页面(例如设置页面)然后更改回地图页面时,折线消失了。有谁知道如何解决这个问题?
这是我的 Google 地图小部件(我在其中创建多段线):
List<LatLng> _polylineCoordinates = [];
@override
void initState() {
super.initState();
LatLng userLocation = LocationProvider().locationPosition;
if (userLocation != null) {
_polylineCoordinates.add(userLocation);
}
}
Completer<GoogleMapController> _controllerGoogleMap = Completer();
@override
Widget build(BuildContext context) {
// this will hold the generated polylines
Set<polyline> _polylines = {};
return Consumer<LocationProvider>(
builder: (consumeContext,model,child) {
// If we have user's location,then display the google map
if (model.locationPosition != null) {
_polylineCoordinates.add(model.locationPosition);
polyline polyline = polyline(
polylineId: polylineId("poly"),color: Color.fromARGB(255,40,122,198),points: _polylineCoordinates);
_polylines.add(polyline);
return Container(
width: 400,height: 450,child: GoogleMap(
polylines: _polylines,mapType: MapType.normal,initialCameraPosition: CameraPosition(
target: model.locationPosition,zoom: 18,),myLocationEnabled: true,myLocationButtonEnabled: true,onMapCreated: (GoogleMapController _controller) {
_controllerGoogleMap.complete(_controller);
},);
}
// Else,display container with loading animation
return Container(
width: 400,child: Center(
child: CircularProgressIndicator(),);
},);
这是抽屉小部件(我在页面之间切换的地方):
Drawer(
child: SafeArea(
child: Column(
children: <Widget>[
ListTile(
leading: Icon(Icons.home),title: Text("Home"),onTap: () {
Navigator.pushReplacementNamed(context,'home_screen');
},Padding(
padding: EdgeInsets.all(10),ListTile(
leading: Icon(Icons.settings),title: Text("Settings"),'settings_screen');
},
解决方法
对于遇到此问题的其他任何人,我不知道是否可以使用 Drawer,但是如果您切换到 BottomNavigationBar,并使用 IndexedStack 小部件,它的工作方式与缩进完全相同。这是我用来修复它的链接。 https://stackoverflow.com/a/60775505/12087596
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。