【发布时间】:2020-12-19 07:55:18
【问题描述】:
在我的应用程序中,我使用的是 flutter_bloc 和 flutter_map 包。当我跟踪路线时,我想显示跟踪点的顺序,因此当我收到跟踪路线的状态时,我使用为路线中的每个点添加一个标记一个(forEach 或 normal)循环,它有一个图标和一个数字,所以我可以看到标记顺序。问题是,虽然标记在地图上正确放置并且图标显示正确,但显示的数字是错误的。如果我打印包含要在循环中显示的值的变量,它会正确打印,例如。 1 到 7,但是当分配给标记时,它会得到错误的值 8。 我不知道那个 8 是从哪里来的..
你能看出我做错了什么吗?
这是接收状态的代码:
if (state is TrackedRoute) {
route.clear();
trackedPoints.clear();
int num = 1;
setState(() {
route = state.trackedRoute;
});
// route.forEach((element) {
for (int i = 0; i < route.length; i++) {
LatLng element = route[i];
print('@@@@@ num is $num'); // TODO printed number is correct
LatLng point = LatLng(element.latitude, element.longitude);
Marker trackedPoint = Marker(
point: point,
height: 30,
width: 30,
builder: (context) => Stack(
alignment: Alignment.topCenter,
children: [
// TODO Prints all 8s ???!!!
IconButton(
icon: Icon(Icons.add_location),
color: Colors.greenAccent,
iconSize: 30,
onPressed: () {},
),
Text(
num.toString(),
style: TextStyle(color: Colors.red, fontSize: 25),
), // TODO : Displayed number is wrong
],
),
);
trackedPoints.add(trackedPoint);
num++;
}
// });
}
这是控制台打印:
I/flutter (24597): @@@@@ num is 2
I/flutter (24597): @@@@@ num is 3
I/flutter (24597): @@@@@ num is 4
I/flutter (24597): @@@@@ num is 5
I/flutter (24597): @@@@@ num is 6
I/flutter (24597): @@@@@ num is 7
【问题讨论】: