sign_add_page.dart 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. import 'dart:async';
  2. import 'package:flutter/cupertino.dart';
  3. import 'package:flutter/foundation.dart';
  4. import 'package:flutter/material.dart';
  5. import 'package:keyboard_actions/keyboard_actions.dart';
  6. import 'package:liftmanager/net/api_service.dart';
  7. import 'package:liftmanager/routers/fluro_navigator.dart';
  8. import 'package:liftmanager/utils/toast.dart';
  9. import 'package:liftmanager/widgets/app_bar.dart';
  10. import 'package:liftmanager/widgets/click_item.dart';
  11. import 'package:liftmanager/widgets/my_button.dart';
  12. class SignAddPage extends StatefulWidget{
  13. SignAddPage(this.address,this.coordinate,this.toptime,this.downtime,this.toptimepm,this.downtimepm,this.toptimeout,this.downtimeot);
  14. final String address;
  15. final String coordinate;
  16. final String toptime;
  17. final String downtime;
  18. final String toptimepm;
  19. final String downtimepm;
  20. final String toptimeout;
  21. final String downtimeot;
  22. @override
  23. State<StatefulWidget> createState() {
  24. return SignAddPageState();
  25. }
  26. }
  27. class SignAddPageState extends State<SignAddPage>{
  28. Timer _timer;
  29. String _nowTimeStr = "";
  30. String signTypeName = "";
  31. int signType = 0;
  32. @override
  33. void initState() {
  34. super.initState();
  35. startTime();
  36. }
  37. @override
  38. void dispose() {
  39. _timer.cancel();
  40. super.dispose();
  41. }
  42. startTime() async {
  43. _timer = Timer.periodic(Duration(seconds: 1), (timer) {
  44. if(!mounted) return;
  45. setState(() {
  46. _nowTimeStr = DateTime.now().toString().split(".")[0];
  47. });
  48. });
  49. }
  50. signAdd(){
  51. if(signType ==0){
  52. toasts("请选择签到类型");
  53. return;
  54. }
  55. ApiService(context: context).signAdd("${widget.coordinate}",widget.address,signType,onSuccess: (res){
  56. showAlert(context, "提示", "打卡成功", "确定", (){
  57. NavigatorUtils.goBack(context);
  58. NavigatorUtils.goBackWithParams(context,true);
  59. });
  60. },onError: (code,msg){
  61. toasts(msg);
  62. });
  63. }
  64. _showBottomSheet(list, Function callback) {
  65. showModalBottomSheet(
  66. context: context,
  67. builder: (BuildContext context) {
  68. return SizedBox(
  69. height: 360.0,
  70. child: ListView.builder(
  71. itemExtent: 48.0,
  72. itemBuilder: (_, index) {
  73. return InkWell(
  74. child: Container(
  75. padding: const EdgeInsets.symmetric(horizontal: 16.0),
  76. alignment: Alignment.centerLeft,
  77. child: Text(list[index]),
  78. ),
  79. onTap: () {
  80. setState(() {
  81. callback(index);
  82. });
  83. NavigatorUtils.goBack(context);
  84. },
  85. );
  86. },
  87. itemCount: list.length,
  88. ),
  89. );
  90. },
  91. );
  92. }
  93. @override
  94. Widget build(BuildContext context) {
  95. return Scaffold(
  96. //resizeToAvoidBottomPadding: false,
  97. appBar: MyAppBar(
  98. centerTitle: "打卡",
  99. ),
  100. body: SafeArea(
  101. child: Column(
  102. children: <Widget>[
  103. Expanded(
  104. flex: 1,
  105. child: defaultTargetPlatform == TargetPlatform.iOS
  106. ? FormKeyboardActions(child: _buildBody())
  107. : SingleChildScrollView(child: _buildBody()),
  108. )
  109. ],
  110. ),
  111. ),
  112. );
  113. }
  114. _buildBody() {
  115. return Column(
  116. crossAxisAlignment: CrossAxisAlignment.start,
  117. children: <Widget>[
  118. ClickItem(
  119. title: "打卡时间",
  120. content:
  121. "${_nowTimeStr}",
  122. hintText: "",
  123. ),
  124. ClickItem(
  125. title: "打卡地址",
  126. content:
  127. "${widget.address}",
  128. maxLines: 3,
  129. hintText: "",
  130. ),
  131. ClickItem(
  132. title: "打卡类型",
  133. content:
  134. "${signTypeName}",
  135. hintText: "请选择签到类型",
  136. onTap: (){
  137. var liftTypeArr = ["上班时间:${widget.toptime}", "下班时间:${widget.downtime}","上班时间:${widget.toptimepm}","下班时间:${widget.downtimepm}","上班时间:${widget.toptimeout}","下班时间:${widget.downtimeot}"];
  138. _showBottomSheet(liftTypeArr, (index) {
  139. signTypeName = liftTypeArr[index];
  140. switch(index){
  141. case 0:
  142. signType = 11;
  143. break;
  144. case 1:
  145. signType = 12;
  146. break;
  147. case 2:
  148. signType = 21;
  149. break;
  150. case 3:
  151. signType = 22;
  152. break;
  153. case 4:
  154. signType = 31;
  155. break;
  156. case 5:
  157. signType = 32;
  158. break;
  159. }
  160. setState(() {
  161. });
  162. // item.category = index + 1;
  163. //// item.categoryName = liftTypeArr[index];
  164. // liftNotif();
  165. });
  166. },
  167. ),
  168. Padding(
  169. padding: const EdgeInsets.all(16),
  170. child: MyButton(
  171. onPressed: (){
  172. signAdd();
  173. },
  174. text: "提交",
  175. ),
  176. )
  177. ],
  178. );
  179. }
  180. }