Home > front end >  Container disappears whenever removing height
Container disappears whenever removing height

Time:12-31

I want my container to be automatically have adjusted height based on content inside, however whenever I remove the height, it disappears completely. How can I sort this out?

    Padding(
          padding: const EdgeInsets.fromLTRB(20.0, 0, 20.0, 0),
          child: Container(
            width: double.infinity,
            height: 150,
            decoration: BoxDecoration(
                image: DecorationImage(
                    image: AssetImage('assets/images/texture.jpg'),
                    fit: BoxFit.cover)),
            child: Padding(
              padding: const EdgeInsets.all(8.0),
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: [
                  Row(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    children: [
                      DefaultText(fontSize: 16, weight: FontWeight.bold, textData: 'Test'),
                      Text("12.09.2011")
                    ],
                  ),
                  SizedBox(height: 16.0),
                  Expanded(child:
                  DefaultText(fontSize: 16, weight: FontWeight.normal, textData: 'Test ')
                  ),

                ],
              ),
            ),
          ),
        )

CodePudding user response:

Try wrapping your Container with an Expanded widget

Column(
  children: [
    Expanded(
      child: Container(
        //...
      ),
    ),
  ],
),

Containers in Flutter take the height of their parent widget when you don't give them a height.

Note that your Padding widget is redundant here as you can add padding or margin to the Container

Here's your code with the Expanded widget and without the unnecessary Padding widgets

Column(
  children: [
    Expanded(
      child: Container(
        margin: const EdgeInsets.fromLTRB(20.0, 0, 20.0, 0),
        padding: const EdgeInsets.all(8.0),
        width: double.infinity,
        decoration: BoxDecoration(
          image: DecorationImage(
            image: AssetImage('assets/images/texture.jpg'),
            fit: BoxFit.cover),
        ),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: [
                DefaultText(
                  fontSize: 16,
                  weight: FontWeight.bold,
                  textData: 'Test'),
                Text("12.09.2011")
              ],
            ),
            SizedBox(height: 16.0),
            Expanded(
              child: DefaultText(
                fontSize: 16,
                weight: FontWeight.normal,
                textData: 'Test '),
            ),
          ],
        ),
      ),
    ),
  ],
)

Keep in mind that the Expanded widget above will throw an error if you wrap your Column widget with a scrollable widget like a SingleChildScrollView widget because then the Column will not have a size and thus the Expanded widget will not know the height it will expand to and thus, throw an error. In this case you will have to assign a height

CodePudding user response:

Judging by what it looked like when I ran your code, an alternative would be to use a Stack widget:

Stack(children: [
  Image(image: AssetImage('assets/images/texture.jpg')),
  Padding(
    padding: const EdgeInsets.all(8.0),
    child: Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        Row(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          children: [
            Text('Test'),
            Text("12.09.2011")
          ],
        ),
        SizedBox(height: 16.0),
        Expanded(child:
        Text('Test ')
        ),
      ],
    ),
  ),
])
  • Related