如何使我的内容具有响应能力并且不会在容器上溢出

时间:2019-08-06 09:36:41

标签: flutter dart

这是我的容器在模拟器(像素3)上的样子:

enter image description here

现在这就是我的Galaxy S9上的样子:

enter image description here

我的专栏文字溢出。我以为它会自动“适应”,但事实并非如此。

溢出的4个元素的代码是:

                          child: Row(
                            mainAxisAlignment: MainAxisAlignment.spaceBetween,
                            children: <Widget>[
                              Column(
                                crossAxisAlignment: CrossAxisAlignment.start,
                                children: <Widget>[
                                  Row(
                                    //mainAxisAlignment: MainAxisAlignment.start,
                                    children: <Widget>[
                                      Icon(
                                        Icons.turned_in_not,
                                        color: Colors.grey[700],
                                        size: 18.0,
                                      ),
                                      SizedBox(width: 7.0,),
                                      Text(
                                        'Economy',
                                        style: TextStyle(
                                          fontFamily: 'SamsungSans',
                                          fontSize: 15.0,
                                          color: Colors.grey[700],
                                          fontWeight: FontWeight.w400
                                        ),
                                      ),
                                    ],
                                  ),
                                  SizedBox(
                                    height: 15.0,
                                  ),
                                  Row(
                                    mainAxisAlignment: MainAxisAlignment.start,
                                    children: <Widget>[
                                      Icon(
                                        Icons.location_on,
                                        color: Colors.grey[700],
                                        size: 18.0,
                                      ),
                                      SizedBox(width: 7.0,),
                                      Text(
                                        'Terminal 1',
                                        style: TextStyle(
                                          fontFamily: 'SamsungSans',
                                          fontSize: 15.0,
                                          color: Colors.grey[700],
                                          fontWeight: FontWeight.w400
                                        ),
                                      ),
                                    ],
                                  ),

                                ],
                              ),
                              Column(
                                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                                crossAxisAlignment: CrossAxisAlignment.start,
                                children: <Widget>[
                                  Row(
                                    children: <Widget>[
                                      Icon(
                                        Icons.airline_seat_legroom_normal,
                                        color: Colors.grey[700],
                                        size: 18.0,
                                      ),
                                      SizedBox(width: 7.0,),
                                      Text(
                                        'Standard legroom',
                                        style: TextStyle(
                                          //fontFamily: 'SamsungSans',
                                          fontSize: 14.0,
                                          color: Colors.grey[700],
                                          fontWeight: FontWeight.w400
                                        ),
                                      ),
                                    ],
                                  ),
                                  SizedBox(
                                    height: 15.0,
                                  ),
                                  Row(
                                    children: <Widget>[
                                      Icon(
                                        Icons.card_travel,
                                        color: Colors.grey[700],
                                        size: 18.0,
                                      ),
                                      SizedBox(width: 7.0,),
                                      Text(
                                        '1 included',
                                        style: TextStyle(
                                          fontFamily: 'SamsungSans',
                                          fontSize: 15.0,
                                          color: Colors.grey[700],
                                          fontWeight: FontWeight.w400
                                        ),
                                      ),
                                    ],
                                  )
                                ],
                              )
                            ],
                          ),                          

关于我应该进行哪些更改以使文本不会溢出其容器的任何想法?

谢谢。

1 个答案:

答案 0 :(得分:1)

我建议用Expanded小部件来包装溢出的小部件。希望对您有所帮助。

UPD 我只是在具有mdpi分辨率的某些旧设备上使用了上面的代码。为了解决溢出问题,我在第二个Expanded中添加了Column,它解决了溢出问题,但是“标准余量”文本仍在溢出。因此,如果字符串很长,我建议为您的文本添加overflow: TextOverflow.ellipsis

如果要保留整个字符串,只需将Expanded添加到溢出的Text小部件中。但是在这种情况下,将文本排成一行,这不是解决方案。

无论如何,这是我的最终代码:

    Row(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      children: <Widget>[
        Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            Row(
              //mainAxisAlignment: MainAxisAlignment.start,
              children: <Widget>[
                Icon(
                  Icons.turned_in_not,
                  color: Colors.grey[700],
                  size: 18.0,
                ),
                SizedBox(
                  width: 7.0,
                ),
                Text(
                  'Economy',
                  style: TextStyle(
                      fontFamily: 'SamsungSans',
                      fontSize: 15.0,
                      color: Colors.grey[700],
                      fontWeight: FontWeight.w400),
                ),
              ],
            ),
            SizedBox(
              height: 15.0,
            ),
            Row(
              mainAxisAlignment: MainAxisAlignment.start,
              children: <Widget>[
                Icon(
                  Icons.location_on,
                  color: Colors.grey[700],
                  size: 18.0,
                ),
                SizedBox(
                  width: 7.0,
                ),
                Text(
                  'Terminal 1',
                  style: TextStyle(
                      fontFamily: 'SamsungSans',
                      fontSize: 15.0,
                      color: Colors.grey[700],
                      fontWeight: FontWeight.w400),
                ),
              ],
            ),
          ],
        ),
        Expanded(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              Row(
                children: <Widget>[
                  Icon(
                    Icons.airline_seat_legroom_normal,
                    color: Colors.grey[700],
                    size: 18.0,
                  ),
                  SizedBox(
                    width: 7.0,
                  ),
                  Expanded(
                    child: Text(
                      'Standard legroom',
                      overflow: TextOverflow.ellipsis,
                      style: TextStyle(
                          //fontFamily: 'SamsungSans',
                          fontSize: 14.0,
                          color: Colors.grey[700],
                          fontWeight: FontWeight.w400),
                    ),
                  ),
                ],
              ),
              SizedBox(
                height: 15.0,
              ),
              Row(
                children: <Widget>[
                  Icon(
                    Icons.card_travel,
                    color: Colors.grey[700],
                    size: 18.0,
                  ),
                  SizedBox(
                    width: 7.0,
                  ),
                  Text(
                    '1 included',
                    style: TextStyle(
                        fontFamily: 'SamsungSans',
                        fontSize: 15.0,
                        color: Colors.grey[700],
                        fontWeight: FontWeight.w400),
                  ),
                ],
              )
            ],
          ),
        )
      ],
    );

Two options[![][1]] 2