我在我的應用程式中使用一個AnimatedList。問題是,當我試圖插入一個專案時,我得到了這個錯誤:
查找一個停用的部件的祖先是不安全的。
這是我的串列:
這是我的串列。
child: AnimatedList(
padding: EdgeInsets.zero,
shrinkWrap: true,
key: listKey,
initialItemCount: month.members.length,
itemBuilder。(context, index, animation) {
return slideIt(
背景關系。
month.members[index],
索引。
影片。
月。
);
},
),
現在串列在View 1中,用戶推送到View 2,在那里他在View 2上添加資料。我在dispose中呼叫一個回呼函式,這樣如果視圖被彈出我就會得到通知。以下是其中的邏輯:
CupertinoScaffold.showCupertinoModalBottomSheet(
持續時間。Duration(
milliseconds: 350,
),
擴大。true。
context: 背景關系。
builder: (context) => AddMemoryPage(
memoryWasAdded: (addedMemory) {
if (addedMemory != null) {
_addMemory(context, addedMemory)。
}
},
),
);
而addMemory則是這樣的:
_addMemory(BuildContext context, Memory MemoryToAdd) {
month.members.add(memoryToAdd)。
AnimatedList.of(context).insertItem(
month.members.length - 1,
持續時間。Duration(
milliseconds: 500,
),
);
}
我在這里做錯了什么?我也試過用listKey.currentState,但也失敗了,因為。currentState是空的。這里應該怎么做呢?
如果你需要更多的資訊,請告訴我!
uj5u.com熱心網友回復:
我通過移除callback來解決這個問題,并且在彈出第二個螢屏時簡單地傳遞一個值(pop(context, data),然后我可以像這樣檢索它:
onTapped: () {
CupertinoScaffold.showCupertinoModalBottomSheet(
持續時間。Duration(
milliseconds: 350,
),
擴大。true。
context: 背景關系。
builder: (context) => AddMemoryPage(),
).then(
(memory) {
if (memory is Memory) {
_addMemory(context, memory)。
}
},
);
},
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/315723.html
標籤:
上一篇:堆疊中ListView頂部的GestureDetector阻止了滾動-FlutterWeb
下一篇:損壞的pip安裝僅適用于sudo
