如果添加到动画列表,Flutter 查找停用的小部件的祖先是不安全的

Flutter Looking up a deactivated widget's ancestor is unsafe if adding to animated list

我正在我的应用程序中使用 AnimatedList。问题是当尝试插入一个项目时我得到这个错误:

Looking up a deactivated widget's ancestor is unsafe.

这是我的清单:

child: AnimatedList(
                        padding: EdgeInsets.zero,
                        shrinkWrap: true,
                        key: listKey,
                        initialItemCount: month.memories.length,
                        itemBuilder: (context, index, animation) {
                          return slideIt(
                            context,
                            month.memories[index],
                            index,
                            animation,
                            month,
                          );
                        },
                      ),

现在列表在 View 1 中,用户 pushesView 2,他在其中添加数据 View 2 我正在调用 Callback Functiondispose 里面,所以如果弹出视图,我会收到通知。这是其逻辑:

CupertinoScaffold.showCupertinoModalBottomSheet(
                      duration: Duration(
                        milliseconds: 350,
                      ),
                      expand: true,
                      context: context,
                      builder: (context) => AddMemoryPage(
                        memoryWasAdded: (addedMemory) {
                          if (addedMemory != null) {
                            _addMemory(context, addedMemory);
                          }
                        },
                      ),
                    );

addMemory 看起来像这样:

  _addMemory(BuildContext context, Memory memoryToAdd) {

month.memories.add(memoryToAdd);

AnimatedList.of(context).insertItem(
  month.memories.length - 1,
  duration: Duration(
    milliseconds: 500,
  ),
);

}

我在这里做错了什么?我也用 listKey.currentState 尝试过,但也失败了,因为。 currentState 为空。到这里怎么走?

如果您需要更多信息,请告诉我!

我通过删除 callback 解决了这个问题,并在弹出第二个屏幕时简单地传递了一个值 (pop(context, data),然后我可以像这样检索它:

onTapped: () {
                    CupertinoScaffold.showCupertinoModalBottomSheet(
                      duration: Duration(
                        milliseconds: 350,
                      ),
                      expand: true,
                      context: context,
                      builder: (context) => AddMemoryPage(),
                    ).then(
                      (memory) {
                        if (memory is Memory) {
                          _addMemory(context, memory);
                        }
                      },
                    );
                  },