Flutter BLoC 和不可变状态

问题描述 投票:0回答:1

有时 BLoC 状态包含多个字段,我们需要一个单独的类来存储 bloc 状态。在示例中,使用的方法是状态是不可变的对象,要更改状态,我们需要执行状态对象的完整副本:

emit(state.copyWith(status: WeatherStatus.loading));

问题是为什么我们需要让状态类不可变,这不是不必要的复制操作导致代码效率不足吗?

flutter dart bloc
1个回答
0
投票

在 Flutter 中的 BLoC 模式上下文中使状态类不可变,以及使用 copyWith 等方法发出新状态的做法植根于良好软件设计的几个原则,特别是对于反应式编程中的状态管理。

在性能至关重要且对象很大或很复杂的情况下,复制对象来更新单个字段效率低下的担忧可能是有效的。然而,在绝大多数 Flutter 应用程序中,性能影响可以忽略不计。

此外,使用 copyWith 方法更新状态还带来了可读性、简单性和可维护性。

我将可变状态称为“海盗块”。

© www.soinside.com 2019 - 2024. All rights reserved.