BlocProvider 中的惰性标志有什么影响?

What is the impact of the lazy flag in BlocProvider?

我想了解懒惰标志有什么影响。以及设置为true或false的注意事项是什么?

正如 docs 所说:

By default, Create is called only when the instance is accessed. To override this behavior, set lazy to false.

因此,影响是 Create 何时被调用,因此(如果 完全 )您的 BLoC 何时被创建。默认情况下,lazytrue,因此如果您从未访问 BLoC 的实例,则不会创建它。反之,当lazyfalse时,Widget构建时会立即调用Create方法

在幕后,价值被传递给底层InheritedProvider

当它为真时,Bloc 或 Cubit 应该延迟创建,这意味着直到第一次请求访问 Bloc 时,它才被提供者创建,例如 context.read<MyBloc>

你可以设置 lazy true 当初始化是昂贵的,或者它有一些副作用,即调用 Restful API (不需要调用 API 直到用户做一些动作并懒惰地创建 Bloc) 在另一边你可以将 lazy 设置为 false 以预取数据