Flutter Bloc 官方文档(BlocBuilder翻译)

时间:2022-07-23
本文章向大家介绍Flutter Bloc 官方文档(BlocBuilder翻译),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

什么是Bloc,为什么用Flutter Bloc 就不介绍了,直入主题。

Bloc Widgets

BlocBuilder

BlocBuilder 是一个Flutter widget,它需要一个bloc和一个builder函数,BlocBuilder用响应 的新状态构建一个widget,BlocBuilderStreamBuilder十分相似,但是它有一个更简单的API来减少所需的样板代码数量,builder函数可能会被多次调用,并且应该是一个纯函数,它返回一个小部件来响应状态。

如果你想去做一些响应状态改变的事情,比如导航,显示dialog等等,你可以看一下BlocListener

如果BlocBuilder 省略参数bloc参数,BlocBuilder会自动找到用BlocProvider和当前BlocProvider查询到的bloc填充

BlocBuilder<BlocA, BlocAState>(
  builder: (context, state) {
    // return widget here based on BlocA's state
  }
)

如果你希望去提供一个特定的bloc,而不是通过BlocProvider和上下文查找决定。那么可以这么写:

BlocBuilder<BlocA, BlocAState>(
  bloc: blocA, // provide the local bloc instance
  builder: (context, state) {
    // return widget here based on BlocA's state
  }
)

对于何时调用builder函数的细粒度控制,可以提供一个可选参数buildWhen。buildWhen获取bloc前一个状态和当前状态,并返回一个布尔值。如果buildWhen返回true,那么将使用state调用builder,widget将重新构建。如果buildWhen返回false,则不会调用带有状态的builder,也不会发生任何重建。