Flutter padding for all widgets?

AndroidIosFlutter

Android Problem Overview


I'm trying to add some padding to the top and bottom of some text and icons in a Card widget. I found that flutter has an easy way to do this for containers, but can't seem to find a way to do this with other widgets (except for wrapping them in a container). This is the code I've got so far:

  body: new Container(
    padding: new EdgeInsets.all(10.0),
    child: new Column(
      crossAxisAlignment: CrossAxisAlignment.stretch,
      children: <Widget> [
        new Card(
          color: Colors.white70,
          child: new Container(
            padding: new EdgeInsets.all(10.0),
            child: new Column(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              crossAxisAlignment: CrossAxisAlignment.center,
              children: <Widget> [ //Padding between these please
                new Text("I love Flutter", style: new TextStyle(fontSize: 20.0, fontWeight: FontWeight.bold)),
                new Icon(Icons.favorite, color: Colors.redAccent, size: 50.0)
              ]
            )
          )
        )
      ]
    )
  )

So in my children of column, I'd like to add some padding to the top and bottom without having to insert a new Container. Is this possible?

Android Solutions


Solution 1 - Android

You can use Padding, which is a very simple Widget that just takes another Widget as a child and an EdgeInsets object like the one you are already using as padding.

This approach of "composition over inheritance" in Flutter is very intentional. You can find a recent discussion of the pros and cons on Flutter's Gitter channel.

Solution 2 - Android

Here is a supplemental answer that provides some code. As the accepted answer states, you can use the Padding widget. Flutter is different than Android or iOS because Padding is a widget rather than a property. (It is a property of Container, but internally it is still a widget.)

This is a Text widget wrapped with a Padding widget.

Padding(
  padding: const EdgeInsets.all(8.0),
  child: Text("text"),
);

See my fuller answer here.

Solution 3 - Android

If you are using Visual Studio Code, highlight your widget, click on the lightbulb, and select Wrap with Padding from the menu.

enter image description here

As you can see in the picture, it automatically wrapped the widget around a Padding widget.

enter image description here

@override
  Widget build(BuildContext context) {

    return Container(child: Padding(
      padding: const EdgeInsets.all(8.0),
      child: TextField(
        decoration: InputDecoration(border: InputBorder.none, hintText: 'Enter a text'),
      ),
    ));
  }

Solution 4 - Android

Flutter Padding

More information - Flutter Padding

Use Padding Widget.

Below code just add padding to Text Widget like shown in the image. Use Flutter Inspector to see how padding laid out.

Padding(
          padding: const EdgeInsets.all(50.0),
          child: Text('Text Widget'),
        ),

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionBram VanbilsenView Question on Stackoverflow
Solution 1 - Androiddavid.miholaView Answer on Stackoverflow
Solution 2 - AndroidSuragchView Answer on Stackoverflow
Solution 3 - Androidlive-loveView Answer on Stackoverflow
Solution 4 - AndroidAthira ReddyView Answer on Stackoverflow