在主体中,我有一个带有3个不同页面的TabBar,分别是“剩余任务”,“完成任务”和“隐藏任务”。因此,在开始时,剩余的任务有5个带有复选框的列表项,我可以对其进行检查,以便它们进入已完成的任务视图并隐藏它们,然后进入隐藏的任务视图,但是问题是它们只是立即更改页面,我想当我选中一个复选框并看到它动画到下一页时,添加一个不错的动画。
我尝试查看某些不同类型的动画小部件,例如AnimateOpacity,以便在我选中复选框时使它们淡出,但它不起作用,我还尝试了AnimatedSwitcher,并尝试在ListTile()和空的SizedBox之间切换(),但没有结果。我已经阅读了有关颤动的动画,但是我很难理解它,以及如何将其添加到我的案例中,这是复选框。
这是我的复选框,通过bloc.checkTask()方法,当我检查该任务时,该任务将其发送到“完成任务”页面
Checkbox(
activeColor: Color(0xffCB3C3F),
value: widget.checked,
onChanged: (bool value) {
bloc.checkTask(bloc.activeProjectId, widget.checklistId,
widget.taskId, value);
},
)
因此,一旦bloc.checkTask发生,ListTile将跳至“完成任务”页面,因为3个页面中的每个页面都从3个不同的列表(剩余任务,completedTasks和hiddenTasks)创建ListTiles。因此,在检查剩余任务中的ListTile时,它会立即跳转到completedTasks。在这里,我为3个页面创建正文,并迭代3个不同的列表以在TaskTile()类中创建3个不同的页面
body: TabBarView(
children: <Widget>[
ListView(
padding: EdgeInsets.only(top: 3, left: 2, right: 2),
children: <Widget>[
for (Task task in remainingTasks)
TaskTile(
title: task.title,
subtitle: task.subtitle,
checked: task.checked,
checklistId: widget.checklistId,
taskId: task.id,
tasks: task,
hidden: task.hidden,
),
],
),
ListView(
padding: EdgeInsets.only(top: 3, left: 2, right: 2),
children: <Widget>[
for (Task task in completedTasks)
TaskTile(
title: task.title,
subtitle: task.subtitle,
checked: task.checked,
checklistId: widget.checklistId,
taskId: task.id,
tasks: task,
hidden: task.hidden,
)
],
),
ListView(
padding: EdgeInsets.only(top: 3, left: 2, right: 2),
children: <Widget>[
for (Task task in hiddenTasks)
TaskTile(
title: task.title,
subtitle: task.subtitle,
checked: task.checked,
checklistId: widget.checklistId,
taskId: task.id,
tasks: task,
hidden: task.hidden,
)
],
),
],
),
我想我应该尝试在onchanged(){}中添加动画 功能,何时完成我应该做bloc.checkTask()但我不知道如何添加它