flutter - 动画列表不显示插入的项目颤动
问题描述
我有一个像这样的 SliverAnimatedList:
SliverAnimatedList(
key: _myListkey,
itemBuilder: (context, index, animation) {
return Container(
child: Column(
children: [
FlashcardCreateTile(
autocreate: autocreate,
entertomovefocus: entertomovefocus,
flashcard: flashcards[index],
islast:
(index + 1) == flashcards.length ? true : false,
plusmode: true,
promode: true,
uid: widget.uid,
focus: null,
animation: animation,
formKey: _formkey,
delete: () {
flashcards.removeAt(index);
SliverAnimatedList.of(context).removeItem(
index,
(context, animation) => FlashcardCreateTile(
autocreate: autocreate,
entertomovefocus: entertomovefocus,
flashcard:
Flashcard(recto: "", verso: ""),
islast: false,
plusmode: true,
promode: true,
uid: widget.uid,
focus: null,
animation: animation,
formKey: _formkey,
delete: () {},
add: () {}),
duration: const Duration(milliseconds: 100));
},
add: () {
int insertitem = index + 1;
print(insertitem);
setState(() {
flashcards.insert(
insertitem,
Flashcard(
recto: "",
verso: "",
mode: 0,
isrelearning: false,
easefactor: widget
.folder
.decklist[widget.deckindex]
.startingEase,
currentInterval:
Duration(microseconds: 0),
previousInterval:
Duration(microseconds: 0)));
SliverAnimatedList.of(context)
.insertItem(insertitem);
SliverAnimatedList.of(context).build(context);
});
},
),
Container(
child: (index + 1) == flashcards.length
? Container(
child: SizedBox(
height: 50,
),
)
: Container(),
)
],
),
);
},
initialItemCount: flashcards.length,
)
当我单击一个按钮时,flashcardcreatetile 会发回添加功能:
IconButton(
icon: Icon(
Icons.add,
color: Colors.red,
),
onPressed: widget.add)
如您所见,该项目确实已插入,但 sliveranimatedlist 仅在我向下滚动和向后滚动时显示它,所以我认为它需要重建自身。
我想直接显示新卡,有什么想法吗?顺便说一句,删除项目工作正常
解决方案
您需要将密钥添加到您的项目列表中。我建议您阅读本文,因为您将了解为什么需要密钥、它们有什么用以及如何解决您的问题。
推荐阅读
- react-native - 从 NativeBase v2 迁移到 v3 时出现问题
- java - FreeMarker 如何将变量传递给另一个变量?
- listview - ListView中如何控制编辑控件的位置
- c# - C# 不可调用成员“ProdhimiQumështit.DataTabel”不能像方法一样使用
- cypress - cypress-cucumber - 将值从一步定义传递到另一步定义
- c# - .net 核心中间件创建中 next(context) 与 await next.Invoke(context) 之间的区别
- c# - 向数组添加元素有效,但未显示在其他 switch 语句中
- html - Knockout js:有条件地绑定title属性
- javascript - 如何在 Vuejs 嵌套条件语句中选中一个框
- django - 导入额外库时,用于 python 单元测试的 Visual Studio 代码调试工具不显示调试工具