首页添加刷新组件

修复保修延时处理不显示的问题
hmxc
张萌 4 years ago
parent acf4994f47
commit 68da371190

@ -63,17 +63,35 @@ class AkuMap {
static Map<int, String> fixAreaType = {1: '公区维修', 2: '家庭维修'};
///-
static Map<int, String> 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<int, String> dispatchType = {1: '无偿服务', 2: '有偿服务'};
}

@ -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<HomePage> {
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<HomePage> {
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
));
Future.delayed(Duration(milliseconds: 300), () async {
final userProvider = Provider.of<UserProvider>(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<HomePage> {
),
),
//
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<UserProvider>(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,
);

@ -42,7 +42,6 @@ class BusinessAndFixDetailPage extends StatefulWidget {
}
class _BusinessAndFixDetailPageState extends State<BusinessAndFixDetailPage> {
bool get isHandOut => widget.model.status == 1;
FixedDetailModel _detailModel;
bool _onload = true;
@ -138,7 +137,7 @@ class _BusinessAndFixDetailPageState extends State<BusinessAndFixDetailPage> {
),
);
} 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<BusinessAndFixDetailPage> {
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<BusinessAndFixDetailPage> {
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'),
);

@ -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:

@ -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:

Loading…
Cancel
Save