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

pyr*_*nic 4 flutter bloc

我想了解惰性标志有什么影响。而设置为true或false又是出于什么考虑呢?

Web*_*ter 8

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

当初始化成本较高或有一些副作用时,您可以设置lazy true,即调用Restful API(在用户执行某些操作并延迟创建Bloc之前不需要调用API),否则您可以将lazy设置为false用于预取数据

  • `lazy` *是* true [默认](https://pub.dev/documentation/flutter_bloc/latest/flutter_bloc/BlocProvider/lazy.html)。 (5认同)

Riw*_*wen 5

正如文档所说:

默认情况下,Create仅在访问实例时调用。要覆盖此行为,请设置lazy为 false。

因此,影响在于何时Create被调用,以及何时(如果有的话)创建您的 BLoC。默认情况下,lazytrue,因此如果您从不访问 BLoC 的实例,则不会创建它。相反,当lazyis 时false,该Create方法将在 Widget 构建时立即调用。

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