我正在嘗試呼叫deleteToDo(),并且editToDo()兩者都洗掉或編輯待辦事項串列中的專案。我正在使用可滑動的顫振 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),
),
);
uj5u.com熱心網友回復:
嘗試這個:
SlidableAction(
onPressed: (context) => deleteToDo(context,toDo),
backgroundColor: Color(0xFFFE4A49),
foregroundColor: Colors.white,
icon: Icons.delete,
label: 'Delete',
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/445207.html
