Дубликат GlobalKey обнаружен в дереве виджетов в foreach - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть карта с петлей маркеров, для каждого маркера я пытаюсь показать закусочную с названием местоположения.У меня есть код, подобный.

     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 голосов
/ 27 ноября 2018

Просто удалите модификатор static из вашей декларации final GlobalKey<ScaffoldState>.

 final GlobalKey<ScaffoldState> scaffoldKey =
          GlobalKey<ScaffoldState>();
...