From 68da3711909863fcd91a16fed49e2884b702ecec Mon Sep 17 00:00:00 2001 From: zhangmeng <494089941@qq.com> Date: Wed, 12 May 2021 10:24:36 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E6=B7=BB=E5=8A=A0=E5=88=B7?= =?UTF-8?q?=E6=96=B0=E7=BB=84=E4=BB=B6=20=E4=BF=AE=E5=A4=8D=E4=BF=9D?= =?UTF-8?q?=E4=BF=AE=E5=BB=B6=E6=97=B6=E5=A4=84=E7=90=86=E4=B8=8D=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/tools/aku_map.dart | 40 +- lib/ui/home/home_page.dart | 441 +++++++++--------- .../business_and_fix_detail_page.dart | 10 +- pubspec.lock | 2 +- pubspec.yaml | 2 +- 5 files changed, 263 insertions(+), 232 deletions(-) diff --git a/lib/tools/aku_map.dart b/lib/tools/aku_map.dart index 9f685cd..a7e94b6 100644 --- a/lib/tools/aku_map.dart +++ b/lib/tools/aku_map.dart @@ -63,17 +63,35 @@ class AkuMap { static Map fixAreaType = {1: '公区维修', 2: '家庭维修'}; ///报事报修处理进程-操作类型 - static Map operationType = { - 1: '提交报修', - 2: '派单', - 3: '开始处理', - 4: '处理完成', - 5: '确认', - 6: '回访', - 7: '回退', - 8: '作废', - 9: '取消' - }; + static String operationType(int operationType) { + switch (operationType) { + case 1: + return '提交保修'; + case 2: + return '派单'; + case 3: + return '开始处理'; + case 4: + return '处理完成'; + case 5: + return '确认'; + case 6: + return '回访'; + case 7: + return '回退'; + case 8: + return '作废'; + case 9: + return '取消'; + break; + case 10: + return '改派'; + case 11: + return '延时'; + default: + return ''; + } + } static Map dispatchType = {1: '无偿服务', 2: '有偿服务'}; } diff --git a/lib/ui/home/home_page.dart b/lib/ui/home/home_page.dart index 7582f07..7528b3a 100644 --- a/lib/ui/home/home_page.dart +++ b/lib/ui/home/home_page.dart @@ -15,6 +15,7 @@ import 'package:dio/dio.dart'; import 'package:firebase_crashlytics/firebase_crashlytics.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_easyrefresh/easy_refresh.dart'; import 'package:shimmer/shimmer.dart'; import 'package:velocity_x/velocity_x.dart'; @@ -61,6 +62,7 @@ class _HomePageState extends State { List _todoModelList; List _anounceMentList; bool _onload = true; + EasyRefreshController _refreshController; ///自定义bar的菜单按钮 Widget _menuButton(String assetPath, String text, Widget page) { @@ -152,17 +154,7 @@ class _HomePageState extends State { SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle( statusBarColor: Colors.transparent, )); - Future.delayed(Duration(milliseconds: 300), () async { - final userProvider = Provider.of(context, listen: false); - if (userProvider.isLogin) { - _itemNumModel = await _getItemNum(); - var dataList = await BussinessFunc.getBussinessModelList(1); - _todoModelList = dataList.map((e) => ToDoModel.fromJson(e)).toList(); - _anounceMentList = await _getAnouncement(); - _onload = false; - setState(() {}); - } - }); + _refreshController = EasyRefreshController(); } int _currentIndicator = 0; @@ -407,227 +399,248 @@ class _HomePageState extends State { ), ), //需要重构 - body: (!UserTool.userProvider.isLogin) - ? SizedBox() - : _onload - ? loadingWidget - : ListView( - padding: EdgeInsets.all(32.w), - children: [ - Container( - //公告标题行 - width: double.infinity, - height: 45.w, - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text( - '今日公告', - style: TextStyle( - color: Color(0xFF4A4B51), - fontSize: 32.sp, - fontWeight: FontWeight.bold, + body: EasyRefresh( + firstRefresh: true, + header: MaterialHeader(), + controller: _refreshController, + onRefresh: () async { + final userProvider = + Provider.of(context, listen: false); + if (userProvider.isLogin) { + _itemNumModel = await _getItemNum(); + var dataList = await BussinessFunc.getBussinessModelList(1); + _todoModelList = + dataList.map((e) => ToDoModel.fromJson(e)).toList(); + _anounceMentList = await _getAnouncement(); + _onload = false; + setState(() {}); + } + }, + child: (!UserTool.userProvider.isLogin) + ? SizedBox() + : _onload + ? loadingWidget + : ListView( + padding: EdgeInsets.all(32.w), + children: [ + Container( + //公告标题行 + width: double.infinity, + height: 45.w, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + '今日公告', + style: TextStyle( + color: Color(0xFF4A4B51), + fontSize: 32.sp, + fontWeight: FontWeight.bold, + ), + ), + Spacer(), + AkuButton( + //全部公告按钮 + onPressed: () { + Get.to(() => AllAnouncement()); + }, + child: Row( + children: [ + Text( + '全部公告', + style: TextStyle( + color: AppStyle.minorTextColor, + fontSize: 24.sp, + fontWeight: FontWeight.bold, + ), + ), + Icon( + Icons.arrow_forward_ios, + size: 22.w, + color: AppStyle.minorTextColor, + ) + ], + ), + ), + ], + ), + ), + SizedBox(height: 16.w), + //公告栏 + Container( + color: Color(0xFFFFFFFF), + width: double.infinity, + height: 172.w, + child: Stack(children: [ + CarouselSlider( + items: _anounceMentList + .map( + (e) => AllAnouncementState.anounceCard(e)) + .toList(), + options: CarouselOptions( + viewportFraction: 1.0, + aspectRatio: 686 / 172, + autoPlay: true, + onPageChanged: (index, _) { + setState(() { + _currentIndicator = index; + }); + }, ), ), - Spacer(), - AkuButton( - //全部公告按钮 - onPressed: () { - Get.to(() => AllAnouncement()); - }, + Positioned( + top: 144.w, + left: 0, + bottom: 16.w, + right: 0, child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.center, + children: _anounceMentList.map((e) { + int index = _anounceMentList.indexOf(e); + return Container( + width: 12.w, + height: 12.w, + margin: + EdgeInsets.symmetric(horizontal: 12.w), + decoration: BoxDecoration( + shape: BoxShape.circle, + color: _currentIndicator == index + ? Color(0xFFFFC40C) + : Color(0xFFE8E8E8), + ), + ); + }).toList(), + ), + ), + ]), + ), + SizedBox(height: 16.w), + //待办事项标题行 + !userProvider.isLogin + ? SizedBox() + : Row( children: [ Text( - '全部公告', + '待办事项', style: TextStyle( - color: AppStyle.minorTextColor, - fontSize: 24.sp, + color: Color(0xFF4A4B51), + fontSize: 32.sp, fontWeight: FontWeight.bold, ), ), - Icon( - Icons.arrow_forward_ios, - size: 22.w, - color: AppStyle.minorTextColor, - ) + Spacer(), + AkuButton( + padding: + EdgeInsets.symmetric(vertical: 16.w), + onPressed: () { + Get.to(BusinessPage(initIndex: 3)); + }, + child: Row( + children: [ + Text( + '全部事项', + style: TextStyle( + color: AppStyle.minorTextColor, + fontSize: 24.sp, + fontWeight: FontWeight.bold), + ), + Icon( + Icons.arrow_forward_ios, + size: 22.w, + color: AppStyle.minorTextColor, + ), + ], + ), + ), ], ), - ), - ], - ), - ), - SizedBox(height: 16.w), - //公告栏 - Container( - color: Color(0xFFFFFFFF), - width: double.infinity, - height: 172.w, - child: Stack(children: [ - CarouselSlider( - items: _anounceMentList - .map((e) => AllAnouncementState.anounceCard(e)) - .toList(), - options: CarouselOptions( - viewportFraction: 1.0, - aspectRatio: 686 / 172, - autoPlay: true, - onPageChanged: (index, _) { - setState(() { - _currentIndicator = index; - }); - }, - ), - ), - Positioned( - top: 144.w, - left: 0, - bottom: 16.w, - right: 0, - child: Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.center, - children: _anounceMentList.map((e) { - int index = _anounceMentList.indexOf(e); - return Container( - width: 12.w, - height: 12.w, - margin: - EdgeInsets.symmetric(horizontal: 12.w), - decoration: BoxDecoration( - shape: BoxShape.circle, - color: _currentIndicator == index - ? Color(0xFFFFC40C) - : Color(0xFFE8E8E8), - ), - ); - }).toList(), - ), - ), - ]), - ), - SizedBox(height: 16.w), - //待办事项标题行 - !userProvider.isLogin - ? SizedBox() - : Row( - children: [ - Text( - '待办事项', - style: TextStyle( - color: Color(0xFF4A4B51), - fontSize: 32.sp, - fontWeight: FontWeight.bold, - ), - ), - Spacer(), - AkuButton( - padding: EdgeInsets.symmetric(vertical: 16.w), - onPressed: () { - Get.to(BusinessPage(initIndex: 3)); + SizedBox(height: 16.w), + //待办事项栏 + !userProvider.isLogin + ? SizedBox() + : Container( + height: 480.w, + child: ListView.separated( + separatorBuilder: (context, index) { + return AkuBox.w(16); }, - child: Row( - children: [ - Text( - '全部事项', - style: TextStyle( - color: AppStyle.minorTextColor, - fontSize: 24.sp, - fontWeight: FontWeight.bold), - ), - Icon( - Icons.arrow_forward_ios, - size: 22.w, - color: AppStyle.minorTextColor, + scrollDirection: Axis.horizontal, + itemBuilder: (context, index) { + return Container( + width: 526.w, + child: Builder( + builder: (context) { + if (_todoModelList[index] + .dynamicModel + .runtimeType == + BussinessAndFixModel) { + return BusinessFixCard( + model: _todoModelList[index] + .dynamicModel); + } else if (_todoModelList[index] + .dynamicModel + .runtimeType == + ToDoOutDoorModel) { + return ToDoOutDoorCard( + model: _todoModelList[index] + .dynamicModel, + ); + } else + return SizedBox(); + }, ), - ], - ), + ); + }, + itemCount: _todoModelList.length, ), - ], - ), - SizedBox(height: 16.w), - //待办事项栏 - !userProvider.isLogin - ? SizedBox() - : Container( - height: 480.w, - child: ListView.separated( - separatorBuilder: (context, index) { - return AkuBox.w(16); - }, - scrollDirection: Axis.horizontal, - itemBuilder: (context, index) { - return Container( - width: 526.w, - child: Builder( - builder: (context) { - if (_todoModelList[index] - .dynamicModel - .runtimeType == - BussinessAndFixModel) { - return BusinessFixCard( - model: _todoModelList[index] - .dynamicModel); - } else if (_todoModelList[index] - .dynamicModel - .runtimeType == - ToDoOutDoorModel) { - return ToDoOutDoorCard( - model: _todoModelList[index] - .dynamicModel, - ); - } else - return SizedBox(); - }, - ), - ); - }, - itemCount: _todoModelList.length, ), - ), - SizedBox(height: 24.w), - //底部信息栏 - !userProvider.isLogin - ? SizedBox() - : Container( - width: double.infinity, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8.w), - color: Colors.white, - ), - child: Column( - children: [ - Row( - children: [ - _card(_itemNumModel.unProcessedNum ?? 0, - '未处理事项', Color(0xFFFF4E0D), 0), + SizedBox(height: 24.w), + //底部信息栏 + !userProvider.isLogin + ? SizedBox() + : Container( + width: double.infinity, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8.w), + color: Colors.white, + ), + child: Column( + children: [ + Row( + children: [ + _card(_itemNumModel.unProcessedNum ?? 0, + '未处理事项', Color(0xFFFF4E0D), 0), + GridientDiveder() + .verticalDivider(166.5.w), + _card(_itemNumModel.processingNum ?? 0, + '处理中事项', Color(0xFFFFC40C), 1), + ], + ), + Row(children: [ GridientDiveder() - .verticalDivider(166.5.w), - _card(_itemNumModel.processingNum ?? 0, - '处理中事项', Color(0xFFFFC40C), 1), - ], - ), - Row(children: [ - GridientDiveder().horizontalDivider(343.w), - GridientDiveder(isReverse: true) - .horizontalDivider(343.w) - ]), - Row( - children: [ - _card(_itemNumModel.processedNum ?? 0, - '已处理事项', Color(0xFF3F8FFE), 2), + .horizontalDivider(343.w), GridientDiveder(isReverse: true) - .verticalDivider( - 166.5.w, - ), - _card(_itemNumModel.allNum ?? 0, '全部事项', - Color(0xFF333333), 3), - ], - ), - ], + .horizontalDivider(343.w) + ]), + Row( + children: [ + _card(_itemNumModel.processedNum ?? 0, + '已处理事项', Color(0xFF3F8FFE), 2), + GridientDiveder(isReverse: true) + .verticalDivider( + 166.5.w, + ), + _card(_itemNumModel.allNum ?? 0, '全部事项', + Color(0xFF333333), 3), + ], + ), + ], + ), ), - ), - ], - ), + ], + ), + ), ), value: SystemUiOverlayStyle.dark, ); diff --git a/lib/ui/sub_pages/business_and_fix/business_and_fix_detail_page.dart b/lib/ui/sub_pages/business_and_fix/business_and_fix_detail_page.dart index fb70c57..1483e07 100644 --- a/lib/ui/sub_pages/business_and_fix/business_and_fix_detail_page.dart +++ b/lib/ui/sub_pages/business_and_fix/business_and_fix_detail_page.dart @@ -42,7 +42,6 @@ class BusinessAndFixDetailPage extends StatefulWidget { } class _BusinessAndFixDetailPageState extends State { - bool get isHandOut => widget.model.status == 1; FixedDetailModel _detailModel; bool _onload = true; @@ -138,7 +137,7 @@ class _BusinessAndFixDetailPageState extends State { ), ); } else if (widget.model.status == 2) { - if (userProvider.infoModel.canSendTicket){ + if (userProvider.infoModel.canSendTicket) { return AkuMaterialButton( color: AppStyle.primaryColor, nullColor: AppStyle.minorColor, @@ -204,9 +203,10 @@ class _BusinessAndFixDetailPageState extends State { color: AppStyle.primaryColor, ), ), - onPressed: () { - Get.to( + onPressed: () async { + await Get.to( FixMoreTimePage(dispatchId: widget.model.dispatchId)); + _easyRefreshController.callRefresh(); }, child: Text( '申请延时', @@ -404,7 +404,7 @@ class _BusinessAndFixDetailPageState extends State { title: '报修进程', children: _detailModel.processRecord.map((e) { return _buildProcessTile( - AkuMap.operationType[e.operationType], + AkuMap.operationType(e.operationType), DateUtil.formatDateStr(e.operationDate, format: 'yyyy-MM-dd HH:mm:ss'), ); diff --git a/pubspec.lock b/pubspec.lock index 0c3051f..1a6e5d0 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -86,7 +86,7 @@ packages: name: badges url: "https://pub.flutter-io.cn" source: hosted - version: "1.2.0" + version: "2.0.0-nullsafety.1" boolean_selector: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 0536aa1..49d947f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -69,7 +69,7 @@ dependencies: url: http://159.75.73.143:8080/third_packages/jpush_flutter shimmer: ^2.0.0-nullsafety.0 - badges: ^1.2.0 + badges: ^2.0.0-nullsafety.1 dev_dependencies: flutter_test: