18、Flutter Widget - LimitedBox;

373 阅读1分钟

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

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

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

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

  在上面的例子中,外部Widget已经为其子Widget设置约束,此时将其包装在LimitedBox中,不会执行任何操作。

  当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中,并设置最大高度,然后就会正常的显示。