我正在尝试致电deleteToDo()和 ,editToDo()两者都删除或编辑待办事项列表中的项目。我正在使用可滑动的 flutter pub 来格式化待办事项列表。但是,此错误显示“此表达式的类型为“void”,因此无法使用其值。另请检查也可能为 void 的类型参数和变量。”

我尝试对其进行编辑,Future <Void>但也出现以下错误:非常感谢任何帮助。
我的飞镖文件:
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:flutter_slidable/flutter_slidable.dart';
import 'package:best_before/ShoppingList/toDoClass.dart';
import 'package:best_before/ShoppingList/toDos.dart';
import 'package:best_before/ShoppingList/Utils.dart';
class ToDoWidget extends StatelessWidget {
final ToDo toDo;
const ToDoWidget({
required this.toDo,
Key? key,
}) : super(key: key);
@override
Widget build(BuildContext context) => ClipRRect(
borderRadius: BorderRadius.circular(16),
child: Slidable(
key: Key(toDo.id),
startActionPane: ActionPane(
motion: ScrollMotion(),
dismissible: DismissiblePane(onDismissed: () {}),
children: [
SlidableAction(
onPressed: deleteToDo(context,toDo),
backgroundColor: Color(0xFFFE4A49),
foregroundColor: Colors.white,
icon: Icons.delete,
label: 'Delete',
),
],
),
endActionPane: ActionPane(
motion: ScrollMotion(),
children: [
SlidableAction(
flex: 2,
onPressed: editToDo(context, toDo),
backgroundColor: Colors.green,
foregroundColor: Colors.white,
icon: Icons.edit,
label:'Edit'
)
],
),
child:buildTodo(context),
),
);
Widget buildTodo(BuildContext context) => GestureDetector(
onTap: () => editToDo(context, toDo),
child: Container(
color: Colors.white,
padding: EdgeInsets.all(20),
child: Row(
children: [
Checkbox(
activeColor: Theme.of(context).primaryColor,
checkColor: Colors.white,
value: toDo.isDone,
onChanged: (_) {
final provider =
Provider.of<TodosProvider>(context, listen: false);
final isDone = provider.toggleTodoStatus(toDo);
Utils.showSnackBar(
context,
isDone ? 'Task completed' : 'Task marked incomplete',
);},
),
const SizedBox(width: 20),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
toDo.title,
style: TextStyle(
fontWeight: FontWeight.bold,
color: Theme.of(context).primaryColor,
fontSize: 22,
),
),
if (toDo.description.isNotEmpty)
Container(
margin: EdgeInsets.only(top: 4),
child: Text(
toDo.description,
style: TextStyle(fontSize: 20, height: 1.5),
),
)
],
),
),
],
),
));
}
Void deleteToDo(BuildContext context, ToDo todo) {
final provider = Provider.of<TodosProvider>(context, listen: false);
provider.removeTodo(todo);
Utils.showSnackBar(context, 'Deleted the task');
}
Void editToDo(BuildContext context, ToDo todo) => Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => editToDoPage(Todo: todo),
),
);
Run Code Online (Sandbox Code Playgroud)
尝试这个:
SlidableAction(
onPressed: (context) => deleteToDo(context,toDo),
backgroundColor: Color(0xFFFE4A49),
foregroundColor: Colors.white,
icon: Icons.delete,
label: 'Delete',
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9008 次 |
| 最近记录: |