更改子级的属性不会触发Flutter Getx上的UI更改

问题描述

我正在尝试基于对象列表渲染反应式窗口小部件。

我需要在此对象的子代的布尔属性发生变化时,应该更新用户界面。

在这种情况下,我的控制器有一个“节”列表,每个节都有一个“课程”列表。

为了更好地理解,我根据自己的需要重写了一个简单的示例代码。 我已经尝试使用.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 (将#修改为@)