问题描述
我需要更新 ListView 小部件内的列表,所以我设置了一个 valuenotifierbuilder,如下所示:
final ValueNotifier<ModelRegis> modelFoto =
ValueNotifier<ModelRegis>(ModelRegis());
模型的结构是这样的
class ModelRegis {
String loadFoto;
bool adaFoto;
int idFotoUser,index;
List<Widget> independentFoto;
ModelRegis(
{this.loadFoto = "done",this.adaFoto = false,this.idFotoUser,this.index,this.independentFoto});
}
这是我尝试使用 ValueListenableBuilder 更新小部件的方法
ValueListenableBuilder(
valueListenable: modelFoto,builder: (_,val,__) {
List<Widget> listFuture = [];
if (val.adaFoto) {
Widget dummyList =
Text("after click");
List temp = val.independentFoto;
temp[val.index] = dummyList;
modelFoto.value = ModelRegis(
loadFoto: modelFoto
.value.loadFoto,adaFoto:
modelFoto.value.adaFoto,idFotoUser: modelFoto
.value.idFotoUser,index:
modelFoto.value.index,independentFoto: temp);
// modelFoto.notifyListeners();
print("2. $temp");
print(
"2. ${val.independentFoto}");
// modelFoto.notifyListeners();
return ListView(
physics:
const AlwaysScrollableScrollPhysics(),shrinkWrap: false,children:
val.independentFoto);
}
我尝试打印val.independentFoto
,结果是这样的
[Text("after click"),FutureBuilder<dynamic>,FutureBuilder<dynamic>]
但是ListView中的返回结果总是不更新,所以会返回一个由这样的widget组成的List
[FutureBuilder<dynamic>,FutureBuilder<dynamic>]
返回结果不会在第一个索引处将小部件更新为 Text("after click")
是否有正确的方法来更新 ValueListenableBuilder 中的小部件列表?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)