一、认识组件
1.Builder组件介绍
一个
不影响子组件占位空间,不具有显示性的组件,存在的唯一价值是提供当前组件对应元素的上下文。

1 | 名称: Builder 构造器 |
2. 组件属性一览
| 属性名 | 属性类型 | 默认值 | 备注 |
|---|---|---|---|
| key | Key | null | 组件键 |
| builder | WidgetBuilder | @required | 组件构造器 |
WidgetBuilder是一个接受
BuildContext的回调函数,可以提供当前组件元素所在的上下文。
由于组件build方法中的context是上级回调来的,如果在本组件类中Scaffold.of(context)弹出snackbar等时,则无法获得ScaffoldState。可以使用Builder将context下沉一层,从而可以上溯拿到ScaffoldState。
1 | typedef WidgetBuilder = Widget Function(BuildContext context); |
二、使用组件
1. 应用于Scaffold.of(context)
当在Scaffold的同类中使用of时,可以选择
新建一个Widget来实现context的下沉,保证ScaffoldState的存在。但如果是非常简单的组件,你可以考虑使用Builder。

1 | class BuilderDemo extends StatelessWidget { |
2. 其他用途
对应使用
XXX.of获取某类状态对象方法都存在这种现象,当无法获取时,可以查看是否是上下文滞后的错误,使用Builder解决。
1 | Scaffold.of(context) |
三、尾声
FlutterUnit开源项目: https://github.com/toly1994328/FlutterUnit
我的公众号:编程之王
联系我–邮箱:1981462002@qq.com –微信:zdl1994328
@张风捷特烈 2020.04.29
~ END ~