@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
2
2
import 'package:flutter_bloc/flutter_bloc.dart' ;
3
3
import 'package:wanandroid_flutter/entity/bmob_feedback_entity.dart' ;
4
4
import 'package:wanandroid_flutter/entity/bmob_user_entity.dart' ;
5
+ import 'package:wanandroid_flutter/http/index.dart' ;
5
6
import 'package:wanandroid_flutter/main.dart' ;
6
7
import 'package:wanandroid_flutter/page/account/login_wanandroid_page.dart' ;
7
8
import 'package:wanandroid_flutter/page/home/drawer/about_page.dart' ;
@@ -27,17 +28,21 @@ class HomeDrawer extends StatefulWidget {
27
28
28
29
class _HomeDrawerState extends State <HomeDrawer > {
29
30
HomeBloc homeBloc;
31
+ bool hasSignin = false ;
30
32
31
33
@override
32
34
void initState () {
33
35
super .initState ();
34
36
homeBloc = BlocProvider .of <HomeBloc >(context);
37
+ if (widget.bmobUserEntity != null ) {
38
+ checkTodayHasSignin (DateTime .parse (widget.bmobUserEntity.updatedAt));
39
+ } else {
40
+ hasSignin = false ;
41
+ }
35
42
}
36
43
37
44
@override
38
45
Widget build (BuildContext context) {
39
- bool canSignin = widget.bmobUserEntity != null &&
40
- ! isToday (DateTime .parse (widget.bmobUserEntity.updatedAt));
41
46
return BlocListener <HomeEvent , HomeState >(
42
47
bloc: homeBloc,
43
48
listener: (context, state) {
@@ -67,16 +72,18 @@ class _HomeDrawerState extends State<HomeDrawer> {
67
72
: GestureDetector (
68
73
behavior: HitTestBehavior .opaque,
69
74
onTap: () {
70
- if (canSignin) {
71
- widget.bmobUserEntity.level++ ;
72
- homeBloc.dispatch (
73
- UpdateBmobInfo (widget.bmobUserEntity));
75
+ if (! hasSignin) {
76
+ BmobUserEntity copy = widget.bmobUserEntity
77
+ .copyWith (
78
+ level: widget.bmobUserEntity.level +
79
+ 1 );
80
+ homeBloc.dispatch (UpdateBmobInfo (copy));
74
81
}
75
82
},
76
83
child: Row (
77
84
children: < Widget > [
78
85
Text (
79
- canSignin ? res.signin : res.signined,
86
+ ! hasSignin ? res.signin : res.signined,
80
87
style: TextStyle (color: Colors .white),
81
88
),
82
89
SizedBox (
@@ -224,21 +231,21 @@ class _HomeDrawerState extends State<HomeDrawer> {
224
231
});
225
232
}
226
233
}),
227
- // FlatButton(
228
- // child: Text('去测试页'),
229
- // onPressed: () {
230
- // Navigator.push(
231
- // context,
232
- // MaterialPageRoute(
233
- // builder: (context) {
234
- // return Scaffold(
235
- // body: TestPage(),
236
- // );
237
- // },
238
- // ),
239
- // );
240
- // },
241
- // ),
234
+ FlatButton (
235
+ child: Text ('去测试页' ),
236
+ onPressed: () {
237
+ Navigator .push (
238
+ context,
239
+ MaterialPageRoute (
240
+ builder: (context) {
241
+ return Scaffold (
242
+ body: TestPage (),
243
+ );
244
+ },
245
+ ),
246
+ );
247
+ },
248
+ ),
242
249
// FlatButton(
243
250
// child: Text('去nest'),
244
251
// onPressed: () {
@@ -269,15 +276,30 @@ class _HomeDrawerState extends State<HomeDrawer> {
269
276
);
270
277
}
271
278
272
- //更新时间是否在今天?
273
- bool isToday (DateTime updateTime) {
274
- DateTime now = DateTime .now ();
279
+
280
+ Future checkTodayHasSignin (DateTime updateTime) async {
281
+ ///为防止打卡作弊,当前时间从网络上获取
282
+ DateTime now;
283
+ try {
284
+ Response response = await dio.get (
285
+ 'http://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp' );
286
+ Map <String , dynamic > data =
287
+ (response.data as Map <String , dynamic >)['data' ];
288
+ String todayMills = data['t' ];
289
+ now = DateTime .fromMillisecondsSinceEpoch (int .parse (todayMills),
290
+ isUtc: true );
291
+ } catch (e) {
292
+ print (e);
293
+ now = DateTime .now ();
294
+ }
295
+
275
296
DateTime today = DateTime (
276
297
now.year,
277
298
now.month,
278
299
now.day,
279
300
);
280
- return updateTime.isAfter (today.toUtc ());
301
+ hasSignin = updateTime.isAfter (today.toUtc ());
302
+ setState (() {});
281
303
}
282
304
283
305
showSignatureDialog () {
@@ -359,8 +381,9 @@ class _HomeDrawerState extends State<HomeDrawer> {
359
381
FlatButton (
360
382
child: Text (res.confirm),
361
383
onPressed: () {
362
- BmobFeedbackEntity feedback = BmobFeedbackEntity (widget.userName ?? '未登录用户' , controller.text ?? '空' );
363
- feedback.save ().then ((_){
384
+ BmobFeedbackEntity feedback = BmobFeedbackEntity (
385
+ widget.userName ?? '未登录用户' , controller.text ?? '空' );
386
+ feedback.save ().then ((_) {
364
387
print ('feedback send success' );
365
388
});
366
389
Navigator .of (context).pop ();
0 commit comments