如何将 googleMapController 传递给自定义小部件? (扑)

Posted

技术标签:

【中文标题】如何将 googleMapController 传递给自定义小部件? (扑)【英文标题】:How to pass a googleMapController to custom widget? (Flutter) 【发布时间】:2021-11-06 07:29:37 【问题描述】:

在我颤动的 googleMap 上,我有 quickDialButton,它有多个按钮。其中一个应该使父 mapWidget 的相机居中,这是通过我作为参数传递的 googleMapControllet 发生的。

return Scaffold(
      body: GoogleMap(
        initialCameraPosition:
            CameraPosition(target: LatLng(42, 23), zoom: 11.5),
        myLocationButtonEnabled: false,
        zoomControlsEnabled: false,
        mapToolbarEnabled: false,
        onMapCreated: (controller) 
          googleMapController = controller;
        ,
        markers: customMarkers.toSet(),
      ),
      floatingActionButton: MyQuickDialButton(
        c: googleMapController,
        latitude: userLocation.latitude,
        longitude: userLocation.longitude,
      ),

问题是 googleMapController 在将 floatingActionButton 属性初始化到脚手架之后。初始化控制器后如何更新它。

【问题讨论】:

【参考方案1】:

我没有传递这个控制器,而是创建了可以从父小部件运行控制器方法的新函数。


void _centerCamera() 
      googleMapController.animateCamera(CameraUpdate.newCameraPosition(
          CameraPosition(
              target: LatLng(userLocation.latitude, userLocation.longitude),
              zoom: 16)));
    

...
floatingActionButton: MyQuickDialButton(
        c: _centerCamera,
        latitude: userLocation.latitude,
        longitude: userLocation.longitude,
      )


后来我只从子小部件调用函数“c”

【讨论】:

以上是关于如何将 googleMapController 传递给自定义小部件? (扑)的主要内容,如果未能解决你的问题,请参考以下文章

如何将参数传递给 Java 线程?

如何将 POST 参数传递给 Durable Function,然后将此参数传递给 Timer Triggered 函数

如何将参数传递给进程

如何通过反射将参数传递给方法

如何将库类或对象传递给片段?

如何将参数传递给快速完成的函数