如何解决在同一BLoC中持久保存多个变量的最佳方法
我有一个BLoC(使用flutter_bloc),它具有多个可能的状态,并且(现在,随着我向UI的这一部分添加更多功能,它可能会变得更多)它需要在状态更改之间保持不变的三个不同变量,除非明确地改变了。我发现在制作应用程序时这种情况经常发生,并且我正在寻找一种更好的解决方案,而不是通过每个状态的构造函数在每个不同的状态更改(大量样板)上手动复制不同的变量,或者(使用)BLoC观察者来复制避风港的变量在不同州之间没有变化。
我最好的想法是创建一个用于容纳不同变量的模型,并在状态变化之间传递模型,但这是错误的。你们做什么?
解决方法
现在,我选择将最后一个状态作为参数提供给超类构造函数,并像这样复制值。我唯一可以看到的问题是,除非调用时要取消复制状态并提供所有其他非null参数,否则它们不能为null。
abstract class TaskEditorState {
final TaskModel task;
final TaskModel original;
final bool adjustByEstimate;
TaskEditorState({
@required TaskEditorState copyFrom,TaskModel original,TaskModel task,bool adjustByEstimate,}) : this.original = original ?? copyFrom?.original,this.task = task ?? copyFrom?.task,this.adjustByEstimate =
adjustByEstimate ?? copyFrom?.adjustByEstimate;
}
class TaskEditorInitial extends TaskEditorState {
TaskEditorInitial(
{@required TaskModel task,@required TaskModel original,@required adjustByEstimate})
: super(
copyFrom: null,task: task,original: original,adjustByEstimate: adjustByEstimate);
}
class TaskEditorNameEdited extends TaskEditorState {
TaskEditorNameEdited({@required TaskEditorState copyFrom})
: super(copyFrom: copyFrom);
}
// ...
class TaskEditorCreatedTask extends TaskEditorState {
TaskEditorCreatedTask(
{@required TaskEditorState copyFrom,TaskModel task})
: super(copyFrom: copyFrom,task: task);
}
// ...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。