【发布时间】:2021-11-19 13:09:10
【问题描述】:
我是新来的颤振。我刚开始使用 GetX 颤振包。我正在开发一个待办事项列表应用程序。我在更新小部件状态时遇到问题。我所做的是我创建了一个 AddTaskController,只要单击 Add item 按钮,它就会更新 listView 状态。每个列表项都包含一个复选框。问题是我无法在单击复选框时更新列表项的状态。 这是代码: 添加任务控制器
class AddTaskController extends GetxController {
RxList<TaskItem> toDoTasksList = RxList([]);
addTask(TaskItem taskItem) {
toDoTasksList.add(taskItem);
}
removeTask(TaskItem taskItem) {
toDoTasksList.remove(taskItem);
}
}
AddTaskScreen
- 添加任务按钮
ElevatedButton.icon(
onPressed: () {
TaskItem taskItem = TaskItem(
taskStatus: TASK_STATUS.TODO,
isChecked: false,
taskName: title,
);
addTaskController.addTask(taskItem);
},
icon: Icon(Icons.add),
label: Text('Add Item'),
style: ElevatedButton.styleFrom(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
),
);
- 列表视图
Expanded(
child: Obx(
() => ListView.builder(
itemBuilder: (context, index) {
return TaskCheckItem(
value: addTaskController.toDoTasksList[index].isChecked,
title: addTaskController.toDoTasksList[index].taskName,
onChanged: (newValue) {
print(newValue);
addTaskController.toDoTasksList[index].setChecked(newValue);
},
onDownloadClicked: () {},
onDeleteClicked: () {},
);
},
itemCount: addTaskController.toDoTasksList.length,
),
),
);
【问题讨论】:
-
朋友不要让朋友使用getx。请停下来。
-
你推荐哪一个?提供者?另外,你能告诉我为什么我不应该使用 GetX 吗?
-
您确实更新了列表,但您没有向复选框发送任何值。所以复选框和列表项都没有发现父小部件有任何变化。这里 addTaskController.toDoTasksList[index].setChecked(newValue);您更新列表但不将其发送到 TaskCheckItem ,
-
为什么不使用getx?为什么讨厌 Getx?
标签: flutter dart state-management flutter-getx