在foreach的小部件树中检测到重复的GlobalKey

时间:2018-11-27 09:04:58

标签: dart flutter android-snackbar

我有一个带有标记循环的地图,我尝试为每个标记显示带有位置名称的小吃店。我有类似的代码。

     static final GlobalKey<ScaffoldState> scaffoldKey =
              GlobalKey<ScaffoldState>();
     for (int i = 0; i < list.length; i++) {
            markers.add(new Marker(
                width: 80.0,
                height: 80.0,
                point: list[1].values.elementAt(i),
                builder: (ctx) => new Container(
                    child: new GestureDetector(
                        onTap: () {
                          scaffoldKey.currentState.showSnackBar(new SnackBar(
                            duration: const Duration(seconds: 5),
                            content: new Text(coords.keys.elementAt(i)),
                            action: SnackBarAction(
                              label: 'Ver',
                              onPressed: () {
                                // Some code to undo the change!
                              },
                            ),
                          ));
                        },
                        child: new Icon(Icons.home, color: Colors.red[300])))));
          }
        return new Scaffold(
           key: scaffoldKey,

当我加载此页面时,不加载任何内容,控制台返回

  

在小部件树中检测到重复的GlobalKey。

我认为错误是在脚手架上,对于每次迭代,它都尝试设置相同的globalkey名称。因此,在执行foreach时,我需要使用其他名称来标识此键。知道我该怎么做吗?

1 个答案:

答案 0 :(得分:0)

只需从DECLARE @month int, @year int, @dateToCheck datetime; SET @month = 12; SET @year = 2018; SET @dateToCheck = dateadd(month, 1, datefromparts(@year, @month, 1)) SELECT * FROM PERSON WHERE date_created < @dateToCheck AND (date_left is null or date_left >= @dateToCheck) 声明中删除static修饰符即可。

final GlobalKey<ScaffoldState>