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

问题描述 投票:5回答:1

我有一个看起来像这样的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)))
    ]));

enter image description here

正如您所看到的,蓝色容器中的文本被剪切掉了。

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

#container {
  width: 100px;
  height: 64px;
  display: flex;
  align-items: stretch;
}

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

#second {
  flex-grow: 1;
  background-color: green;
}
<div id="container">
  <div id="first">looooooooong</div>
  <div id="second">short</div>
</div>

enter image description here

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

我怎么能在Flutter中实现CSS flex-box行为?

css flutter flexbox flutter-layout flex-grow
1个回答
0
投票

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

Flex Grow Demo

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'),
                ),
              ],
            ),
          ),
        ),
      )
    );
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.