
文章插图
如果我们给外层的添加一个padding如下:
Widget build(BuildContext context) {return Center(child: Container(padding: const EdgeInsets.all(20.0),color: blue,child: Container(color: green, width: 30, height: 30),),);}
那么外层现在就比内层的widget要大了,颜色也可以展示出来了:
文章插图
我们再来看下面的例子:
Widget build(BuildContext context) {return ConstrainedBox(constraints: const BoxConstraints(minWidth: 70,minHeight: 70,maxWidth: 150,maxHeight: 150,),child: Container(color: blue, width: 10, height: 10),);}
上面的例子在Container外面添加了一个ConstrainedBox,指定了四个constraints属性,但是这个ConstrainedBox并不会应用到child上,所以最终得到的界面还是全部的蓝色 。为什么呢?这是因为不同的widget对constraints有不同的定义 , 对于ConstrainedBox来说,他是一个对其子项施加额外约束的小部件 。记?。?这里是额外的约束 。因为对于它的parent来说,约束已经制定好了,所以ConstrainedBox会被忽略 。
我们再看下下面的代码:
Widget build(BuildContext context) {return Center(child: ConstrainedBox(constraints: const BoxConstraints(minWidth: 70,minHeight: 70,maxWidth: 150,maxHeight: 150,),child: Container(color: blue, width: 10, height: 10),),);}
这里因为使用了Center,Center会让child来自行决定他们的大小 , 所以这里的ConstrainedBox是生效的,如下:
文章插图
flutter中除了ConstrainedBox,还有一个UnconstrainedBox,它的作用和ConstrainedBox是相反的,大家可以自行尝试 。
总结从上面的具体例子,我们可以看出,虽然我们有通用的Constraint规则,但是具体的表现还是要看不同的widget来定 。
所以大家在使用widget的时候 , 一定要去读一下widget的代码,从而加深对widget的掌握 。
本文的例子:https://github.com/ddean2009/learn-flutter.git
更多内容请参考 http://www.flydean.com/13-flutter-ui-constraints/【flutter系列之:深入理解布局的基础constraints】
最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!
推荐阅读
- NIKKE胜利女神无限之塔怎么玩
- 洛克王国梦之必争之地活动是什么
- 26 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何抓取Android7.0以上的Https包-上篇
- 咸鱼之王最新招募令活动怎么玩
- 永恒岛之彩虹世界为什么换了高级装备反而掉
- oppo手机怎样截屏(oppo哪个系列最好用)
- 25 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何优雅地在正式和测试环境之间来回切换-下篇
- Opengl ES之FBO
- 咸鱼之王嘉年华活动怎么玩
- 华为nova9系列支持5g吗_华为nova9系列支不支持5g