一、认识组件
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 ~