flutter - 有没有办法在 Flutter 中重建 AnimatedList?
问题描述
我的“锻炼”应用程序使用具有各种锻炼项目的多个锻炼列表时遇到以下问题:
我选择了一个包含12 个锻炼项目的锻炼列表。显示带有 AnimatedList 的“活动”屏幕。
之后,我选择了一个包含 80 个锻炼项目的不同锻炼列表。
AnimatedList 现在显示新的锻炼列表,但只显示前 12 个锻炼项目。为什么?
我认为构建小部件中的 AnimatedList 每次都会重建(我没有使用 GlobalKey)。
class WorkoutListView extends StatelessWidget {
const WorkoutListView({this.filename});
final String filename;
@override
Widget build(BuildContext context) {
return Selector<WorkoutListModel, List<Workout>>(
selector: (_, model) => model.filterWorkouts(filename),
builder: (context, workouts, _) {
return AnimatedWorkoutList(
list: workouts,
);
},
);
}
}
class AnimatedWorkoutList extends StatefulWidget {
const AnimatedWorkoutList({
Key key,
@required List<Workout> list,
}) : _list = list,
super(key: key);
final List<Workout> _list;
@override
_AnimatedWorkoutListState createState() => _AnimatedWorkoutListState();
}
class _AnimatedWorkoutListState extends State<AnimatedWorkoutList> {
@override
Widget build(BuildContext context) {
return AnimatedList(
initialItemCount: widget._list.length,
itemBuilder: (context, index, animation) {
final workout = widget._list[index];
return Column(
children: [
// Using AnimatedList.of(context).removeItem() for list manipulation
],
);
},
);
}
}
解决方案
尝试这个:
class AnimatedWorkoutList extends StatefulWidget {
const AnimatedWorkoutList({
@required List<Workout> list,
});
final List<Workout> list;
@override
_AnimatedWorkoutListState createState() => _AnimatedWorkoutListState();
}
class _AnimatedWorkoutListState extends State<AnimatedWorkoutList> {
@override
Widget build(BuildContext context) {
return AnimatedList(
initialItemCount: widget.list.length,
itemBuilder: (context, index, animation) {
final workout = widget.list[index];
return Column(
children: [
// Using AnimatedList.of(context).removeItem() for list manipulation
],
);
},
);
}
}
推荐阅读
- types - 类型构造函数和数据类型之间有什么区别和关系?
- angular - 如何使用 http Angular 访问对象内部的数组?
- php - PHP Query 不适用于我为它创建的函数
- amazon-web-services - 为什么 serverless-next.js 不创建 lambda?
- laravel - Laravel 6 将 GeoJson 导入 mariadb 10.3
- python - 如何实现全息图的多行标题?
- c# - 如何将列表中相同但数量不同的 2 个项目合并为一个具有数量总和的项目
- python - 收到一条错误消息,指出我需要指定 steps_per_epoch
- cucumber - 当给定状态有多个验证时如何编写 Gherkin 场景
- php - 编辑/更新客户端后,如何重定向到新页面以回显客户端 ID?