【问题标题】:ValueListenableBuilder not rebuilding a CheckboxListTile FlutterValueListenableBuilder 不重建 CheckboxListTile Flutter
【发布时间】:2020-10-19 23:05:26
【问题描述】:

我正在尝试运行一个更新CheckboxListTile 值的方法,因为我在Globals.data.updateFilterSelection(newFilters); 末尾传递了新值,该方法运行良好并且它会更新(用打印测试它),但是@当我更改其值时,987654323@ 不会重建 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);
  }

提前致谢

【问题讨论】:

    标签: flutter dart flutter-provider


    【解决方案1】:

    我发现ValueListenableBuilder 不会在&lt;Map&gt; 类型上重建,它需要是一个可以与== 运算符进行比较的单个值,如上所述。

    当值被替换为不等于由相等运算符 == 评估的旧值时,此类会通知其侦听器。

    【讨论】:

      猜你喜欢
      • 2020-11-10
      • 2021-07-19
      • 2022-11-28
      • 2020-02-12
      • 1970-01-01
      • 2019-05-29
      • 1970-01-01
      • 2023-04-08
      • 2021-08-19
      相关资源
      最近更新 更多