有没有办法在Flutter中重建AnimateList



我的"锻炼"应用程序存在以下问题,该应用程序使用多个工作表和各种锻炼项目

我选择了一个工作清单,其中包含12个workoutitems。将显示带有AnimateList的"activity"屏幕
然后,我选择了一个不同的工作表,其中包含80个的工作项
动画列表现在显示新的工作表,但仅显示前12个的工作项。为什么?

我认为构建Widget中的AnimateList每次都是重建的(我没有使用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
],
);
},
);
}
}

最新更新