Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to reproduce CSS flex-grow space distribution behavior in a Flutter Row/Column?

I have a Row that looks like this:

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

As you can see the text in the blue container gets cut of.

Building the same thing with CSS look like this:

#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

In this case the green container leaves its unused space over to the blue container and the text in the blue container doesn't get cut of.

How am I supposed to achieve the CSS flex-box behavior in Flutter?

like image 216
Tobias Marschall Avatar asked Nov 06 '22 19:11

Tobias Marschall


1 Answers

If I've understood your right you wanna rebuild the CSS behavior. You can just leave out the Expanded widgets. Here a short standalone example:

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'),
                ),
              ],
            ),
          ),
        ),
      )
    );
  }
}
like image 134
NiklasPor Avatar answered Nov 12 '22 15:11

NiklasPor