flutter - Flutter google map maker ontap
问题描述
我是 Flutter 的新手。这是惊人的。我正在开发使用谷歌地图的小应用程序。我有 6 分(标记),需要识别选择了哪一个。我已经使用 i-index (i = 0..5) 将 ontap 事件添加到每个标记中。当我点击/单击标记时,我总是得到 6。根据标记,它应该是 0..5。
非常感谢,加布里埃尔
i=0;
marker.clear();
for (myPoint mar in globals.historia.items) {
print(i.toString());
marker.add(Marker(
markerId: MarkerId(i.toString()),
position: mar.pos,
draggable: false,
consumeTapEvents: true,
onTap: () {
print("Marker_id-${i.toString()}");
},
));
i++;
}
GoogleMap(onMapCreated:_onMapCreated,initialCameraPosition:CameraPosition(目标:我的位置,缩放:17.0,),折线:道路,标记:Set.of(标记),
)
解决方案
当被触发时,它会使用最后一个值onTap()
调用,这就是为什么每次点击标记时,print 方法都会打印 6.
是一个全局变量,它有自己的地址,因此该方法将搜索该地址上的每个值时间被称为。i
== 6
i
print
onTap
我提出了这个解决方案- 用这个替换 onTap 中的 youtr print 方法:print("Marker_id-${globals.historia.items.indexOf(mar)}")
mar
是for in
循环内部的一个局部变量,它的值从未改变,所以他会指向同一个值,onTap
会按照你的意愿行事。
推荐阅读
- algorithm - 有哪些算法可以准确估计数据传输的 ETA?
- mysql - 如何最好地拥有具有相同数据的“迷你表”(MySQL)
- java - 无法启动 HIVE
- python - Matplotlib 使用 plt.plot 制作空图,但使用 plt.scatter 显示图
- python - Flask 服务器端验证发布请求的格式
- java - 如何让我的 JMS 消息侦听器无限期地收听
- java - 有没有办法从 Ebean 中的原始 sql 中获取由 jsonb 字段过滤的对象列表
- mesos - Mesos 中的垃圾收集损坏
- bash - 在两个终端/ssh 会话中运行命令的 Bash 脚本
- angularjs - AngularJS:基于两个单选按钮填充选择框