flutter ListView中嵌套ListView并对listview用controller addListener监听不到变化的问题

flutter ListView中嵌套ListView并对listview用controller监听的问题

现在是碰到这样一个问题 listview中嵌套了一个listview,并需要对内部的listview实现一个上拉刷新的功能,但是controller一直没有监听到。尝试多种方法后,还是将外部的listview改为column,并将内部listview外套一个expanded。这样,解决了问题。

代码结构如下 红框是内外两个部分

在这里插入图片描述

内部listview 关键是使用 controller: _scrollController,shrinkWrap: true,并用expaned撑开容器
ListView.builder(
shrinkWrap: true,
 itemCount: this.showAct.length,
 controller: _scrollController,
 itemBuilder: (context, index) {
   if (index < showAct.length) {
     return ListTile(
       onTap: () {
//                                          print(showAct[index]['id']);
         Navigator.pushNamed(context, '/myTeamDetailPage', arguments: {
           "id": showAct[index]['id'],
           "chooseId": chooseId,
           "isFormMyPage": true
         });
       },
       subtitle: Row(
         mainAxisAlignment: MainAxisAlignment.start,
         crossAxisAlignment: CrossAxisAlignment.center,
         children: <Widget>[
           Text(
             "人数",
             style: TextStyle(color: Colors.grey),
           ),
           SizedBox(
             width: 5,
           ),
           Text(
             showAct[index]['mbrCount'].toString() ?? "0",
             style: TextStyle(color: Color(0xffFE6004)),
           ),
           SizedBox(
             width: 5,
           ),
           Text(
             "活动数",
             style: TextStyle(color: Colors.grey),
           ),
           SizedBox(
             width: 5,
           ),
           Text(
             showAct[index]['actCount'].toString() ?? "0",
             style: TextStyle(color: Color(0xffFE6004)),
           )
         ],
       ),
       leading: ClipRRect(
         borderRadius: BorderRadius.circular(5),
         child: CachedNetworkImage(
           fit: BoxFit.fill,
           height: 50,
           width: 50,
           imageUrl: showAct.isNotEmpty &&
                   showAct[index]['logo'] != "" &&
                   showAct[index]['logo'] != null
               ? showAct[index]['logo']
               : 'https://kt-1301681474.cos.ap-shanghai.myqcloud.com/app/rot/lbt_20200425181036.png',
           placeholder: (context, url) => CircularProgressIndicator(),
           errorWidget: (context, url, error) => Icon(Icons.error),
         ),
       ),
       title: Text(
         chooseId == 2
             ? this.showAct[index]['objtitle'] ?? ""
             : this.showAct[index]['name'] ?? "",
         style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600),
       ),
       contentPadding: EdgeInsets.symmetric(horizontal: 30.0),
     );
   } else if (index == showAct.length && showAct.length % 10 == 0) {
     if (showAct.isEmpty || isNoMoreItem) return _noMoreItem();
     return _buildLoadMoreItem();
   } else {
     return _noMoreItem();
   }
 }),
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值