添加退出确认

hmxc
张萌 3 years ago
parent 16934b5f8e
commit d2bcd5dc36

@ -4,6 +4,8 @@ import 'dart:async';
import 'package:aku_community_manager/provider/message_provider.dart'; import 'package:aku_community_manager/provider/message_provider.dart';
import 'package:aku_community_manager/ui/widgets/common/aku_button.dart'; import 'package:aku_community_manager/ui/widgets/common/aku_button.dart';
import 'package:aku_community_manager/ui/widgets/common/aku_material_button.dart'; import 'package:aku_community_manager/ui/widgets/common/aku_material_button.dart';
import 'package:aku_community_manager/utils/websocket/web_socket_util.dart';
import 'package:bot_toast/bot_toast.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
@ -64,6 +66,8 @@ class _HomePageState extends State<HomePage> {
bool _onload = true; bool _onload = true;
EasyRefreshController? _refreshController; EasyRefreshController? _refreshController;
DateTime? _lastPressed;
///bar ///bar
Widget _menuButton(String assetPath, String text, Widget page) { Widget _menuButton(String assetPath, String text, Widget page) {
final appProvider = Provider.of<AppProvider>(context); final appProvider = Provider.of<AppProvider>(context);
@ -400,258 +404,279 @@ class _HomePageState extends State<HomePage> {
), ),
), ),
// //
body: EasyRefresh( body: WillPopScope(
firstRefresh: true, onWillPop: () async {
header: MaterialHeader(), if (_lastPressed == null ||
controller: _refreshController, DateTime.now().difference(_lastPressed!) >
onRefresh: () async { Duration(seconds: 1)) {
final userProvider = //1
Provider.of<UserProvider>(context, listen: false); _lastPressed = DateTime.now();
if (userProvider.isLogin) { BotToast.showText(text: '再点击一次返回退出');
_itemNumModel = await _getItemNum(); return false;
var dataList = await BussinessFunc.getBussinessModelList(1);
_todoModelList =
dataList.map((e) => ToDoModel.fromJson(e)).toList();
_anounceMentList = await _getAnouncement() ;
_onload = false;
setState(() {});
} }
//app
WebSocketUtil().closeWebSocket();
return true;
}, },
child: (!UserTool.userProvider.isLogin) child: EasyRefresh(
? SizedBox() firstRefresh: true,
: _onload header: MaterialHeader(),
? loadingWidget controller: _refreshController,
: ListView( onRefresh: () async {
padding: EdgeInsets.all(32.w), final userProvider =
children: [ Provider.of<UserProvider>(context, listen: false);
Container( if (userProvider.isLogin) {
// _itemNumModel = await _getItemNum();
width: double.infinity, var dataList = await BussinessFunc.getBussinessModelList(1);
height: 45.w, _todoModelList =
child: Row( dataList.map((e) => ToDoModel.fromJson(e)).toList();
mainAxisAlignment: MainAxisAlignment.center, _anounceMentList = await _getAnouncement();
children: [ _onload = false;
Text( setState(() {});
'今日公告', }
style: TextStyle( },
color: Color(0xFF4A4B51), child: (!UserTool.userProvider.isLogin)
fontSize: 32.sp, ? SizedBox()
fontWeight: FontWeight.bold, : _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(), Positioned(
AkuButton( top: 144.w,
// left: 0,
onPressed: () { bottom: 16.w,
Get.to(() => AllAnouncement()); right: 0,
},
child: Row( 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: [ children: [
Text( Text(
'全部公告', '待办事项',
style: TextStyle( style: TextStyle(
color: AppStyle.minorTextColor, color: Color(0xFF4A4B51),
fontSize: 24.sp, fontSize: 32.sp,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
), ),
Icon( Spacer(),
Icons.arrow_forward_ios, AkuButton(
size: 22.w, padding:
color: AppStyle.minorTextColor, 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),
], //
), !userProvider.isLogin
), ? SizedBox()
SizedBox(height: 16.w), : Container(
// height: 450.w,
Container( child: ListView.separated(
color: Color(0xFFFFFFFF), padding: EdgeInsets.zero,
width: double.infinity, separatorBuilder: (context, index) {
height: 172.w, return AkuBox.w(16);
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));
}, },
child: Row( scrollDirection: Axis.horizontal,
children: [ itemBuilder: (context, index) {
Text( return Container(
'全部事项', width: 526.w,
style: TextStyle( child: Builder(
color: AppStyle.minorTextColor, builder: (context) {
fontSize: 24.sp, if (_todoModelList![index]
fontWeight: FontWeight.bold), .dynamicModel
), .runtimeType ==
Icon( BussinessAndFixModel) {
Icons.arrow_forward_ios, return BusinessFixCard(
size: 22.w, homeDisplay: true,
color: AppStyle.minorTextColor, callRefresh: () {
), _refreshController!
], .callRefresh();
), },
), model: _todoModelList![index]
], .dynamicModel);
), } else if (_todoModelList![index]
SizedBox(height: 16.w), .dynamicModel
// .runtimeType ==
!userProvider.isLogin ToDoOutDoorModel) {
? SizedBox() return ToDoOutDoorCard(
: Container(
height: 450.w,
child: ListView.separated(
padding: EdgeInsets.zero,
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(
homeDisplay: true, homeDisplay: true,
callRefresh: () { callRefresh: () {
_refreshController! _refreshController!
.callRefresh(); .callRefresh();
}, },
model: _todoModelList![index] model: _todoModelList![index]
.dynamicModel); .dynamicModel,
} else if (_todoModelList![index] );
.dynamicModel } else
.runtimeType == return SizedBox();
ToDoOutDoorModel) { },
return ToDoOutDoorCard( ),
homeDisplay: true, );
callRefresh: () { },
_refreshController! itemCount: _todoModelList!.length,
.callRefresh(); ),
},
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( SizedBox(height: 24.w),
children: [ //
Row( !userProvider.isLogin
children: [ ? SizedBox()
_card(_itemNumModel.unProcessedNum ?? 0, : Container(
'未处理事项', Color(0xFFFF4E0D), 0), 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() GridientDiveder()
.verticalDivider(166.5.w), .horizontalDivider(343.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),
GridientDiveder(isReverse: true) GridientDiveder(isReverse: true)
.verticalDivider( .horizontalDivider(343.w)
166.5.w, ]),
), Row(
_card(_itemNumModel.allNum ?? 0, '全部事项', children: [
Color(0xFF333333), 3), _card(_itemNumModel.processedNum ?? 0,
], '已处理事项', Color(0xFF3F8FFE), 2),
), GridientDiveder(isReverse: true)
], .verticalDivider(
166.5.w,
),
_card(_itemNumModel.allNum ?? 0,
'全部事项', Color(0xFF333333), 3),
],
),
],
),
), ),
), ],
], ),
), ),
), ),
), ),
value: SystemUiOverlayStyle.dark, value: SystemUiOverlayStyle.dark,

Loading…
Cancel
Save