Flutter:该表达式的类型为“void”,因此无法使用其值

Mai*_*oke 3 dart flutter

我正在尝试致电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)

Jos*_*eve 5

尝试这个:

SlidableAction(
   onPressed: (context) => deleteToDo(context,toDo),
   backgroundColor: Color(0xFFFE4A49),
   foregroundColor: Colors.white,
   icon: Icons.delete,
   label: 'Delete',
)
Run Code Online (Sandbox Code Playgroud)