flutter系列之:builder为构造器而生( 二 )

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
最通俗的解读 , 最深刻的干货 , 最简洁的教程 , 众多你不知道的小技巧等你来发现!
欢迎关注我的公众号:「程序那些事」,懂技术 , 更懂你!

经验总结扩展阅读