flutter - ValueListenableBuilder 不重建 CheckboxListTile Flutter
问题描述
我正在尝试运行一个方法来更新 a 的值,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>
类型,它需要是一个可以与==
运算符进行比较的单个值,如所述。
当值被替换为不等于由相等运算符 == 评估的旧值时,此类会通知其侦听器。
推荐阅读
- javascript - 将类实例保存到 Vue 数据
- here-api - 使用资源参数开发基于方向的查询区域
- matlab - Matlab 在运行长 for 循环后崩溃
- android - 谷歌地图是否使用 fusedlocationproviderclient?如果是的话,谷歌地图比我在我的位置记录器应用程序中使用它更快吗
- android - react-native run-android 构建错误 - 无法解决:com.android.support:appcompat-v7:26.0.2
- java - 自定义对话框未正确显示
- node.js - 在 Nest.js 中创建动态模块时,我应该使用 registerAsync 还是 forRootAsync?
- swift - 如何快速制作tabata计时器
- node.js - 无法从 index.js 解析模块 @babel/runtime/helpers/interopRequireDefault
- html - 如何在 Jekyll 生成的页面中渲染背景图像?