微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter:如何在切换页面时保持 Google Maps Polylines 的状态

如何解决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 举报,一经查实,本站将立刻删除。