Flutter 颤振';她灵活的行为

Flutter 颤振';她灵活的行为,flutter,flutter-layout,Flutter,Flutter Layout,我想把蓝色调满。 但它只扩散到一半 类TestScene扩展了无状态小部件{ @凌驾 小部件构建(构建上下文){ 返回脚手架( appBar:appBar(), 正文:世界其他地区( mainAxisAlignment:mainAxisAlignment.spaceBetween, 儿童:[ 灵活的( 适合:FlexFit.宽松, 子:容器( 颜色:颜色,红色, 子项:常量文本('1'), ), ), 灵活的( 适合:FlexFit.宽松, 子:容器( 颜色:颜色,蓝色, 子项:const T

我想把蓝色调满。
但它只扩散到一半

类TestScene扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(),
正文:世界其他地区(
mainAxisAlignment:mainAxisAlignment.spaceBetween,
儿童:[
灵活的(
适合:FlexFit.宽松,
子:容器(
颜色:颜色,红色,
子项:常量文本('1'),
),
),
灵活的(
适合:FlexFit.宽松,
子:容器(
颜色:颜色,蓝色,
子项:const Text('123456789001234567890123456789012345678901234567890'),
),
),
],
),
);
}
}
反之亦然。

这两种情况都很好。

展开的
将要填充空间的内容包装起来。如果希望红色和蓝色都填充该行,请使用
Expanded
包装它们,并使用flex属性为它们指定各自的比率

class TestScene extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Row(
        children: <Widget>[
          Container(
              color: Colors.red,
              child: const Text('1'),
            ),
          Expanded(
            child: Container(
              color: Colors.blue,
              child: const Text('1234567890123456789012345678901234567890'),
            ),
          ),
        ],
      ),
    );
  }
}
类TestScene扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(),
正文:世界其他地区(
儿童:[
容器(
颜色:颜色,红色,
子项:常量文本('1'),
),
扩大(
子:容器(
颜色:颜色,蓝色,
子项:const Text('123456789001234567890123456789012345678901234567890'),
),
),
],
),
);
}
}
这是一种方式!(占用剩余空间)

stringone='1',two='123456789001234567890123456789012345678901234567890';
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(),
背景颜色:Colors.white,
正文:世界其他地区(
mainAxisSize:mainAxisSize.max,
儿童:[
1.length>=2.length?
扩大(
子:容器(
颜色:颜色,红色,
儿童:文本(一),
),
):容器(
颜色:颜色,红色,
儿童:文本(一),
),
2.长度>=1.长度?
扩大(
子:容器(
颜色:颜色,蓝色,
儿童:文本(二),
),
):容器(
颜色:颜色,蓝色,
儿童:文本(二),
),
],
),
);
}

或者为了保持颜色大小相等,只需在两个小部件中使用Expanded,我无法发布任何图像,因为我没有至少10个级别。是否要将蓝色/红色填充到剩余空间,或者将一半的蓝色和红色分别填充50%而不显示字符串大小?否。我希望尽可能显示所有长度不定的两个字符串。如果红色是长文本,布局将崩溃。。。我想用问题中的三种模式实现一个漂亮的布局。只需将红色容器包装成展开的。对不起,为了清晰起见,示例中仅使用文本,事实很复杂。这一次的问题是,有足够的空间,但使用两个Flexible,您最多只能获得一半的空间。您可以用任何方式替换一个和文本!?
class TestScene extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Row(
        children: <Widget>[
          Container(
              color: Colors.red,
              child: const Text('1'),
            ),
          Expanded(
            child: Container(
              color: Colors.blue,
              child: const Text('1234567890123456789012345678901234567890'),
            ),
          ),
        ],
      ),
    );
  }
}
String one='1',two='1234567890123456789012345678901234567890';


  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      backgroundColor:Colors.white,
      body: Row(
        mainAxisSize:MainAxisSize.max,
        children: <Widget>[
          one.length>=two.length ?
          Expanded(
            child: Container(
              color: Colors.red,
              child: Text(one),
            ),
          ):Container(
              color: Colors.red,
              child: Text(one),
            ),
          two.length>=one.length ?
          Expanded(
            child: Container(
              color: Colors.blue,
              child: Text(two),
            ),
          ):Container(
              color: Colors.blue,
              child: Text(two),
            ),
        ],
      ),
    );
  }