簡體   English   中英

ValueListenableBuilder 不重建 CheckboxListTile Flutter

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM