首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flutter不可变:使用`freezed` + `kt_dart`重建不可变集合

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

Stack Overflow用户
提问于 2020-08-11 21:51:41
回答 1查看 162关注 0票数 1

我有几个freezed模型:

代码语言:javascript
复制
@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 }

我还有一套收藏

代码语言:javascript
复制
  KtMap<int, User> _users = mapFrom({
    1: User(
      houses: mapFrom({
        1: House(
          rooms: setFrom(
            Room.values.toSet(),
          ),
        )
      }),
    ),
  });

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

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

代码语言:javascript
复制
  void removeRoom(int userId, int houseId, Room room) {
    _users[userId].copyWith().houses[houseId].rooms.toMutableSet()..remove(room);

    notifyListeners();
  }

不要建议我使用built_value,我不想使用它,因为它的语法很难看。

EN

回答 1

Stack Overflow用户

发布于 2020-08-12 23:30:07

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63359647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档