• 这是我的第一篇博客,测试文章


    大家好,我是一名flutter爱好者,ahyang

    import 'dart:convert';
    import 'package:flutter/material.dart';
    import 'package:baixingg/service/service_method.dart';
    import 'package:baixingg/model/category.dart';
    import 'package:baixingg/model/goods_list.dart';
    import 'package:flutter_screenutil/flutter_screenutil.dart';
    import 'package:provide/provide.dart';
    import 'package:baixingg/provide/child_category.dart';
    import 'package:baixingg/provide/category_goods_list.dart';
    
    class CategoryPage extends StatefulWidget {
      @override
      _CategoryPageState createState() => _CategoryPageState();
    }
    
    class _CategoryPageState extends State<CategoryPage> {
      String _data = '加载中';
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('商品分类'),
            centerTitle: true,
            elevation: 0,
          ),
          body: Row(
            children: <Widget>[
              LeftCategoryNav(),
              Column(
                children: <Widget>[
                  RightCategoryNav(),
                  CategoryGoodsList(),
                ],
              ),
            ],
          ),
        );
      }
    }
    
    // 左侧大类导航
    class LeftCategoryNav extends StatefulWidget {
      @override
      _LeftCategoryState createState() => _LeftCategoryState();
    }
    
    class _LeftCategoryState extends State<LeftCategoryNav> {
      List list = List();
      var listIndex = 0;
    
      void initState() {
        super.initState();
        _getCategory();
        getGoodsList();
      }
    
      @override
      Widget build(BuildContext context) {
        return Container(
           ScreenUtil().setWidth(180),
          decoration: BoxDecoration(
              border: Border(
            right: BorderSide( 1, color: Colors.black12),
          )),
          child: ListView.builder(
            itemCount: list.length,
            itemBuilder: (context, index) {
              return _leftInkWell(index);
            },
          ),
        );
      }
    
      Widget _leftInkWell(int index) {
        bool isClick = false;
        isClick = (index == listIndex) ? true : false;
    
        return InkWell(
          onTap: () {
            setState(() {
              listIndex = index;
            });
            var childList = list[index].bxMallSubDto;
            var categoryId = list[index].mallCategoryId;
            Provide.value<ChildCategory>(context)
                .getChildCategory(childList, categoryId);
            getGoodsList(categoryId: categoryId);
          },
          child: Container(
            height: ScreenUtil().setHeight(100),
            padding: EdgeInsets.only(left: 10, top: 20),
            decoration: BoxDecoration(
                color: isClick ? Color.fromRGBO(236, 236, 236, 1.0) : Colors.white,
                border: Border(
                  bottom: BorderSide( 1, color: Colors.black12),
                )),
            child: Text(
              list[index].mallCategoryName,
              style: TextStyle(
                fontSize: ScreenUtil().setSp(28),
              ),
            ),
          ),
        );
      }
    
      _getCategory() async {
        await request('getCategory').then((val) {
          var data = json.decode(val.toString());
          CategoryModle category = CategoryModle.fromJson(data);
          setState(() {
            list = category.data;
          });
          Provide.value<ChildCategory>(context)
              .getChildCategory(list[0].bxMallSubDto, list[0].mallCategoryId);
        });
      }
    
      getGoodsList({String categoryId}) {
        var data = {
          'categoryId': categoryId == null ? '4' : categoryId,
          'categorySubId': '',
          'page': 1,
        };
    
        request('getMallGoods', formData: data).then((val) {
          var data = json.decode(val.toString());
          CategoryGoodsListModel _listModel = CategoryGoodsListModel.fromJson(data);
          Provide.value<CategoryGoodsListProvide>(context)
              .getGoodsList(_listModel.data);
          // setState(() {
          //   list = _listModel.data;
          // });
        });
      }
    }
    
    // 顶部状态管理分类
    class RightCategoryNav extends StatefulWidget {
      @override
      _RightCategoryNavState createState() => _RightCategoryNavState();
    }
    
    class _RightCategoryNavState extends State<RightCategoryNav> {
      // List list = ['零度', '雪花', '动力', '名酒', '白酒', '红酒', '烈酒', '葡萄酒'];
    
      @override
      Widget build(BuildContext context) {
        return Provide<ChildCategory>(
          builder: (context, child, childCategory) {
            return Container(
              height: ScreenUtil().setHeight(80),
               ScreenUtil().setWidth(570),
              child: ListView.builder(
                scrollDirection: Axis.horizontal,
                itemCount: childCategory.childCategoryList.length,
                itemBuilder: (context, index) {
                  return _rightInWell(
                      index, childCategory.childCategoryList[index]);
                },
              ),
              decoration: BoxDecoration(
                color: Colors.white,
                border: Border(
                  bottom: BorderSide(
                     1,
                    color: Colors.black12,
                  ),
                ),
              ),
            );
          },
        );
      }
    
      Widget _rightInWell(int index, BxMallSubDto item) {
        bool isClick = false;
        isClick = (index == Provide.value<ChildCategory>(context).childIndex)
            ? true
            : false;
    
        return InkWell(
          onTap: () {
            Provide.value<ChildCategory>(context).changeChildIndex(index, item.mallSubId);
            getGoodsList(item.mallSubId);
          },
          child: Container(
            padding: EdgeInsets.fromLTRB(5.0, 10.0, 5.0, 10.0),
            child: Text(
              item.mallSubName,
              style: TextStyle(
                  fontSize: ScreenUtil().setSp(28),
                  color: isClick ? Colors.pink : null),
            ),
          ),
        );
      }
    
      getGoodsList(String categorySubId) {
        var data = {
          'categoryId': Provide.value<ChildCategory>(context).categoryId,
          'categorySubId': categorySubId,
          'page': 1,
        };
    
        request('getMallGoods', formData: data).then((val) {
          var data = json.decode(val.toString());
          CategoryGoodsListModel _listModel = CategoryGoodsListModel.fromJson(data);
          if (_listModel.data == null) {
            Provide.value<CategoryGoodsListProvide>(context).getGoodsList([]);
          } else {
            Provide.value<CategoryGoodsListProvide>(context)
                .getGoodsList(_listModel.data);
          }
          // setState(() {
          //   list = _listModel.data;
          // });
        });
      }
    }
    
    // 商品列表,可以上拉加载
    class CategoryGoodsList extends StatefulWidget {
      @override
      _CategoryGoodsListState createState() => _CategoryGoodsListState();
    }
    
    class _CategoryGoodsListState extends State<CategoryGoodsList> {
      // List list = [];
    
      @override
      void initState() {
        super.initState();
        // getGoodsList();
      }
    
      @override
      Widget build(BuildContext context) {
        return Provide<CategoryGoodsListProvide>(
          builder: (context, child, data) {
            if(data.goodsList.length > 0) {
              return Expanded(
              child: Container(
                 ScreenUtil().setWidth(570),
                child: ListView.builder(
                  itemCount: data.goodsList.length,
                  itemBuilder: (context, index) {
                    return _listView(data.goodsList, index);
                  },
                ),
              ),
            );
            } else {
              return Text('没有数据,嗯好义熙');
            }
          },
        );
      }
    
      Widget _goodsImage(newList, index) {
        return Container(
          padding: EdgeInsets.only(left: 10),
           ScreenUtil().setWidth(200),
          child: Image.network(newList[index].image),
        );
      }
    
      Widget _goodsName(newList, index) {
        return Container(
          padding: EdgeInsets.only(left: 10),
           ScreenUtil().setWidth(370),
          child: Text(
            newList[index].goodsName,
            maxLines: 2,
            overflow: TextOverflow.ellipsis,
            style: TextStyle(
              fontSize: ScreenUtil().setSp(28),
            ),
          ),
        );
      }
    
      Widget _goodsPrice(newList, index) {
        return Container(
           ScreenUtil().setWidth(370),
          margin: EdgeInsets.only(top: 20),
          padding: EdgeInsets.only(left: 10),
          child: Row(
            children: <Widget>[
              Text(
                '价格:¥${newList[index].presentPrice}',
                style: TextStyle(
                  fontSize: ScreenUtil().setSp(30),
                  color: Colors.pink,
                ),
              ),
              Text(
                '${newList[index].oriPrice}',
                style: TextStyle(
                  color: Colors.black26,
                  decoration: TextDecoration.lineThrough,
                ),
              )
            ],
          ),
        );
      }
    
      Widget _listView(newList, index) {
        return InkWell(
          child: Container(
            padding: EdgeInsets.only(top: 10, bottom: 10),
            decoration: BoxDecoration(
              border: Border(
                bottom: BorderSide(
                   1,
                  color: Colors.black12,
                ),
              ),
            ),
            child: Row(
              children: <Widget>[
                _goodsImage(newList, index),
                Column(
                  children: <Widget>[
                    _goodsName(newList, index),
                    _goodsPrice(newList, index),
                  ],
                ),
              ],
            ),
          ),
          onTap: () {},
        );
      }
    }

     这是分割线,

    import 'dart:convert';
    import 'package:flutter/material.dart';
    import 'package:baixingg/service/service_method.dart';
    import 'package:baixingg/model/category.dart';
    import 'package:baixingg/model/goods_list.dart';
    import 'package:flutter_screenutil/flutter_screenutil.dart';
    import 'package:provide/provide.dart';
    import 'package:baixingg/provide/child_category.dart';
    import 'package:baixingg/provide/category_goods_list.dart';

    class CategoryPage extends StatefulWidget {
    @override
    _CategoryPageState createState() => _CategoryPageState();
    }

    class _CategoryPageState extends State<CategoryPage> {
    String _data = '加载中';
    @override
    Widget build(BuildContext context) {
    return Scaffold(
    appBar: AppBar(
    title: Text('商品分类'),
    centerTitle: true,
    elevation: 0,
    ),
    body: Row(
    children: <Widget>[
    LeftCategoryNav(),
    Column(
    children: <Widget>[
    RightCategoryNav(),
    CategoryGoodsList(),
    ],
    ),
    ],
    ),
    );
    }
    }

    // 左侧大类导航
    class LeftCategoryNav extends StatefulWidget {
    @override
    _LeftCategoryState createState() => _LeftCategoryState();
    }

    class _LeftCategoryState extends State<LeftCategoryNav> {
    List list = List();
    var listIndex = 0;

    void initState() {
    super.initState();
    _getCategory();
    getGoodsList();
    }

    @override
    Widget build(BuildContext context) {
    return Container(
    ScreenUtil().setWidth(180),
    decoration: BoxDecoration(
    border: Border(
    right: BorderSide( 1, color: Colors.black12),
    )),
    child: ListView.builder(
    itemCount: list.length,
    itemBuilder: (context, index) {
    return _leftInkWell(index);
    },
    ),
    );
    }

    Widget _leftInkWell(int index) {
    bool isClick = false;
    isClick = (index == listIndex) ? true : false;

    return InkWell(
    onTap: () {
    setState(() {
    listIndex = index;
    });
    var childList = list[index].bxMallSubDto;
    var categoryId = list[index].mallCategoryId;
    Provide.value<ChildCategory>(context)
    .getChildCategory(childList, categoryId);
    getGoodsList(categoryId: categoryId);
    },
    child: Container(
    height: ScreenUtil().setHeight(100),
    padding: EdgeInsets.only(left: 10, top: 20),
    decoration: BoxDecoration(
    color: isClick ? Color.fromRGBO(236, 236, 236, 1.0) : Colors.white,
    border: Border(
    bottom: BorderSide( 1, color: Colors.black12),
    )),
    child: Text(
    list[index].mallCategoryName,
    style: TextStyle(
    fontSize: ScreenUtil().setSp(28),
    ),
    ),
    ),
    );
    }

    _getCategory() async {
    await request('getCategory').then((val) {
    var data = json.decode(val.toString());
    CategoryModle category = CategoryModle.fromJson(data);
    setState(() {
    list = category.data;
    });
    Provide.value<ChildCategory>(context)
    .getChildCategory(list[0].bxMallSubDto, list[0].mallCategoryId);
    });
    }

    getGoodsList({String categoryId}) {
    var data = {
    'categoryId': categoryId == null ? '4' : categoryId,
    'categorySubId': '',
    'page': 1,
    };

    request('getMallGoods', formData: data).then((val) {
    var data = json.decode(val.toString());
    CategoryGoodsListModel _listModel = CategoryGoodsListModel.fromJson(data);
    Provide.value<CategoryGoodsListProvide>(context)
    .getGoodsList(_listModel.data);
    // setState(() {
    // list = _listModel.data;
    // });
    });
    }
    }

    // 顶部状态管理分类
    class RightCategoryNav extends StatefulWidget {
    @override
    _RightCategoryNavState createState() => _RightCategoryNavState();
    }

    class _RightCategoryNavState extends State<RightCategoryNav> {
    // List list = ['零度', '雪花', '动力', '名酒', '白酒', '红酒', '烈酒', '葡萄酒'];

    @override
    Widget build(BuildContext context) {
    return Provide<ChildCategory>(
    builder: (context, child, childCategory) {
    return Container(
    height: ScreenUtil().setHeight(80),
    ScreenUtil().setWidth(570),
    child: ListView.builder(
    scrollDirection: Axis.horizontal,
    itemCount: childCategory.childCategoryList.length,
    itemBuilder: (context, index) {
    return _rightInWell(
    index, childCategory.childCategoryList[index]);
    },
    ),
    decoration: BoxDecoration(
    color: Colors.white,
    border: Border(
    bottom: BorderSide(
    1,
    color: Colors.black12,
    ),
    ),
    ),
    );
    },
    );
    }

    Widget _rightInWell(int index, BxMallSubDto item) {
    bool isClick = false;
    isClick = (index == Provide.value<ChildCategory>(context).childIndex)
    ? true
    : false;

    return InkWell(
    onTap: () {
    Provide.value<ChildCategory>(context).changeChildIndex(index, item.mallSubId);
    getGoodsList(item.mallSubId);
    },
    child: Container(
    padding: EdgeInsets.fromLTRB(5.0, 10.0, 5.0, 10.0),
    child: Text(
    item.mallSubName,
    style: TextStyle(
    fontSize: ScreenUtil().setSp(28),
    color: isClick ? Colors.pink : null),
    ),
    ),
    );
    }

    getGoodsList(String categorySubId) {
    var data = {
    'categoryId': Provide.value<ChildCategory>(context).categoryId,
    'categorySubId': categorySubId,
    'page': 1,
    };

    request('getMallGoods', formData: data).then((val) {
    var data = json.decode(val.toString());
    CategoryGoodsListModel _listModel = CategoryGoodsListModel.fromJson(data);
    if (_listModel.data == null) {
    Provide.value<CategoryGoodsListProvide>(context).getGoodsList([]);
    } else {
    Provide.value<CategoryGoodsListProvide>(context)
    .getGoodsList(_listModel.data);
    }
    // setState(() {
    // list = _listModel.data;
    // });
    });
    }
    }

    // 商品列表,可以上拉加载
    class CategoryGoodsList extends StatefulWidget {
    @override
    _CategoryGoodsListState createState() => _CategoryGoodsListState();
    }

    class _CategoryGoodsListState extends State<CategoryGoodsList> {
    // List list = [];

    @override
    void initState() {
    super.initState();
    // getGoodsList();
    }

    @override
    Widget build(BuildContext context) {
    return Provide<CategoryGoodsListProvide>(
    builder: (context, child, data) {
    if(data.goodsList.length > 0) {
    return Expanded(
    child: Container(
    ScreenUtil().setWidth(570),
    child: ListView.builder(
    itemCount: data.goodsList.length,
    itemBuilder: (context, index) {
    return _listView(data.goodsList, index);
    },
    ),
    ),
    );
    } else {
    return Text('没有数据,嗯好义熙');
    }
    },
    );
    }

    Widget _goodsImage(newList, index) {
    return Container(
    padding: EdgeInsets.only(left: 10),
    ScreenUtil().setWidth(200),
    child: Image.network(newList[index].image),
    );
    }

    Widget _goodsName(newList, index) {
    return Container(
    padding: EdgeInsets.only(left: 10),
    ScreenUtil().setWidth(370),
    child: Text(
    newList[index].goodsName,
    maxLines: 2,
    overflow: TextOverflow.ellipsis,
    style: TextStyle(
    fontSize: ScreenUtil().setSp(28),
    ),
    ),
    );
    }

    Widget _goodsPrice(newList, index) {
    return Container(
    ScreenUtil().setWidth(370),
    margin: EdgeInsets.only(top: 20),
    padding: EdgeInsets.only(left: 10),
    child: Row(
    children: <Widget>[
    Text(
    '价格:¥${newList[index].presentPrice}',
    style: TextStyle(
    fontSize: ScreenUtil().setSp(30),
    color: Colors.pink,
    ),
    ),
    Text(
    '${newList[index].oriPrice}',
    style: TextStyle(
    color: Colors.black26,
    decoration: TextDecoration.lineThrough,
    ),
    )
    ],
    ),
    );
    }

    Widget _listView(newList, index) {
    return InkWell(
    child: Container(
    padding: EdgeInsets.only(top: 10, bottom: 10),
    decoration: BoxDecoration(
    border: Border(
    bottom: BorderSide(
    1,
    color: Colors.black12,
    ),
    ),
    ),
    child: Row(
    children: <Widget>[
    _goodsImage(newList, index),
    Column(
    children: <Widget>[
    _goodsName(newList, index),
    _goodsPrice(newList, index),
    ],
    ),
    ],
    ),
    ),
    onTap: () {},
    );
    }
    }
  • 相关阅读:
    top 命令
    通过公网访问内网的几种方式总结
    借助IDE到处Runnable JAR 的步骤
    Java SE 基础知识(String,Array)
    Java SE 基础知识(二)
    周记 2014.12.13
    nginx 总结
    在VPS上配置SS
    Markdown 语法手册
    ASCII码表
  • 原文地址:https://www.cnblogs.com/ahyang/p/ahyang.html
Copyright © 2020-2023  润新知