问题描述
我正在尝试基于对象列表渲染反应式窗口小部件。
我需要在此对象的子代的布尔属性发生变化时,应该更新用户界面。
在这种情况下,我的控制器有一个“节”列表,每个节都有一个“课程”列表。
为了更好地理解,我根据自己的需要重写了一个简单的示例代码。 我已经尝试使用.map,.forEach和其他方法,但是children属性从未触发过UI更新。
GetX<LessonController>(
initState: (state) => controller.getLessonsByCourse(course.id),builder: (_) {
return Expanded(
child: ListView.separated(
scrollDirection: Axis.vertical,itemCount: _.sectionList.length,itemBuilder: (BuildContext context,int index) {
return ExpansionTile(
title: Text(_.sectionList[index].title),children: <Widget>[
for(var i = 0; i < _.sectionList[index].lessons.length; i++)
Padding(
padding: const EdgeInsets.all(8.0),child:
Obx(() =>
GestureDetector(
child: Text((_.sectionList[index].lessons[i] as Lesson).isCompleted.toString()),onTap: () {
(_.sectionList[index].lessons[i] as Lesson).isCompleted = !(_.sectionList[index].lessons[i]as Lesson).isCompleted;
print((_.sectionList[index].lessons[i]as Lesson).isCompleted.toString());
})
),)
]);
},separatorBuilder: (context,ind) => Divider(
height: 2,color: Colors.grey[300],),);
})
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)