定义TodoList provider 类,todo 数据集合 part 'todo_list.g.dart'; @riverpod class TodoList extends _$TodoList { static List<TodoEntity> items = []; @override Future<List<TodoEntity>> build() async { return items; } ... 实现新增 add 功能 Future<void> addTodo(TodoEntity todo) async { ...
正如你所见,我返回了一个 MaterialApp 实例,它具有一个 title 属性和一个 home 功能。这个 home 函数返回一个 TodoList 实例。这个 TodoList 类才是我们控制的列表项。 classTodoListextendsStatefulW...
WidgetRef ref,Widget?widget,){returnRow(mainAxisAlignment:MainAxisAlignment.center,children:[ElevatedButton(onPressed:(){// 事件处理用 read 方式读取 providerref.read(todoListProvider.notifier).addTodo(TodoEntity(description:'This is a new todo',),);},child:constText('Add todo'),),],)...
),body:ListView(padding:EdgeInsets.symmetric(vertical:8.0),children:_todos.map((Todotodo){returnTodoItem(todo:todo,onTodoChanged:_handleTodoChange,);}).toList(),),floatingActionButton:FloatingActionButton(onPressed:()=>_displayDialog(),tooltip:'Add Item',child:Icon(Icons.add)...
lib/provider/todo_list.dart 直接设置新状态值 Future<void> addTodo(TodoEntity todo) async { ... // 直接设置 state 值 state = AsyncData(items); } 将本地缓存标记为脏 Future<void> addTodo(TodoEntity todo) async { ... // 将本地缓存标记为脏 ref.invalidateSelf(); // 重新构建 TodoList,...
在_TodoListState中创建_displayDialog。 代码语言:javascript 复制 Future<void>_displayDialog()async{returnshowDialog<void>(context:context,barrierDismissible:false,// user must tap button!builder:(BuildContext context){returnAlertDialog(title:constText('Add a new todo item'),content:TextField(controller:...
将新建的文件命名为items_list_page。 切换回到main.dart文件,将MyHomePage和_MyHomePageState中的代码,剪切并粘贴到我们新建的文件。然后将光标放到StatefulWidget上(下面红色的下划线处), 按Alt+Enter后出现下拉列表,然后选择package:flutter/material.dart:
again, I can add the main category but when I try to add a subcategory for the existing main category, I cant add a new subcategory and I face an error ' Unhandled Exception: Unsupported operation: Cannot add to a fixed-length list', how can I solve it I have been stuck, ...
在Dart和Flutter中,您可以使用以下方法来对列表(List)进行增加、删除、修改和查询操作。 添加元素: 增加单个元素:使用 add 方法将单个元素添加到列表的末尾。...
Instead of using listView, you could useCustomScrollView & SliverListwhich is functionally the same as listView. returnScaffold( body: CustomScrollView( slivers: <Widget>[ SliverToBoxAdapter(// you could add any widgetchild: ListTile( leading: CircleAvatar( ...