zoukankan      html  css  js  c++  java
  • 04Flutter仿京东商城项目 首页商品列表布局

    Home.dart

    import 'package:flutter/material.dart';
    import 'package:flutter_swiper/flutter_swiper.dart';
    import '../../services/ScreenAdaper.dart';
    
    class HomePage extends StatefulWidget {
      HomePage({Key key}) : super(key: key);
    
      _HomePageState createState() => _HomePageState();
    }
    
    class _HomePageState extends State<HomePage> {
      //轮播图:
      //flutter run -d all 链接多个设备的命令:
      Widget _swiperWidget() {
        List<Map> imgList = [
          {"url": "https://www.itying.com/images/flutter/slide01.jpg"},
          {"url": "https://www.itying.com/images/flutter/slide02.jpg"},
          {"url": "https://www.itying.com/images/flutter/slide03.jpg"}
        ];
    
        return Container(
          child: AspectRatio(
            aspectRatio: 2 / 1,
            child: Swiper(
              itemBuilder: (BuildContext context, int index) {
                return new Image.network(
                  imgList[index]['url'],
                  fit: BoxFit.fill,
                );
              },
              itemCount: imgList.length,
              pagination: new SwiperPagination(),
              control: new SwiperControl(),
              autoplay: true,
            ),
          ),
        );
      }
    
      //标题:
      Widget _titleWidget(value) {
        return Container(
          height: ScreenAdaper.height(46),
          margin: EdgeInsets.only(left: ScreenAdaper.width(20)),
          padding: EdgeInsets.only(left: ScreenAdaper.width(20)),
          decoration: BoxDecoration(
              border: Border(
                  left: BorderSide(
                      color: Colors.red,  ScreenAdaper.width(10)))),
          child: Text(value, style: TextStyle(color: Colors.black54)),
        );
      }
    
      //热门商品:
      Widget _hotProductListWidget() {
        return Container(
          height: ScreenAdaper.height(240),
          padding: EdgeInsets.all(ScreenAdaper.width(20)),
          //  double.infinity, //寬度自適應
          child: ListView.builder(
            scrollDirection: Axis.horizontal,
            itemBuilder: (contxt, index) {
              return Column(
                children: <Widget>[
                  Container(
                    height: ScreenAdaper.height(140),
                     ScreenAdaper.width(140),
                    margin: EdgeInsets.only(right: ScreenAdaper.width(21)),
                    child: Image.network(
                        'https://www.itying.com/images/flutter/hot${index + 1}.jpg',
                        fit: BoxFit.cover),
                  ),
                  Container(
                    padding: EdgeInsets.only(top: ScreenAdaper.height(10)),
                    height: ScreenAdaper.height(44),
                    child: Text('第${index}条'),
                  )
                ],
              );
            },
            itemCount: 9,
          ),
        );
      }
    
      Widget _recProductItemListWidget() {
        var itemWidth = (ScreenAdaper.getScreenWidth() - 30) / 2;
        return Container(
          padding: EdgeInsets.all(ScreenAdaper.width(20)),
           itemWidth,
          decoration:
              BoxDecoration(border: Border.all(color: Colors.black12,  1)),
          child: Column(
            children: <Widget>[
              Container(
                 double.infinity,
                child: AspectRatio(
                  aspectRatio: 1 / 1,
                  child: Image.network(
                      "https://www.itying.com/images/flutter/list1.jpg",
                      fit: BoxFit.cover),
                ),
              ),
              Padding(
                padding: EdgeInsets.only(top: ScreenAdaper.height(10)),
                child: Text(
                  '2019秋季大促2019秋季大促2019秋季大促2019秋季大促2019秋季大促2019秋季大促',
                  maxLines: 2,
                  overflow: TextOverflow.ellipsis,
                  style: TextStyle(color: Colors.black54),
                ),
              ),
              Padding(
                padding: EdgeInsets.only(top: ScreenAdaper.height(20)),
                child: Stack(
                  children: <Widget>[
                    Align(
                      alignment: Alignment.centerLeft,
                      child: Text(
                        '123',
                        style: TextStyle(color: Colors.red, fontSize: 16),
                      ),
                    ),
                    Align(
                      alignment: Alignment.centerRight,
                      child: Text(
                        '123',
                        style: TextStyle(
                            color: Colors.black54,
                            fontSize: 16,
                            decoration: TextDecoration.lineThrough),
                      ),
                    )
                  ],
                ),
              )
            ],
          ),
        );
      }
    
      @override
      Widget build(BuildContext context) {
        ScreenAdaper.init(context);
        return ListView(
          children: <Widget>[
            _swiperWidget(),
            SizedBox(height: ScreenAdaper.height(20)),
            _titleWidget("猜你喜欢"),
            _hotProductListWidget(),
            SizedBox(height: ScreenAdaper.height(20)),
            _titleWidget("热门推荐"),
            Container(
              padding: EdgeInsets.all(10),
              child: Wrap(
                runSpacing: 10,
                spacing: 10,
                children: <Widget>[
                  _recProductItemListWidget(),
                  _recProductItemListWidget(),
                  _recProductItemListWidget(),
                  _recProductItemListWidget(),
                  _recProductItemListWidget(),
                  _recProductItemListWidget()
                ],
              ),
            )
          ],
        );
      }
    }
    

      

  • 相关阅读:
    Echarts图表常用功能配置,Demo示例
    Markdown 语法笔记
    EasyUI 通过 Combobox 实现 AutoComplete 效果
    python PIL Image基本的图片拼接、圆形裁减、添加文字
    Fiddler高级用法—Fiddler Script抓取app网页json数据并保存
    python elasticsearch环境搭建
    利用brich实现文本层次聚类,将文本内容分类
    python发送邮件带附件
    python-docx生成word文档
    python-pygal画图
  • 原文地址:https://www.cnblogs.com/yiweiyihang/p/11392223.html
Copyright © 2011-2022 走看看