21、Flutter Widget - LimitedBox ;

526 阅读1分钟

  一些Widget会根据父级定义的约束来设置它们的大小。但是ListView,RowColumnWidget很难使其子项的大小保持平衡。

  当一个Widget没有父级来限制它的大小时,要想给它一个默认的大小可以使用LimitedBox ;

  仅当LimitedBox的父级未约束大小时,LimitedBox才会为其子级提供默认大小。当父Widget约束大小时,LimitedBox无效。

  如下例子中,外部Widget已经为其子容器设置了大小约束,此时将其包装在LimitedBox中,将不会执行任何操作。

Container(
    height:300,
    width:300,
    child:LimitedBox(
    maxHeight:150,
    maxWidth:150,
    child:Container(
      color:Colors.green,
    ),
    ),
 ) 

  当LimitedBoxListView一起使用时,LimitedBox将发挥很大的作用:

ListView(
   children:[
    for(var i = 0;i<10;i++)
    Container(
     color:randomColor(),
    ),
  ],
)

  当像上面这样设置时,ListView将不会显示任何东西。因为Container在不受约束时,会将其大小设置为0

ListView(
   children:[
    for(var i = 0;i<10;i++)
    LimitedBox(
    maxHeight:200,
    child:Container(
     color:randomColor(),
    ),
     ),
  ],
)

  如果将Container包裹在LimitedBox中,并设置最大高度,然后就会正常地显示。