import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:huixiang/view_widget/classic_header.dart'; import 'package:huixiang/view_widget/my_footer.dart'; import 'package:intl/intl.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import '../../../utils/font_weight.dart'; import '../home_view/my_line_chart.dart'; class TradeOrder extends StatefulWidget { @override State createState() { return _TradeOrder(); } } class _TradeOrder extends State { final RefreshController _refreshController = RefreshController(); final ScrollController scrollController = ScrollController(); List lineChartSample2DataAmount = [LineChartSample2Data(0,10,"2023-03-09"), LineChartSample2Data(1,10,"2023-03-10"), LineChartSample2Data(2,60,"2023-03-11"), LineChartSample2Data(3,35,"2023-03-12"), LineChartSample2Data(4,20,"2023-03-13"), LineChartSample2Data(5,55,"2023-03-14"), LineChartSample2Data(6,99,"2023-03-15")]; List lineChartSample2DataNum = [LineChartSample2Data(0,60,"2023-03-09"), LineChartSample2Data(1,30,"2023-03-10"), LineChartSample2Data(2,50,"2023-03-11"), LineChartSample2Data(3,80,"2023-03-12"), LineChartSample2Data(4,5,"2023-03-13"), LineChartSample2Data(5,55,"2023-03-14"), LineChartSample2Data(6,98,"2023-03-15")]; int dateIndex = 0; String selectedDate = ""; String dayDate = "${DateFormat("yyyy年MM月dd日").format(DateTime.now())}"; String weekDate =""; String weekDateNum = "${DateFormat("yyyy年MM月dd日").format(DateTime.now().subtract(Duration(days:6)))} 至 " "${DateFormat("yyyy年MM月dd日").format(DateTime.now())}"; String monthlyDate =""; String monthlyDateNum = "${DateFormat("yyyy年MM月").format(DateTime.now())}"; String customDate =""; String customDateNum = "${DateFormat("yyyy年MM月dd日").format(DateTime.now())}"; @override void dispose() { super.dispose(); _refreshController.dispose(); } @override void initState() { super.initState(); } _onRefresh() async { } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.white, body: Column( children: [ Container( color: Color(0xFFD8D8D8), width: double.infinity, height: 1.h, ), Expanded(child: SmartRefresher( controller: _refreshController, enablePullDown: true, enablePullUp: false, header: MyHeader(), physics: BouncingScrollPhysics(), scrollController: scrollController, footer: CustomFooter( builder: (context, mode) { return MyFooter(mode); }, ), onRefresh: () { setState(() { _onRefresh(); }); }, child: SingleChildScrollView( physics: NeverScrollableScrollPhysics(), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( decoration: BoxDecoration( color: Color(0xFFF6F6F6), borderRadius: BorderRadius.circular(2), border: Border.all(color: Color(0xFFCFD0D1), width: 1.w), ), margin: EdgeInsets.only( top: 16.h, right: 20.w, left: 20.w, bottom: 12.h), child: Row( children: [ Expanded(child: GestureDetector( behavior: HitTestBehavior.opaque, onTap: (){ setState((){ dateIndex = 0; }); }, child: Container( alignment: Alignment.center, decoration: BoxDecoration( borderRadius: BorderRadius.circular(2), color: dateIndex == 0 ? Color(0xFF30415B):Colors.transparent, ), padding: EdgeInsets.symmetric(vertical: 9.h), child: Text( "日报", style: TextStyle( fontSize: 12.sp, fontWeight: MyFontWeight.medium, color: dateIndex == 0 ? Colors.white:Color(0xFF30415B), ), ), ), )), Expanded(child: GestureDetector( behavior: HitTestBehavior.opaque, onTap: (){ setState((){ dateIndex = 1; });}, child: Container( alignment: Alignment.center, decoration: BoxDecoration( borderRadius: BorderRadius.circular(2), color: dateIndex == 1 ? Color(0xFF30415B):Colors.transparent, ), padding: EdgeInsets.symmetric(vertical: 9.h), child: Text( "周报", style: TextStyle( fontSize: 12.sp, fontWeight: MyFontWeight.medium, color: dateIndex == 1 ? Colors.white:Color(0xFF30415B), ), ), ),)), Expanded(child: GestureDetector( behavior: HitTestBehavior.opaque, onTap: (){ setState((){ dateIndex = 2; }); }, child: Container( alignment: Alignment.center, decoration: BoxDecoration( borderRadius: BorderRadius.circular(2), color: dateIndex == 2 ? Color(0xFF30415B):Colors.transparent, ), padding: EdgeInsets.symmetric(vertical: 9.h), child: Text( "月报", style: TextStyle( fontSize: 12.sp, fontWeight: MyFontWeight.medium, color: dateIndex == 2 ? Colors.white:Color(0xFF30415B), ), ), ),)), Expanded(child: GestureDetector( behavior: HitTestBehavior.opaque, onTap: (){ setState((){ dateIndex = 3; }); }, child: Container( alignment: Alignment.center, decoration: BoxDecoration( borderRadius: BorderRadius.circular(2), color: dateIndex == 3 ? Color(0xFF30415B):Colors.transparent, ), padding: EdgeInsets.symmetric(vertical: 9.h), child: Text( "自定义", style: TextStyle( fontSize: 12.sp, fontWeight: MyFontWeight.medium, color: dateIndex == 3 ? Colors.white:Color(0xFF30415B), ), ), ),)), ], ), ), Align(alignment: Alignment.center, child: GestureDetector( behavior: HitTestBehavior.opaque, onTap: (){ if(dateIndex == 0){ Navigator.of(context).pushNamed('/router/day_report_page').then((value) { setState((){ selectedDate = value; }); }); } else if(dateIndex == 1){ Navigator.of(context).pushNamed('/router/week_report_page').then((value) { setState((){ weekDate = value; }); }); } else if(dateIndex == 2){ Navigator.of(context).pushNamed('/router/monthly_report_page').then((value) { setState((){ monthlyDate = value; }); }); } else if(dateIndex == 3){ Navigator.of(context).pushNamed('/router/custom_page').then((value){ setState((){ customDate = value; }); }); } }, child: Container( width: 194.w, alignment: Alignment.center, padding: EdgeInsets.all(8), decoration: BoxDecoration( color: Color(0xFFF6F6F6), borderRadius: BorderRadius.circular(2), ), margin: EdgeInsets.only(bottom:16.h), child: Row( children: [ Expanded(child:Container( alignment: Alignment.center, child: Text( timeDate(), style: TextStyle( fontSize: 10.sp, fontWeight: MyFontWeight.regular, color: Colors.black, ), ), )), Image.asset( "assets/image/bs_calendar_logo.webp", width:15, height:15, ), ], ), ), ),), Padding(padding:EdgeInsets.only(left:16.w,bottom:15.h), child:Text( "订单分析", style: TextStyle( fontSize: 18.sp, fontWeight: MyFontWeight.semi_bold, color: Colors.black, ), )), orderAmount(), orderNumTrend(), ], )), ),) ], ), ); } String timeDate(){ if(dateIndex == 0){ return (selectedDate == "" || selectedDate == null) ? "${dayDate ?? ""}(今日)":(dayDate == DateFormat("yyyy年MM月dd日").format(DateTime.parse(selectedDate)) ?"${DateFormat("yyyy年MM月dd日").format(DateTime.parse(selectedDate))}(今日)":DateFormat("yyyy年MM月dd日").format(DateTime.parse(selectedDate))); } else if(dateIndex == 1){ return (weekDate == "" || weekDate == null) ? weekDateNum : weekDate;} else if(dateIndex == 2){ return (monthlyDate == "" || monthlyDate == null) ? "${monthlyDateNum ?? ""}(当月)": (monthlyDateNum == (DateFormat("yyyy年MM月dd日").format(DateTime.parse(monthlyDate)).substring(0,8))? "${(DateFormat("yyyy年MM月dd日").format(DateTime.parse(monthlyDate)).substring(0,8))}(当月)" :DateFormat("yyyy年MM月dd日").format(DateTime.parse(monthlyDate)).substring(0,8)); } else if(dateIndex == 3){ return (customDate == "" || customDate == null) ? "${customDateNum??""}(今日)" : customDate;} } ///订单金额 Widget orderAmount(){ return Column( children: [ Padding(padding:EdgeInsets.only(left:16.w,bottom: 15.h), child:Row( children: [ Container( width: 4.w, height: 16.h, color: Color(0xFF30415B), margin: EdgeInsets.only(right:12.w), ), Text( "订单金额", style: TextStyle( fontSize: 15.sp, fontWeight: MyFontWeight.semi_bold, color:Color(0xFF0D0D0D), ), ), SizedBox(width:8.w,), Text( "近12周", style: TextStyle( fontSize: 12.sp, fontWeight: MyFontWeight.regular, color:Color(0xFF666666), ), ) ], )), Padding(padding: EdgeInsets.symmetric(horizontal: 20.w), child:LineChartSample2(lineChartSample2DataAmount,"金额"),), SizedBox(height:16.h,), ], ); } ///订单量趋势 Widget orderNumTrend(){ return Container( padding: EdgeInsets.only(top:12.h,bottom: 33.h), child: Column( children: [ Padding(padding:EdgeInsets.only(left:16.w,bottom: 15.h), child:Row( children: [ Container( width: 4.w, height: 16.h, color: Color(0xFF30415B), margin: EdgeInsets.only(right:12.w), ), Text( "订单趋势", style: TextStyle( fontSize: 15.sp, fontWeight: MyFontWeight.semi_bold, color:Color(0xFF0D0D0D), ), ) ], )), Padding(padding: EdgeInsets.symmetric(horizontal: 20.w), child:LineChartSample2(lineChartSample2DataNum,"订单量"),), SizedBox(height:16.h,), ], ), ); } }