选中复选框时添加动画

时间:2019-10-21 11:19:06

标签: flutter dart

在主体中,我有一个带有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()但我不知道如何添加它

0 个答案:

没有答案