首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从不同的类访问FlutterMap控制器

如何从不同的类访问FlutterMap控制器
EN

Stack Overflow用户
提问于 2020-07-14 23:43:13
回答 2查看 272关注 0票数 1

我正在尝试找到一种方法从类的外部访问flutter_map控制器,我的想法是在地图屏幕上有标记。当你点击标记时,地图应该会移动,这样spicefic标记就会在中间

问题是标记类在不同的类中初始化,所以我不能立即访问地图控件

我怎样才能让地图移动?

代码语言:javascript
复制
  ./screens/homeScreen.dart

  class HomeScreen extends StatefulWidget {
  static const routeName = '/home';
  @override
  _HomeScreenState createState() => _HomeScreenState();
  }

  class _HomeScreenState extends State<HomeScreen> {
  Widget build(BuildContext context) {
        return  Scaffold(
            body:FlutterMap(
                          mapController: _mapController,
                          MarkerClusterLayerOptions(
                            onMarkerTap: (_) {
                            },                           //  Cluster tab
                            markers:externalReports.items // get the markers list 
                            centerMarkerOnClick: true,    // Cluster center
                              ....),);}}




./externalReports.dart  // where The Items Initial

     _items.add(
          Marker(
              optionalDataContainer: data,
              width: 45.0,
              height: 45.0,
              point: LatLng(
                latitude,
                longitude,),
              builder: (context) => Container(
                        child: Container(
                          height: 45,
                          width: 45,
                          child: GestureDetector(
                            onTap: () {
 
                       // _mapController.move(LatLng(latitude,longitude), 15.0);

                            }))))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-14 23:46:33

我看到的最简单的选择是将其转换为全局实例。(或者您可以将其设为静态)。

但我必须说,这些选项并不是很“漂亮”……

票数 0
EN

Stack Overflow用户

发布于 2020-07-15 10:28:59

您可以为Marker公开一个onClick回调

如下所示:

代码语言:javascript
复制
class YourMarker extends StatelessWidget {
  final double latitude;
  final double longitude;
  final Function(double, double) onClick;
  YourMarker({
    this.latitude,
    this.longitude,
    this.onClick,
  });

  @override
  Widget build(BuildContext context) {
    return Marker(
      optionalDataContainer: data,
      width: 45.0,
      height: 45.0,
      point: LatLng(
        latitude,
        longitude,
      ),
      builder: (context) => Container(
        child: Container(
          height: 45,
          width: 45,
          child: GestureDetector(
            onTap: 
            () {
              onClick(latitude, longitude);
              // _mapController.move(LatLng(latitude,longitude), 15.0);
            },
          ),
        ),
      ),
    );
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62898891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档