0

我们正在 Flutter 中开发一个新的移动应用程序,我们的域层具有所有不可变的实体(我们使用的是 freezed 包),并使用 Riverpod 作为状态管理在层之间移动它们。

现在我们问自己如何编辑表单中的不可变实体。

我们为接收不可变实体的表单使用有状态小部件,直到现在,我们使用实体类中的所有字段填充了本地 Map<String, dynamic> 变量,并将表单字段与此 Map 链接。

验证数据后,我们创建了一个新的不可变实体并调用状态通知器上的方法来更新数据并传播状态。

Map<String, dynamic> 的问题在于它不是类型安全的,也不是 null 安全的,我们必须在每次访问地图以创建新实体时强制转换并检查所有内容。

有什么建议可以改进这个设计吗?

有人建议为我们实体类中将在表单上编辑的每个字段使用一个变量,但我发现它是多余的。

另一种方法是每次使用 Freezed 提供的 copyWith 在表单内更改字段时创建一个新实体,但我不确定它是否有效。

4

0 回答 0