flutter Swiper+GridView

Swiper+GridView 嵌套在CustomScrollView中

    Widget _getShopView() {
    int page = 6; //一页显示的数量
    var container = Container(
      child: Center(
        child: Text("为你推荐"),
      ),
      height: 45,
      color: Color(0xFFF1f1f1),
    );
    if (_list_recommend == null || _list_recommend.length == 0) {
      return SliverToBoxAdapter(
        child: Column(children: <Widget>[
          container,
        ]),
      );
    }
    List<Widget> list = List();
    list.add(container);

    var itemCount = (_list_recommend.length * 1.0 / page).ceil();

    list.add(new Container(
        height: 370,
        color: Colors.white,
        child: new Swiper(
            itemBuilder: (BuildContext context, int index) {
              return new GridView.count(
                physics: new NeverScrollableScrollPhysics(), //禁止滑动
                crossAxisCount: 3,//一行显示几个
                children: _getIconItem(index == 0 ? 1 : index + 1, page),
                padding: const EdgeInsets.all(0), // padding 是防止GridView计算状态栏的高度
                childAspectRatio: 0.8,//GridView的宽高比
              );
            },
            pagination: new SwiperPagination(
                builder: DotSwiperPaginationBuilder(
                  color: Colors.black54,
                  activeColor: Colors.red,
                ),
                margin: EdgeInsets.only(top: 10, bottom: 10)),
            itemCount: itemCount,
            control: null,
            scrollDirection: Axis.horizontal,
            autoplay: false,
            loop: false,
            onTap: (index) => print('点击了第$index个'))));

    return SliverToBoxAdapter(
      child: Column(
        children: list,
        crossAxisAlignment: CrossAxisAlignment.stretch,
      ),
    );
  }
  
    List<Widget> _getIconItem(int index, int page) {
    List<Widget> list = List();
    for (var i = 0; i < _list_recommend.length; i++) {
      if ((index - 1) * page <= i && i < index * page) {
        list.add(new Padding(
          padding: EdgeInsets.only(left: 10, right: 10),
          child: new Container(
            child: new Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                new Image.network(
                  Api.getInstance().photo + _list_recommend[i].path,
                  width: 100,
                  height: 100,
                  fit: BoxFit.fill,
                ),
                new Text(
                  _list_recommend[i].name,
                  maxLines: 2,
                  overflow: TextOverflow.ellipsis,
                  style: TextStyle(fontSize: 12),
                ),
                new Text(
                  "¥${_list_recommend[i].priceM}",
                  softWrap: false,
                  overflow: TextOverflow.ellipsis,
                ),
              ],
            ),
            width: 100,
          ),
        ));
      }
    }
    return list;
  }


复制代码

转载于:https://juejin.im/post/5c4abb34e51d453aa364dad8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值