Как воспроизвести поведение распределения пространства гибкого роста CSS в строке / столбце Flutter? - PullRequest
5 голосов
/ 16 марта 2019

У меня есть 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

В этом случае зеленый контейнер оставляет свое неиспользуемое пространство над синим контейнером итекст в синем контейнере не обрезается.

Как мне добиться поведения флексбокса CSS во Flutter?

1 Ответ

0 голосов
/ 21 марта 2019

Если я понял ваше право, вы хотите перестроить поведение CSS.Вы можете просто пропустить Расширенные виджеты.Вот краткий автономный пример:

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'),
                ),
              ],
            ),
          ),
        ),
      )
    );
  }
}
...