Flutter 容器溢出

Flutter container overflow

我正在尝试在具有响应宽度和高度的容器内显示图像。

这是我的代码:

 ...
 child: Column (
    mainAxisSize: MainAxisSize.min,
    children: [
       Row (
          children: [
             Padding (
                padding: EdgeInsets.all(20),
                child: Container(
                   height: MediaQuery.of(context).size.height *.3,
                   width: MediaQuery.of(context).size.width * 1,
                   padding: const EdgeInsets.all(15),
                   decoration: BoxDecoration(
                      image: DecorationImage(
                         image: AssetImage("assets/images/gunung.jpg"),
                         fit: BoxFit.cover,
                ...

这是输出:

有什么解决办法吗?

由于您已将 Containerwidth 设置为

MediaQuery.of(context).size.width * 1

这意味着它将占用设备屏幕的宽度 space。

更不用说,您还设置了 Padding。那就是占用左、上、右和下 20 的间距。

padding: EdgeInsets.all(20)

Padding 使您的 Container 超前,因此溢出。

有很多方法可以解决这个问题。

  1. 您可以从为容器初始化的宽度中减去填充。左边20个,右边20个
(MediaQuery.of(context).size.width * 1) - 20 - 20
  1. 您可以在容器本身内设置填充。您可能不需要 Padding 小部件单独挂在 Container.
  2. 上方
    Padding(                                  // <---- remove
      padding: EdgeInsets.all(20),            // <---- remove
      child: Container(
        height: MediaQuery.of(context).size.height *.3,
        width: MediaQuery.of(context).size.width * 1,
        padding: const EdgeInsets.all(20),    // <---- use this
        ...

只需将此更改为您的代码即可:

//添加Exapanded widget


 child: Column (
        mainAxisSize: MainAxisSize.min,
        children: [
           Row (
              children: [
    //Add Expanded Widget it will solve your issue 
    Expanded(
                 Padding (
                    padding: EdgeInsets.all(20),
                    child: Container(
                       height: MediaQuery.of(context).size.height *.3,
                       width: MediaQuery.of(context).size.width * 1,
                       padding: const EdgeInsets.all(15),
                       decoration: BoxDecoration(
                          image: DecorationImage(
                             image: AssetImage("assets/images/gunung.jpg"),
                             fit: BoxFit.cover,