flutter - Flutter immutables:使用 `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
,由于语法丑陋,我不想使用它。
解决方案
推荐阅读
- spring-boot - 是否可以仅基于配置文件加载特定的注释?
- mysql - 我应该编写冗长的 SQL 查询还是分解为几个迭代
- swift - 能够在实际设备上运行应用程序但无法调用 API
- java - 为空手道中的每个元素匹配字符串 json 数组响应
- coldfusion - 无法通过 ColdFusion 在浏览器中禁用 HttpOnly 标志
- python - 检查一列中的每个值与一个数据框中其他列的每个值
- sql - Oracle SQL:无法根据多于一列的索引创建外键
- javascript - 如何获取数组
- angular - 特性模块中的延迟加载 - Angular
- spring-boot - Spring Webflux WebExceptionHandler 未被 OptimisticLockingFailure 触发