如何解决Flutter:如何处理具有不同数据的相似组件的状态变化
使用的技术:[提供者]。
我正在为当地农民开发一个应用程序,但遇到了这个问题:
我有一个 List<Task>
,我的组件数量基于此任务列表的长度,此外每个组件都显示子任务,如标题、已完成_大小等......
List<Task> = [Task(
title: "Simple task",start_date : "2020-10-20",end_date : "2020-11-20",completed_size : "90.0",overall_size : "120.0",sub_tasks : <SubTask>[
SubTask(
title: "Sub Task 1 of Task 1",completed : "10.0",),SubTask(
title: "Sub Task 2 of Task 1",]
),Task(
title: "Simple task 2",completed_size : "80.0",sub_tasks : <SubTask>[
SubTask(
title: "Sub Task 1 of Task 2",SubTask(
title: "Sub Task 1 of Task 2",completed : "70.0",]
实际上,我将它们显示为带有水平滚动视图的卡片,除了我尝试过滤它们时,一切正常:selectTask()
和我的 selectedTask
属性成为一项单一任务。问题是 SubTasks
的 Tasks
是不同的,当我 selectTask()
这个选定的任务适用于这两个任务,这当然会导致问题:
我的图表卡:
Expanded(
child: Row(
children: [
Expanded(
child: Consumer<Dashboard>(
builder: (ctx,task,_) =>
GaugeChart.withSampleData(
animate: false,taskName: task.selectedTask.title,color: Theme.of(context).accentColor,completedValue:
task.selectedTask.completedSize,totalValue: widget.item.totalSize,))
],
我的 selectTask()
函数
void selectTask(int cropId,int taskId) {
int taskIndex = crops.indexWhere((element) => element.id == cropId);
_selectedTask =
crops[taskIndex].tasks.firstWhere((element) => element.id == taskId);
notifyListeners();
}
显示循环
Container(
height: 380,child: Consumer<Dashboard>(
builder: (ctx,crops,_) => PageView.builder(
physics: BouncingScrollPhysics(),itemCount: crops.crops.length,controller: PageController(
viewportFraction: 0.95,onPageChanged: (int index) => setState(() {
_index = index;
}),itemBuilder: (_,i) {
return ChartCard(
i: i,index: _index,item: crops.crops[i],);
},
P.S 我已将 Task
存储为作物(按照要求)
问题:
如何选择一个任务并只修改一个其子项已更改的 Card 组件,而无需触及其他 Card 组件,因为它没有存储在其他任务中的 SubTask
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。