如何在Flutter行/列中重现CSS flex-grow空间分布行为?

Tob*_*all 5 css flexbox flutter flex-grow flutter-layout

我有一个Row看起来像这样:

SizedBox(
    height: 64,
    child: Row(crossAxisAlignment: CrossAxisAlignment.stretch, children: [
        Expanded(
            child: Container(
            color: Colors.blue,
            child: Text("looooooooong", softWrap: false))),
        Expanded(
            child: Container(
            color: Colors.green, child: Text("short", softWrap: false)))
    ]));
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

如您所见,蓝色容器中的文字被剪掉了

用CSS构建相同的东西看起来像这样:

SizedBox(
    height: 64,
    child: Row(crossAxisAlignment: CrossAxisAlignment.stretch, children: [
        Expanded(
            child: Container(
            color: Colors.blue,
            child: Text("looooooooong", softWrap: false))),
        Expanded(
            child: Container(
            color: Colors.green, child: Text("short", softWrap: false)))
    ]));
Run Code Online (Sandbox Code Playgroud)
#container {
  width: 100px;
  height: 64px;
  display: flex;
  align-items: stretch;
}

#first {
  flex-grow: 1;
  background-color: blue;
}

#second {
  flex-grow: 1;
  background-color: green;
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

在这种情况下,绿色容器会将其未使用的空间留给蓝色容器,并且蓝色容器中的文本不会被剪切掉。

我应该如何在Flutter中实现CSS flex-box的行为?

Nik*_*las 1

如果我理解你的权利,你想重建 CSS 行为。您可以省略扩展小部件。这是一个简短的独立示例:

Flex 增长演示

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: SizedBox(
            height: 64,
            child: Row(
              crossAxisAlignment: CrossAxisAlignment.stretch,
              children: <Widget>[
                Container(
                  color: Colors.blue,
                  child: Text('loooooooooooong'),
                ),
                Container(
                  color: Colors.green,
                  child: Text('short'),
                ),
              ],
            ),
          ),
        ),
      )
    );
  }
}
Run Code Online (Sandbox Code Playgroud)