如何解决Flutter - CheckBoxListTile 在 Dissmissible 中包裹时没有动画
我正在编写一个应用程序并添加了一个任务屏幕。
为了表示任务及其状态(完成或未完成),我使用了 Flutter 的“CheckBoxListTile”小部件。它对我很有用。复选框动画功能齐全。
但是,当我将其包装在“Dismissible”小部件中以添加滑动删除功能时,动画不再起作用。从选中状态切换到未选中状态,反之亦然。
有没有人知道如何解决这个问题?或者也许是一种解决方法?
谢谢。
这是我的代码:
import 'package:bee_diary/utils/database.dart';
import 'package:flutter/material.dart';
class Task extends StatefulWidget {
@override
_TaskState createState() => _TaskState();
Task({
@required this.task,@required this.apiaryIndex,@required this.taskIndex,});
final Map<String,dynamic> task;
final int apiaryIndex,taskIndex;
}
class _TaskState extends State<Task> {
final Database db = Database.instance;
bool isDone = false;
void setIsDone(bool value) => setState(() => isDone = value);
@override
void initState() {
super.initState();
isDone = widget.task['isDone'] == null ? false : widget.task['isDone'];
}
@override
Widget build(BuildContext context) {
return Dismissible(
key: UniqueKey(),/// setState isn't called in this function
onDismissed: (DismissDirection _) => db.removeTaskFromApiary(
widget.apiaryIndex,widget.taskIndex,),child: Card(
clipBehavior: Clip.hardEdge,child: CheckboxListTile(
key: Key(
widget.task['task'],activeColor: Theme.of(context).accentColor,checkColor: Theme.of(context).primaryColor,title: Text(
widget.task['text'],value: isDone,onChanged: (bool value) => db.toggleTaskIsDone(
widget.apiaryIndex,onComplete: () => setIsDone(value),background: const Card(
color: Colors.red,);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。