Flutter 我想在颤振中将我的行分成1/4的比例

Flutter 我想在颤振中将我的行分成1/4的比例,flutter,flutter-layout,Flutter,Flutter Layout,我想把颤振中的行分成4列,每列的宽度相同。到目前为止,我想出的解决办法是 child: Row( children: <Widget>[ Container( width: MediaQuery.of(context).size.width * 0.25, decoration: BoxDecoration(color: Colors.greenAccent), ),

我想把颤振中的行分成4列,每列的宽度相同。到目前为止,我想出的解决办法是

   child: Row(
        children: <Widget>[
          Container(
            width: MediaQuery.of(context).size.width * 0.25,
            decoration: BoxDecoration(color: Colors.greenAccent),
          ),
          Container(
            width: MediaQuery.of(context).size.width * 0.25,
            decoration: BoxDecoration(color: Colors.yellow),
          ),
          Container(
            width: MediaQuery.of(context).size.width * 0.25,
            decoration: BoxDecoration(color: Colors.blue),
          ),
          Container(
            width: MediaQuery.of(context).size.width * 0.25,
            decoration: BoxDecoration(color: Colors.white),
          ),
        ],
      ),
子项:行(
儿童:[
容器(
宽度:MediaQuery.of(context).size.width*0.25,
装饰:盒子装饰(颜色:颜色。绿色调),
),
容器(
宽度:MediaQuery.of(context).size.width*0.25,
装饰:盒子装饰(颜色:颜色。黄色),
),
容器(
宽度:MediaQuery.of(context).size.width*0.25,
装饰:盒子装饰(颜色:颜色。蓝色),
),
容器(
宽度:MediaQuery.of(context).size.width*0.25,
装饰:盒子装饰(颜色:彩色。白色),
),
],
),

除此之外还有其他选择吗。在这种方法中,将行划分为1/3的比例也不起作用。

您可以使用
扩展的
灵活的
,默认情况下它有
flex:1
,您可以根据需要更改值

  Row(
    children: [
      Expanded(
        flex: 1, // you can play with this value, by default it is 1
        child: Child1(),
      ),
      Expanded(
        flex: 1, 
        child: Child2(),
      ),
      Expanded(
        flex: 1, 
        child: Child3(),
      ),
      Expanded(
        flex: 1, 
        child: Child4(),
      ),
    ],
  );

您可以通过使用
扩展小部件

检查以下代码:

它工作得非常好

1) 比例为1/3

行(
儿童:[
扩大(
弹性:1,
子:容器(
宽度:MediaQuery.of(context).size.width*0.25,
装饰:盒子装饰(颜色:颜色。绿色调),
),
),
扩大(
弹性:1,
子:容器(
宽度:MediaQuery.of(context).size.width*0.25,
装饰:盒子装饰(颜色:颜色。黄色),
),
),
扩大(
弹性:1,
子:容器(
宽度:MediaQuery.of(context).size.width*0.25,
装饰:盒子装饰(颜色:颜色。蓝色),
),
),
],
),
1) 比例为1/4

行(
儿童:[
扩大(
弹性:1,
子:容器(
宽度:MediaQuery.of(context).size.width*0.25,
装饰:盒子装饰(颜色:颜色。绿色调),
),
),
扩大(
弹性:1,
子:容器(
宽度:MediaQuery.of(context).size.width*0.25,
装饰:盒子装饰(颜色:颜色。黄色),
),
),
扩大(
弹性:1,
子:容器(
宽度:MediaQuery.of(context).size.width*0.25,
装饰:盒子装饰(颜色:颜色。蓝色),
),
),
扩大(
弹性:1,
子:容器(
宽度:MediaQuery.of(context).size.width*0.25,
装饰:盒子装饰(颜色:彩色。白色),
),
),
],
),
见下面的输出:


我希望这能回答您的问题。

因为上面的解决方案中没有提到这一点。Flex是可用小部件中所占的比例。如果您使用两个扩展的小部件,一个用于flex 1,另一个用于flex 3,那么可用空间将被第一个扩展的小部件占用1/4,另一个占用3/4

Row(
      children: <Widget>[
        Expanded(
          flex: 1,
          child: Container(
            width: MediaQuery.of(context).size.width * 0.25,
            decoration: BoxDecoration(color: Colors.greenAccent),
          ),
        ),
        Expanded(
          flex: 1,
          child: Container(
            width: MediaQuery.of(context).size.width * 0.25,
            decoration: BoxDecoration(color: Colors.yellow),
          ),
        ),
        Expanded(
          flex: 1,
          child: Container(
            width: MediaQuery.of(context).size.width * 0.25,
            decoration: BoxDecoration(color: Colors.blue),
          ),
        ),
      ],
    ),
Row(
      children: <Widget>[
        Expanded(
          flex: 1,
          child: Container(
            width: MediaQuery.of(context).size.width * 0.25,
            decoration: BoxDecoration(color: Colors.greenAccent),
          ),
        ),
        Expanded(
          flex: 1,
          child: Container(
            width: MediaQuery.of(context).size.width * 0.25,
            decoration: BoxDecoration(color: Colors.yellow),
          ),
        ),
        Expanded(
          flex: 1,
          child: Container(
            width: MediaQuery.of(context).size.width * 0.25,
            decoration: BoxDecoration(color: Colors.blue),
          ),
        ),
        Expanded(
          flex: 1,
          child: Container(
            width: MediaQuery.of(context).size.width * 0.25,
            decoration: BoxDecoration(color: Colors.white),
          ),
        ),
      ],
    ),