当我从AsyncSelectInputForm中更改"Ulke“值时,我调用notifyListeners()方法,使"Il”值为null。
当我这样做时,我在"Adres Başlığı“中输入的值返回到它的初始值。
我的小部件:
@override
Widget build(BuildContext context) {
var cariAdres = Provider.of<CariAdresProvider>(context);
return Column(
children: [
TextInputForm(
initialValue: cariAdres.cariAdres?.adresBasligi,
label: "Adres Başlığı",
onChanged: (value) {
cariAdres.cariAdresTemp =
cariAdres.cariAdresTemp?.copyWith(
adresBasligi: value,
);
},
),
//todo ulke select
AsyncSelectInputForm(
pageTitle: "Ülke Seç",
label: "Ülke",
initialLabel: cariAdres.cariAdresTemp?.ulkeIdStr,
labelSetter: (item) {
return item.ulkeStr;
},
onChanged: (value, item, context) {
cariAdres.cariAdresTemp =
cariAdres.cariAdresTemp?.copyWith(
ulkeId: value,
ulkeIdStr: item.ulkeStr,
ilId: null,
ilIdStr: null,
);
cariAdres.notifyListeners();
},
fetchPage: //...,
),
//todo il select
AsyncSelectInputForm(
initialValue: cariAdres.cariAdresTemp?.ilId,
//... same code
)
//....
发布于 2022-03-10 14:39:35
我的问题是,我已经将initialValue of TextInputForm设置为cariAdres.cariAdres?.adresBasligi值,并将cariAdres.cariAdresTemp?.ulkeIdStr值设置为AsyncSelectInputForm's initialLabel。
我能够通过将cariAdres.cariAdres?.adresBasligi值替换为cariAdres.cariAdresTemp?.adresBasligi值来解决这个问题。:)
发布于 2022-03-10 14:00:39
它可以有很多的可能性,所以我们不能确定哪一个是正确的。但是您可以尝试在构建方法中添加一些debugPrint,这样可以扩展对情况的理解。
另外,它可以是关于更改通知程序提供程序中的一些逻辑的,也可以是关于小部件树状态的,也可以是关于您的子部件的。
https://stackoverflow.com/questions/71424967
复制相似问题