Flutter 根据同级的宽度设置小部件的maxWidth

Flutter 根据同级的宽度设置小部件的maxWidth,flutter,flutter-layout,Flutter,Flutter Layout,我正在尝试建立一个可滚动的图像/标题列列表。 标题最多应与图像一样宽 我目前掌握的代码如下: SizedBox( 高度:…//任意高度,需要,因为我在一列中有多个高度 子项:ListView.builder( 滚动方向:轴水平, itemBuilder:(上下文,i)=>列( 儿童:[ 展开(图像[i]),//图像 文本(标题[i]),//标题 ] ), ), ) 在我看来,我需要一些方法来获得布局后图像的最终宽度,但我不确定如何做到这一点 非常感谢您的建议。我没听清您的问题,但我认为您的要求

我正在尝试建立一个可滚动的图像/标题列列表。 标题最多应与图像一样宽

我目前掌握的代码如下:

SizedBox(
高度:…//任意高度,需要,因为我在一列中有多个高度
子项:ListView.builder(
滚动方向:轴水平,
itemBuilder:(上下文,i)=>列(
儿童:[
展开(图像[i]),//图像
文本(标题[i]),//标题
]
),
),
)
在我看来,我需要一些方法来获得布局后图像的最终宽度,但我不确定如何做到这一点


非常感谢您的建议。

我没听清您的问题,但我认为您的要求是:

  @override
  Widget build(BuildContext context) {
    final myImageAndCaption = [
      ["assets/images/banane.jpg", "caption1"],
      ["assets/images/banane.jpg", "caption2"],
      ["assets/images/banane.jpg", "caption3"],
    ];
    return MaterialApp(
        title: 'Flutter Demo',
        home: Scaffold(
          body: ListView.builder(
            scrollDirection: Axis.horizontal,
            itemCount: myImageAndCaption.length,
            itemBuilder: (context, itemCount) => Column(
              mainAxisSize:MainAxisSize.min,
              children: [
               Image.asset(
                  myImageAndCaption[itemCount].first,
                  fit: BoxFit.fitWidth,
                  height: MediaQuery.of(context).size.height*0.7,
                  width: MediaQuery.of(context).size.width*0.6,
                ),
                SizedBox(
                  height: MediaQuery.of(context).size.height*0.3,
                  width: MediaQuery.of(context).size.width*0.6,
                  child: FittedBox(
                    fit: BoxFit.fitWidth,
                    child: Text(myImageAndCaption[itemCount].last),
                  ),
                ),
              ],
            ),
          ),
        ));
  }
}

结果:希望对你有所帮助。

我没听清你的问题,但我认为你的要求是:

  @override
  Widget build(BuildContext context) {
    final myImageAndCaption = [
      ["assets/images/banane.jpg", "caption1"],
      ["assets/images/banane.jpg", "caption2"],
      ["assets/images/banane.jpg", "caption3"],
    ];
    return MaterialApp(
        title: 'Flutter Demo',
        home: Scaffold(
          body: ListView.builder(
            scrollDirection: Axis.horizontal,
            itemCount: myImageAndCaption.length,
            itemBuilder: (context, itemCount) => Column(
              mainAxisSize:MainAxisSize.min,
              children: [
               Image.asset(
                  myImageAndCaption[itemCount].first,
                  fit: BoxFit.fitWidth,
                  height: MediaQuery.of(context).size.height*0.7,
                  width: MediaQuery.of(context).size.width*0.6,
                ),
                SizedBox(
                  height: MediaQuery.of(context).size.height*0.3,
                  width: MediaQuery.of(context).size.width*0.6,
                  child: FittedBox(
                    fit: BoxFit.fitWidth,
                    child: Text(myImageAndCaption[itemCount].last),
                  ),
                ),
              ],
            ),
          ),
        ));
  }
}

结果:希望对你有所帮助。

这不起作用,因为我需要滚动视图具有水平滚动方向。我没看到你想要水平滚动。我懒得解释我在这里做了什么。你应该做一些关于mediaQuery和其他小部件的文档。好运气,这不起作用,因为我需要滚动视图有一个水平滚动方向,所以我没看到你想要水平滚动,我懒得解释我在这里做了什么,你应该做一些关于mediaQuery和其他小部件的文档祝你好运