LayoutBuilderBuilder可以传递BuildContext , StatefulBuilder可以传递StateSetter , LayoutBuilder和上面提到的两个Builder很类似 , 不同的是LayoutBuilder可以提供父widget的大小 。
我们先来看下LayoutBuilder的定义:
class LayoutBuilder extends ConstrainedLayoutBuilder<BoxConstraints>
可以看到LayoutBuilder继承的类是不同的 。
LayoutBuilder需要传入一个builder属性 , 这个builder是一个LayoutWidgetBuilder对象:
typedef LayoutWidgetBuilder = Widget Function(BuildContext context, BoxConstraints constraints);
具体的使用方法和Builder很类似 , 不同的是我们可以根据传入的BoxConstraints来进行对应的逻辑判断 。
看一个具体的例子:
class LayoutBuilderApp extends StatelessWidget{@overrideWidget build(BuildContext context) {return LayoutBuilder(builder: (BuildContext context, BoxConstraints constraints) {if (constraints.maxWidth > 500) {return buildWidget1();} else {return buildWidget2();}},);}Widget buildWidget1() {return Center(child: Container(height: 700.0,width: 700.0,color: Colors.blue,),);}Widget buildWidget2() {return Center(child: Container(height: 200.0,width: 200.0,color: Colors.yellow,),);}
上面的例子中 , 我们根据BoxConstraints的大小 , 来返回不同的Widget组件 。
这在某些情况下是非常有用的 。
总结本文介绍了三个常用的Builder , 大家可以仔细体会 。
本文的例子:https://github.com/ddean2009/learn-flutter.git
【flutter系列之:builder为构造器而生】更多内容请参考 www.flydean.com
最通俗的解读 , 最深刻的干货 , 最简洁的教程 , 众多你不知道的小技巧等你来发现!
欢迎关注我的公众号:「程序那些事」,懂技术 , 更懂你!
经验总结扩展阅读
- 王者荣耀妲己时之奇旅皮肤的台词都有什么
- 地下城堡2:黑暗觉醒图28漩涡之底怎么通关
- 云南之滇是什么意思
- 海蓝之谜粉底液真伪怎么辨别?
- 海蓝之谜精华液的功效与作用?
- 分手之后短时间都不会再爱的四大星座
- 乙木女和癸水男正好相配 天作之合要珍惜
- 丙火对己土最好 天作之合互相包容
- 丙火男和戊土女属天作之合 婚后感情稳固甜美
- 伤官格女和什么命格最配 三观相合之配