0

我的任务是允许用户在地图上构建一个多边形。我使用flutter_map 库和openstreetmaps。我不知道如何完成多边形的构建。

现在,第onTap一个IconButton出现在地图上。我想让它IconButton处于活动状态,以便当用户onPress使用它时:(1)图标更改,(2)返回(并保存以传递到后端)用户在多边形构建过程中点击的一组点,以及( 3)多边形构建过程停止(添加新点变得不可能)。

我认为,挑战归结为如何在保留功能的同时setState在另一个内部回调。setState但也许还有另一种解决方案。

我的代码如下。如果需要,我可以提供整个代码。

我会很感激任何想法。

class _HomePageState extends State<HomePage> {
  
...  
  List<Marker> markers = [];
  List<LatLng> polygonList = [];
  bool singleTap = false;

...

options: MapOptions(
           
            ...          
            onTap: (latlng) {
              if (singleTap) {
                setState(() {
                  if (markers.length == 0) {
                    markers.add(
                      Marker(
                        point: latlng,
                        builder: (ctx) => IconButton(
                          icon: Icon(Icons.favorite),
                          onPressed: () {***HERE the process should be stopped with changing the icon, no new points;***
                            setState(() {});
                          },
                        ),
                      ),
                    );
                  } else {
                    markers.add(
                      Marker(...),
                      ),
                    );
                  }
                  polygonList.add(latlng);
                });
              }
            }),
4

1 回答 1

0

答案很简单:没什么特别的,只要记住“其他层可能会拦截手势”。我刚刚更改了图层的顺序,现在我的标记处于活动状态。

于 2021-03-15T09:26:09.920 回答