flutter 中listview中嵌套GridView正确使用姿势

ListView和GirdView都是滚动Widget 两个部件嵌套就会存在滚动冲突,存在2个冲突,一个是滑动时间冲突,还有一个是内容显示不全解决办法:
在listview

shrinkWrap: true,//增加
 physics: NeverScrollableScrollPhysics()//解决滑动事假冲突

GridView

shrinkWrap: true,//增加

使用完整例子

import 'package:demoflutter/utils/utlis.dart';
import 'package:flutter/material.dart';

class ShortcutEntry extends StatelessWidget {
  BuildContext context;

  @override
  Widget build(BuildContext context) {
    this.context = context;
    // TODO: implement build
    return Container(
      decoration: BoxDecoration(
          color: Colors.white,
          borderRadius: BorderRadius.all(Radius.circular(6))),
      child: GridView.count(
        //如果内容不足,则用户无法滚动 而如果[primary]为true,它们总是可以尝试滚动。
        primary: false,
        //禁止滚动
        physics: NeverScrollableScrollPhysics(),
        //是否允许内容适配
        shrinkWrap: true,
        //一横几个
        crossAxisCount: 5,
        //宽高比例
        childAspectRatio: 1.2,
        //子类item垂直占比宽度
        mainAxisSpacing: 10,
        //子类item水平占比宽度
        crossAxisSpacing: 10,
        //GridView padding
        padding: EdgeInsets.all(5),
        children: getWidgetList(),
      ),
    );
  }


  List<Widget> getWidgetList() {
    List<Widget> lists = [];
    for (int i = 0; i < 5; i++) {
      lists.add(_item(i));
    }
    return lists;
  }


  Widget _item(int index) {
    return Utils.setGesture(
        context,
        Container(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Container(
                child: Column(
                  children: <Widget>[
                    Icon(Icons.stars, color: Colors.orange),
                    Padding(
                      padding: EdgeInsets.only(top: 5),
                      child: Text(
                        '第三方',
                        style: TextStyle(
                          fontSize: 13,
                          color: Color(0xFF333333),
                        ),
                      ),
                    )
                  ],
                ),
              )
            ],
          ),
        ), () {
      Utils.showToast(context, '点击了 $index');
    });
  }



}

参考例子:https://blog.csdn.net/ruoshui_t/article/details/91344690

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值