![](/img/trans.png)
[英]ValueListenableBuilder is not rebuilding the screen, when hotreloading, it is working
[英]ValueListenableBuilder not rebuilding a CheckboxListTile Flutter
我正在嘗試運行一個方法來更新CheckboxListTile
的值,因為我在Globals.data.updateFilterSelection(newFilters);
該方法運行良好並且它會更新(用打印測試它),但是當我更改它的值時, ValueListenableBuilder
不會重建CheckboxListTile
。
我有三個具有相同代碼但邏輯不同的CheckboxListTile
,它們都在監聽Globals.data.filterSelection,
我錯過了什么?
您好,代碼如下:
ValueListenableBuilder<Map>(
valueListenable: Globals.data.filterSelection,
builder: (context, value, _) {
return CheckboxListTile(
activeColor: Theme.of(context).indicatorColor,
value: value['all_neighbors'],
secondary: Icon(
Icons.people,
color: Theme.of(context).indicatorColor,
),
title: Text(
'All Neighbors',
style: Theme.of(context).textTheme.bodyText1,
),
onChanged: (newValue) {
if (newValue) {
newFilters
..update('inactive', (value) => false)
..update('active', (value) => false)
..update('all_neighbors', (value) => true);
} else {
newFilters
..update('inactive', (value) => true)
..update('all_neighbors', (value) => false);
}
Globals.data.updateFilterSelection(newFilters);
},
);
}),
這也是我的ValueNotifier
和調用的方法:
ValueNotifier<Map> filterSelection = ValueNotifier<Map>({
'inactive': true,
'active': false,
'all_neighbors': false,
});
/// Changes the filter selection
void updateFilterSelection(Map newFilter) {
filterSelection.value = newFilter;
print(filterSelection.value);
}
提前致謝
我發現ValueListenableBuilder
不會在<Map>
類型上重建,它需要是一個可以與==
運算符進行比較的單個值,如所述。
當值被替換為不等於由相等運算符 == 評估的舊值時,此 class 會通知其偵聽器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.