如何有一个容器适合它的孩子Flutter

mrphzbgm  于 2022-11-25  发布在  Flutter
关注(0)|答案(3)|浏览(137)

我想在twitter上复制一个我喜欢的功能。

从上面的图片中可以看到,Twitter图片的宽度总是完全相同的,但是高度是相对于图片的。我已经能够使用BoxFit. contain来半复制这个想法,但是容器不适合图片。
我已实施的内容]

Container(
  width: 290.0,
  // height: 400,
  constraints: const BoxConstraints(
    maxHeight: 350,
    minHeight: 150,
  ),
  decoration: BoxDecoration(
    color: Colors.red,
    borderRadius: BorderRadius.circular(27.5),
    image: DecorationImage(
      image: AssetImage(image[itemIndex]),
      fit: BoxFit.fitWidth,
    ),
    boxShadow: const [
      BoxShadow(
        color: Color(0x80000000),
        offset: Offset(0, 2.5),
        blurRadius: 5,
      ),
    ],
  ),
),

我试了一个fittedbox,但没有运气。我试了一个fractionallysizedbox,但一直得到一个错误!如果有人能带领我在正确的方向,我将不胜感激!

cczfrluj

cczfrluj1#

您可以尝试在Container上使用固定宽度,但最重要是使用fit: BoxFit.cover,

Container(
  width: 290.0,
  // height: 400,
  constraints: const BoxConstraints(
    maxHeight: 350,
    minHeight: 150,
  ),
  decoration: BoxDecoration(
    color: Colors.red,
    borderRadius: BorderRadius.circular(27.5),
    image: DecorationImage(
      image: AssetImage(image[itemIndex]),
      fit: BoxFit.cover, //
    ),
    boxShadow: const [
      BoxShadow(
        color: Color(0x80000000),
        offset: Offset(0, 2.5),
        blurRadius: 5,
      ),
    ],
  ),
),
7ivaypg9

7ivaypg92#

约束向下。大小向上。父级设置位置。

不要将该图像用作Container背景图像,而应将其用作Container的child属性。

Container(
  width: 290,
  constraints: const BoxConstraints(
    maxHeight: 350,
    minHeight: 150,
  ),
  child: Card(
    semanticContainer: true,
    clipBehavior: Clip.antiAliasWithSaveLayer,
    shape:
        RoundedRectangleBorder(borderRadius: BorderRadius.circular(12.0)),
    margin: const EdgeInsets.all(12),
    child: Image.asset(
      image[itemIndex],
      fit: BoxFit.cover,
    ),
  ),
);

参考:Flutter - Understanding Constraints
程式码片段:请参阅结果here

3ks5zfa0

3ks5zfa03#

这是对我有用的配置。它是两个的组合。

ClipRRect(
                                    borderRadius:
                                        BorderRadius.circular(27.5),
                                    child: Container(
                                      //width: 290.0,
                                      constraints: const BoxConstraints(
                                        maxHeight: 350,
                                        minHeight: 150,
                                      ),
                                      decoration: const BoxDecoration(
                                        color: Colors.red,

                                        /*image: DecorationImage(
                                          
                                          image: AssetImage(image[itemIndex]),
                                          
                                          fit: BoxFit.cover,
                                        ),*/
                                        boxShadow: [
                                          BoxShadow(
                                            color: Color(0x80000000),
                                            offset: Offset(0, 2.5),
                                            blurRadius: 5,
                                          ),
                                        ],
                                      ),
                                      child: Image.asset(
                                        image[itemIndex],
                                        width: 290,
                                        fit: BoxFit.cover,
                                      ),
                                    ),
                                  ),

相关问题