Set the space between Elements in Row Flutter

后端 未结 8 506
清酒与你
清酒与你 2021-01-30 06:20

Code:

new Container(
          alignment: FractionalOffset.center,
          child: new Row(
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
             


        
相关标签:
8条回答
  • 2021-01-30 06:55

    Just add "Container(width: 5, color: Colors.transparent)," between elements

    new Container(
          alignment: FractionalOffset.center,
          child: new Row(
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
            children: <Widget>[
              new FlatButton(
                child: new Text('Don\'t have an account?', style: new TextStyle(color: Color(0xFF2E3233))),
              ),
                Container(width: 5, color: Colors.transparent),
              new FlatButton(
                child: new Text('Register.', style: new TextStyle(color: Color(0xFF84A2AF), fontWeight: FontWeight.bold),),
                onPressed: moveToRegister,
              )
            ],
          ),
        ),  
    
    0 讨论(0)
  • 2021-01-30 07:00

    To make an exact spacing, I use Padding. An example with two images:

    Row(
        mainAxisAlignment: MainAxisAlignment.spaceAround,
        children: <Widget>[
          Expanded(
            child: Padding(
              padding: const EdgeInsets.all(16.0),
              child: Image.asset('images/user1.png'),
            ),
          ),
          Expanded(
            child: Padding(
              padding: const EdgeInsets.all(16.0),
              child: Image.asset('images/user2.png'),
            ),
          )
        ],
      ),
    
    0 讨论(0)
  • 2021-01-30 07:02

    There are many ways of doing it, I'm listing a few here:

    1. Use SizedBox if you want to set some specific space

      Row(
        children: <Widget>[
          Text("1"),
          SizedBox(width: 50), // give it width
          Text("2"),
        ],
      )
      


    1. Use Spacer if you want both to be as far apart as possible.

      Row(
        children: <Widget>[
          Text("1"),
          Spacer(), // use Spacer
          Text("2"),
        ],
      )
      


    1. Use mainAxisAlignment according to your needs:

      Row(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly, // use whichever suits your need
        children: <Widget>[
          Text("1"),
          Text("2"),
        ],
      )
      


    1. Use Wrap instead of Row and give some spacing

      Wrap(
        spacing: 100, // set spacing here
        children: <Widget>[
          Text("1"),
          Text("2"),
        ],
      )
      


    1. Use Wrap instead of Row and give it alignment

      Wrap(
        alignment: WrapAlignment.spaceAround, // set your alignment
        children: <Widget>[
          Text("1"),
          Text("2"),
        ],
      )
      

    0 讨论(0)
  • 2021-01-30 07:02
    Row(
     children: <Widget>[
      Flexible(
       child: TextFormField()),
      Container(width: 20, height: 20),
      Flexible(
       child: TextFormField())
     ])
    

    This works for me, there are 3 widgets inside row: Flexible, Container, Flexible

    0 讨论(0)
  • 2021-01-30 07:04

    I believe the original post was about removing the space between the buttons in a row, not adding space.

    The trick is that the minimum space between the buttons was due to padding built into the buttons as part of the material design specification.

    So, don't use buttons! But a GestureDetector instead. This widget type give the onClick / onTap functionality but without the styling.

    See this post for an example.

    https://stackoverflow.com/a/56001817/766115

    0 讨论(0)
  • 2021-01-30 07:11

    MainAxisAlignment

    start - Place the children as close to the start of the main axis as possible.

    end - Place the children as close to the end of the main axis as possible.

    center - Place the children as close to the middle of the main axis as possible.

    spaceBetween - Place the free space evenly between the children.

    spaceAround - Place the free space evenly between the children as well as half of that space before and after the first and last child.

    spaceEvenly - Place the free space evenly between the children as well as before and after the first and last child.

    Example:

      child: Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: <Widget>[
              Text('Row1'),
              Text('Row2')
            ],
          )
    
    0 讨论(0)
提交回复
热议问题