Flutter不可变:使用`freezed` +`kt_dart`重建不可变集合

问题描述

我有几个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,由于语法丑陋,我不想使用它。

解决方法

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

solution

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...