如何使整个屏幕在颤振中滚动

How to make whole screen scrollable in flutter

这是我的屏幕支架主体代码

Container(
      child: Column(
        children: <Widget>[
          Expanded(
            child: SingleChildScrollView(
              child: Column(
                children: <Widget>[
                  VideoPlay(widget: widget),

                  TitleVideo(widget: widget),
                  Padding(
                    padding: const EdgeInsets.only(top: 1.0, left: 10),
                    child: Opacity(
                      opacity: 0.5,
                      child: Row(
                        children: <Widget>[
                          Text(widget.video.viewCount + " views "),
                          SizedBox(
                            width: 5,
                            child: Text("|"),
                          ),
                          Text(" ${timeago.format(widget.video.timestamp)}"),
                        ],
                      ),
                    ),
                  ),
                  SizedBox(
                    height: 15,
                  ),
                  IconRow(
                    video: widget.video,
                  ),
                  //User Panel
                  subscribe_panel(),
                  SizedBox(
                    height: 310,
                    child: suggestedVideo(),
                  ),

                  // Suggestions list
                ],
              ),
            ),
          ),
        ],
      ),
    );
  }

“建议列表”包含此代码

    class suggestedVideo extends StatelessWidget {
    const suggestedVideo({Key? key,}) : super(key: key);
    @override
    Widget build(BuildContext context) {
    return ListView.builder(
      itemCount: suggestedVideos.length,
      itemBuilder: (context, index) => VideoCard(
        video: suggestedVideos[index],
        press: () {
          Navigator.push(
              context,
              MaterialPageRoute(
                  builder: (context) =>
                      VideoScreen(video: suggestedVideos[index])));
        },
      ),
    );
  }
 }

但是屏幕只滚动 ListView Builder 部分而不是整个屏幕, 我正在尝试重新创建 youtube UI 并且对于 VideoScrolling 屏幕,我想滚动屏幕,方法是将视频保持在顶部并且每个其他小部件都可以滚动。

发生这种情况是因为当您尝试滚动时,它滚动的是 ListView 而不是 SingleChildScrollView。 为了解决这个问题,添加

physics: const NeverScrollableScrollPhysics()

到您的 ListView。

您还可以删除包裹 suggestedVideo()SizedBox 并添加

shrinkWrap: true,
scrollDirection: Axis.vertical,

到您的 ListView。

您可以将 top-most Container 换成 SingleChildScrollView,这将使您的所有 Widget 都可以滚动,您也可以将 SingleChildScrollView(child: Column(... 替换为 ListView(...) , 它会给你同样的结果