Flutter Layout Container Margin

LayoutDartContainersMarginFlutter

Layout Problem Overview


I have a problem with my Flutter Layout.

I have a simple container with a Margin right and left of 20.0 Inside this container i have another container.

But this container does not fit to the parent container only on the left side. I dont know why this happens.

Here is my Code:

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      backgroundColor: Colors.white,
      body: new Container(
        margin: new EdgeInsets.symmetric(horizontal: 20.0),
        child: new Container(

        )
      ),
    );
  }

Screenshot of the Problem

Layout Solutions


Solution 1 - Layout

> You can use left and right values :)

@override
Widget build(BuildContext context) {
  return Scaffold(
    backgroundColor: Colors.white,
    body: Container(
      margin: const EdgeInsets.only(left: 20.0, right: 20.0),
      child: Container(),
    ),
  );
}

Solution 2 - Layout

You can try: To the margin of any one edge

new Container(
    margin: const EdgeInsets.only(left: 20.0, right: 20.0),
    child: new Container()
)

You can try :To the margin of any all edge

new Container(
    margin: const EdgeInsets.all(20.0),
    child: new Container()
)

If you need the current system padding or view insets in the context of a widget, consider using [MediaQuery.of] to obtain these values rather than using the value from [dart:ui.window], so that you get notified of changes.

new Container(
    margin: EdgeInsets.fromWindowPadding(padding, devicePixelRatio),
    child: new Container()
)

Solution 3 - Layout

Container(
  margin: EdgeInsets.all(10) ,
  alignment: Alignment.bottomCenter,
  decoration: BoxDecoration(
    gradient: LinearGradient(
      begin: Alignment.topCenter,
      end: Alignment.bottomCenter,
      colors: <Color>[
        Colors.black.withAlpha(0),
        Colors.black12,
        Colors.black45
      ],
    ),
  ),
  child: Text(
    "Foreground Text",
    style: TextStyle(color: Colors.white, fontSize: 20.0),
  ),
),

Solution 4 - Layout

You can try to set margin in the following ways.

@override
Widget build(BuildContext context) {
	return Scaffold(
    	backgroundColor: Colors.white,
		body: Container (
			// Even margin on all sides
			margin: EdgeInsets.all(10.0),
			// Symetric margin
			margin: EdgeInsets.symmetric(vertical: 10.0, horizontal: 5.0),
			// Different margin for all sides
			margin: EdgeInsets.fromLTRB(1.0, 2.0, 3.0, 4.0),
			// Margin only for left and right sides
			margin: const EdgeInsets.only(left: 10.0, right: 10.0),
			// Different margin for all sides
			margin: EdgeInsets.only(left: 5.0, top: 10.0, right: 15.0, bottom: 20.0),

			child: Child
			(
				...
			),
    	),
  	);
}

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
QuestionM. BergView Question on Stackoverflow
Solution 1 - LayoutAdonis GonzálezView Answer on Stackoverflow
Solution 2 - Layoutvinod yadavView Answer on Stackoverflow
Solution 3 - LayoutMhammed KhaledView Answer on Stackoverflow
Solution 4 - LayoutCodemakerView Answer on Stackoverflow