【问题标题】:Flutter immutables: rebuilding immutable collection using `freezed` + `kt_dart`Flutter immutables:使用 `freezed` + `kt_dart` 重建不可变集合
【发布时间】:2020-08-11 13:51:41
【问题描述】:

我有几个freezed 模型:

@freezed
abstract class User with _$User {
  factory User({
    @required KtMap<int, House> houses,
  }) = _User;
}

@freezed
abstract class House with _$House {
  factory House({
    @required KtSet<Room> rooms,
  }) = _House;
}

enum Room { bedroom, kitchen, toilet, hall, boxroom }

我也有收藏

  KtMap<int, User> _users = mapFrom({
    1: User(
      houses: mapFrom({
        1: House(
          rooms: setFrom(
            Room.values.toSet(),
          ),
        )
      }),
    ),
  });

  KtMap<int, User> get users => _users.toMap();

我的目标是从内部地图中删除 1 个房间并返回更新后的集合。我怎样才能正确地做到这一点? 这是我的尝试(不工作):

  void removeRoom(int userId, int houseId, Room room) {
    _users[userId].copyWith().houses[houseId].rooms.toMutableSet()..remove(room);

    notifyListeners();
  }

不要建议我built_value,由于语法丑陋,我不想使用它。

【问题讨论】:

    标签: flutter dart model immutability provider


    【解决方案1】:

    我花了很多时间,但我找到了解决方案:

    【讨论】:

      猜你喜欢
      • 2021-12-04
      • 1970-01-01
      • 1970-01-01
      • 2016-02-02
      • 1970-01-01
      • 2021-01-12
      • 1970-01-01
      • 2021-03-23
      • 2021-06-21
      相关资源
      最近更新 更多