前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Flutter Column嵌套Listview不能滚动的问题

Flutter Column嵌套Listview不能滚动的问题

作者头像
赵哥窟
发布于 2021-04-20 02:56:31
发布于 2021-04-20 02:56:31
3.4K00
代码可运行
举报
文章被收录于专栏:日常技术分享日常技术分享
运行总次数:0
代码可运行

Screenshot_1618537132.png

如果做这个筛选界面的时候,刚开始最外层用Column嵌套一个Container(红色部分)和ListView。 然后每个Item也是Column嵌套一个Container(大分类) 和GridView(小分类) 。出现的问题就是不能滚动。

解决办法

在Listview和GridView外面嵌套一个Expanded,不能滚动是因为Container尺寸计算的问题,Expande就是listview有多大就有多大。

主要代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 @override
  Widget build(BuildContext context) {
    return Container(
      padding: EdgeInsets.only(left: 17),
      color: Colors.white,
      height: ScreenAdaper.screenHeight(),
      width: ScreenAdaper.screenWidth()  -ScreenAdaper.width2px(70),
      child: Column(
        children: [
          Expanded(child: _getListView()),
          _getBottomWidget(),
        ],
      ),
    );
  }

  Widget _getListView(){
    return Padding(
      padding: EdgeInsets.only(top: ScreenAdaper.height2px(20)),
      child: ListView.builder(
        physics: const AlwaysScrollableScrollPhysics(),
        itemBuilder: (context, index) {
          return SearchFilterItem(
            data: widget.state.categoryList[index],

          );
        },
        itemCount: widget.state.categoryList.length,
      ),
    );
  }

Item嵌套

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@override
  Widget build(BuildContext context) {
    return Container(
      height: fold == false ?44:44+_getViewHeight(),
      child: Column(
        children: [
          _headWidget(),
          _gridView(),
        ],
      ),
    );
  }

Widget _gridView(){
    return Expanded(
      child: GridView.builder(
          physics: NeverScrollableScrollPhysics(),
          scrollDirection: Axis.vertical, // 水平滚动
          controller: scrollController,
          padding: EdgeInsets.only(left:5.0,top: 5,right: 5),
          gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
            crossAxisCount: 3, //每行显示3列
            childAspectRatio: 69/24, //显示区域宽高相等
            mainAxisSpacing: 6.0,//每行的间距
            crossAxisSpacing: 6.0, //每列的间距
          ),
          itemCount:  widget.data.subjectDtos.length,
          itemBuilder: (context, index) {
            return SearchFilterLabel(
              data: widget.data.subjectDtos[index],
            );
          }),
    );
  }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验