Flutter 避免创建多个 bloc

Flutter avoid multiple bloc creation

我用MaterialApp.router。 MainRouterDelegate 的构建函数被调用了 4 次。 每次调用时,都会创建一个屏幕及其块。 在集团中,我进行 HTTP 调用。我不想每次创建 bloc 时都进行相同的调用。 我怎样才能避免这种情况?

多个选项:

  1. 如果整个应用程序中只有一个bloc实例,您可以在MaterialApp之上添加一个BlocProvoder,该bloc将在应用程序中的任何位置可用,适用于任何路线。

  2. 如果您需要即时创建由某个唯一 id 标识的特定元素的块,但您希望确保只创建一次,则您可以基本上使用主块或只需 getIt 即可跟踪 ID 映射到已实例化的块。当您需要在可能被重复调用的构建函数中提供一个 bloc 时,只需首先检查您是否已经拥有您试图在 bloc-map 中提供的 bloc 的副本。如果没有,创建一个并使用元素的 ID 保存它。