【问题标题】:Dynamic height for StaggeredGridView is not working in flutter projectStaggeredGridView 的动态高度在颤振项目中不起作用
【发布时间】:2020-02-26 09:13:14
【问题描述】:

我想构建一个 StaggeredGridView,在第 0 个索引处有一个横幅视频,每行有 2 个卡片。但是视频并没有填满屏幕宽度,因为每一行的高度都是一样的。

这就是我正在做的事情。

static final videoPlayerController = VideoPlayerController.network(
  "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4");

static final chewieController = ChewieController(
videoPlayerController: videoPlayerController,
aspectRatio: 3 / 2,
autoPlay: true,
looping: true,
allowMuting: true,
allowFullScreen: false,);

final playerWidget = Chewie(
controller: chewieController,);

构建Widget的代码:

Widget buildStaggeredListing(BuildContext context) {
return StaggeredGridView.countBuilder(
  crossAxisCount: 2,
  crossAxisSpacing: 4.0,
  itemCount: 10,
  itemBuilder: (BuildContext buildContext, int index) {
    if (index == 0) {
      return playerWidget;
    }
    return Card(
      child: Padding(
        padding: EdgeInsets.all(16.0),
        child: Text(
          index.toString(),
          style: TextStyle(fontSize: 22.0),
        ),
      ),
    );
  },
  staggeredTileBuilder: (int index) {
    if (index == 0) {
      return StaggeredTile.count(2, 1);
    }
    return StaggeredTile.count(1, 1);
  },
);

}

截图:screenshot

更新:根据 sagar acharya 的回答,我使用了

if (index == 0) {
      return StaggeredTile.fit(1);
   }
    return StaggeredTile.fit(2);

这就是正在发生的事情:screenshot2

【问题讨论】:

    标签: flutter dart staggered-gridview


    【解决方案1】:

    只需检查此代码是否有效:

    staggeredTileBuilder: (int index) {
        if (index == 0) {
          return StaggeredTile.fit(2);
        }
        return StaggeredTile.count(1,1);
      },
    

    【讨论】:

    • 没有兄弟。我根据您的建议更新了我的问题。
    • 你能不能只为索引 0 制作 StaggeredTile.fit(2) ,如果索引不是 0 则使用它:return StaggeredTile.count(1, 1);
    • 那行得通。谢谢你。请编辑您的答案,我可以批准。
    猜你喜欢
    • 2021-10-29
    • 2021-03-08
    • 2020-12-05
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多