root_page.dart 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. import 'dart:async';
  2. import 'dart:convert';
  3. import 'dart:io';
  4. import 'package:amap_flutter_location/amap_flutter_location.dart';
  5. import 'package:amap_flutter_location/amap_location_option.dart';
  6. import 'package:bbyyy/beans/coupon_bean_entity.dart';
  7. import 'package:bbyyy/beans/user_bean_entity.dart';
  8. import 'package:bbyyy/https/MyDio.dart';
  9. import 'package:bbyyy/https/my_request.dart';
  10. import 'package:bbyyy/my_tools/dims.dart';
  11. import 'package:bbyyy/my_tools/easy_loading/easy_loading.dart';
  12. import 'package:bbyyy/my_tools/event_bus.dart';
  13. import 'package:bbyyy/my_tools/loacion_util.dart';
  14. import 'package:bbyyy/my_tools/my_cookie.dart';
  15. import 'package:bbyyy/my_tools/my_datas.dart';
  16. import 'package:bbyyy/my_tools/my_tools.dart';
  17. import 'package:bbyyy/my_tools/pop_up_queue.dart';
  18. import 'package:bbyyy/nsq/nsq.dart' as Nsq;
  19. import 'package:bbyyy/paegs/gang_page/gang_page.dart';
  20. import 'package:bbyyy/paegs/home_page/home_page.dart';
  21. import 'package:bbyyy/paegs/mine_page/mine_page.dart';
  22. import 'package:bbyyy/paegs/mine_page/order_page/order_page.dart';
  23. import 'package:bbyyy/paegs/msg_page/msg_page.dart';
  24. import 'package:bbyyy/paegs/root_page/root_page_view.dart';
  25. import 'package:flutter/cupertino.dart';
  26. import 'package:flutter/material.dart';
  27. import 'package:flutter/services.dart';
  28. import 'package:flutter_svg/flutter_svg.dart';
  29. import 'package:permission_handler/permission_handler.dart';
  30. class RootPage extends StatefulWidget {
  31. @override
  32. _RootPageState createState() => _RootPageState();
  33. }
  34. class _RootPageState extends State<RootPage> {
  35. PageController pageController = PageController(initialPage: 0);
  36. DateTime lastPopTime;
  37. @override
  38. void initState() {
  39. super.initState();
  40. MyCookie().initP();
  41. LocationUtil().initLocation(context);
  42. LocationUtil().getLocation();
  43. Nsq.ConnectServer(
  44. Nsq.handlerMessage, // 接收消息处理逻辑
  45. // serverIp: '172.16.104.14',
  46. serverIp: MyCookie().server,
  47. // 服务端返回
  48. serverPort: 4150,
  49. // 服务端返回
  50. topic: '${MyCookie().getUID()}',
  51. // 主题订阅,服务端返回
  52. channel: '${MyCookie().getUID()}',
  53. // 服务端返回uid
  54. clientId: '客户uid',
  55. // 服务端返回uid
  56. hostname: '主机名', // 服务端返回
  57. );
  58. EventBus().emit('检查粘贴板');
  59. EventBus().on('ChangePage', (arg) {
  60. if (RootPageView().bNIndex == 3) {
  61. queryPersonalInformation();
  62. }
  63. pageController.jumpToPage(RootPageView().bNIndex);
  64. setState(() {});
  65. });
  66. EventBus().on('hasNoPay', (arg) {
  67. setState(() {});
  68. });
  69. MyData().init(context);
  70. queryPersonalInformation();
  71. checkForUpdates(context);
  72. Future.delayed(Duration(seconds: 1), () {
  73. checkCouponEvent();
  74. });
  75. }
  76. @override
  77. void dispose() {
  78. // TODO: implement dispose
  79. EventBus().off('ChangePage');
  80. EventBus().off('hasNoPay');
  81. LocationUtil().stopLocation();
  82. super.dispose();
  83. }
  84. @override
  85. Widget build(BuildContext context) {
  86. return WillPopScope(
  87. onWillPop: () async {
  88. if (lastPopTime == null ||
  89. DateTime.now().difference(lastPopTime) > Duration(seconds: 2)) {
  90. lastPopTime = DateTime.now();
  91. EasyLoading.showToast('再按一次退出');
  92. } else {
  93. lastPopTime = DateTime.now();
  94. await SystemChannels.platform.invokeMethod('SystemNavigator.pop');
  95. }
  96. return false;
  97. },
  98. child: Scaffold(
  99. resizeToAvoidBottomInset: false,
  100. backgroundColor: Colors.transparent,
  101. body: Stack(
  102. children: [
  103. Column(
  104. children: [
  105. Expanded(
  106. child: PageView(
  107. controller: pageController,
  108. children: [HomePage(), GangPage(), MsgPage(), MinePage()],
  109. physics: NeverScrollableScrollPhysics(),
  110. ),
  111. ),
  112. RootPageView().bottomNavigationBar(),
  113. ],
  114. ),
  115. if (MyCookie().haveNoPay)
  116. Positioned(
  117. bottom: 60,
  118. right: 0,
  119. child: SafeArea(
  120. top: false,
  121. child: GestureDetector(
  122. onTap: () {
  123. MyTools().toPage(
  124. context,
  125. OrderPage(
  126. index: 2,
  127. ), (then) {
  128. queryPersonalInformation();
  129. });
  130. },
  131. behavior: HitTestBehavior.translucent,
  132. child: Container(
  133. height: 44,
  134. width: 100,
  135. padding: EdgeInsets.symmetric(horizontal: 10),
  136. child: Row(
  137. children: [
  138. SvgPicture.asset(
  139. 'images/svg/订单.svg',
  140. color: Colors.white,
  141. height: 15,
  142. width: 15,
  143. ),
  144. Text(
  145. '未付订单',
  146. style: TextStyle(color: Colors.white, fontSize: 14),
  147. )
  148. ],
  149. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  150. ),
  151. decoration: BoxDecoration(
  152. color: Colors.amber,
  153. borderRadius: BorderRadius.only(
  154. topLeft: Radius.circular(22),
  155. bottomLeft: Radius.circular(22),
  156. ),
  157. ),
  158. ),
  159. ),
  160. ),
  161. ),
  162. ],
  163. ),
  164. ),
  165. );
  166. }
  167. void queryPersonalInformation() {
  168. MyDio().query({
  169. "key": "user",
  170. "filters": {
  171. "conditions": ["uid == ${MyCookie().getUID()}"]
  172. },
  173. "dims": userDims,
  174. "paging": [1, 20]
  175. }, (response, hasError) {
  176. if (!hasError) {
  177. UserBeanEntity entity =
  178. UserBeanEntity().fromJson(json.decode(response.data.toString()));
  179. MyCookie().userBean = entity.data.data[0];
  180. EventBus().emit('userChange');
  181. }
  182. }, (error) {});
  183. }
  184. //查询优惠券活动
  185. checkCouponEvent() {
  186. MyDio().query({
  187. "key": "coupon_distribute",
  188. "filters": {
  189. "conditions": ["valid==true"],
  190. },
  191. "dims": couponDistributeDims,
  192. "paging": [1, 100]
  193. }, (response, hasError) {
  194. if (!hasError) {
  195. CouponBeanEntity entity =
  196. CouponBeanEntity().fromJson(json.decode(response.data.toString()));
  197. PopUpQueue().coupon.addAll(entity.data.data);
  198. }
  199. }, (error) {});
  200. }
  201. }