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

标签 dart flutter android-snackbar

我有一张带有标记循环的 map ,对于每个标记,我尝试显示带有位置名称的 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,

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

Duplicate GlobalKey detected in widget tree.

我认为错误出在脚手架上,对于每次迭代,它都尝试设置相同的全局键名称。所以我需要在执行 foreach 时用不同的名称来标识这个键。知道我该怎么做吗?

最佳答案

只需删除 static来自您的final GlobalKey<ScaffoldState>的修改器声明。

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

关于dart - 在 foreach 的小部件树中检测到重复的 GlobalKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53496055/

相关文章:

android - Snackbar 的滑动关闭卡住应用程序

flutter - 如何在Firestore中更新此内容?

image - 从网络抖动中保存本地镜像

flutter - 如何在 flutter 中实现可观察的消费者(听众)

java - 从非 UI 线程调用 Snackbar.make() 是如何工作的?

android - 未显示 snackbar

flutter - 如何让 Flutter slider 呈指数增长?

flutter Riverpod : FutureProvider family never gets resolved

Flutter Windows 选项未显示

flutter - 如果Dart中的日期为空,如何处理日期?