root_page.dart 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. import 'dart:convert';
  2. import 'package:amap_location/amap_location.dart';
  3. import 'package:amap_location/amap_location_option.dart';
  4. import 'package:bbyyy/beans/user_bean_entity.dart';
  5. import 'package:bbyyy/https/MyDio.dart';
  6. import 'package:bbyyy/https/my_request.dart';
  7. import 'package:bbyyy/my_tools/dims.dart';
  8. import 'package:bbyyy/my_tools/easy_loading/easy_loading.dart';
  9. import 'package:bbyyy/my_tools/event_bus.dart';
  10. import 'package:bbyyy/my_tools/my_cookie.dart';
  11. import 'package:bbyyy/my_tools/my_datas.dart';
  12. import 'package:bbyyy/nsq/nsq.dart' as Nsq;
  13. import 'package:bbyyy/paegs/gang_page/gang_page.dart';
  14. import 'package:bbyyy/paegs/home_page/home_page.dart';
  15. import 'package:bbyyy/paegs/mine_page/mine_page.dart';
  16. import 'package:bbyyy/paegs/msg_page/msg_page.dart';
  17. import 'package:bbyyy/paegs/root_page/root_page_view.dart';
  18. import 'package:flutter/material.dart';
  19. import 'package:flutter/services.dart';
  20. import 'package:permission_handler/permission_handler.dart';
  21. import 'package:bbyyy/beans/coupon_bean_entity.dart';
  22. class RootPage extends StatefulWidget {
  23. @override
  24. _RootPageState createState() => _RootPageState();
  25. }
  26. class _RootPageState extends State<RootPage> {
  27. PageController pageController = PageController(initialPage: 0);
  28. DateTime lastPopTime;
  29. @override
  30. void initState() {
  31. super.initState();
  32. MyCookie().initP();
  33. getLocation();
  34. Nsq.ConnectServer(
  35. Nsq.handlerMessage, // 接收消息处理逻辑
  36. // serverIp: '172.16.104.14',
  37. serverIp: MyCookie().server,
  38. // 服务端返回
  39. serverPort: 4150,
  40. // 服务端返回
  41. topic: '${MyCookie().getUID()}',
  42. // 主题订阅,服务端返回
  43. channel: '${MyCookie().getUID()}',
  44. // 服务端返回uid
  45. clientId: '客户uid',
  46. // 服务端返回uid
  47. hostname: '主机名', // 服务端返回
  48. );
  49. EventBus().emit('检查粘贴板');
  50. EventBus().on('ChangePage', (arg) {
  51. if (RootPageView().bNIndex == 3) {
  52. queryPersonalInformation();
  53. }
  54. pageController.jumpToPage(RootPageView().bNIndex);
  55. setState(() {});
  56. });
  57. MyData().init(context);
  58. queryPersonalInformation();
  59. checkForUpdates(context);
  60. Future.delayed(Duration(seconds: 1),(){
  61. checkCouponEvent();
  62. });
  63. }
  64. @override
  65. void dispose() {
  66. // TODO: implement dispose
  67. EventBus().off('ChangePage');
  68. AMapLocationClient.stopLocation();
  69. super.dispose();
  70. }
  71. @override
  72. Widget build(BuildContext context) {
  73. return WillPopScope(
  74. onWillPop: () async {
  75. if (lastPopTime == null ||
  76. DateTime.now().difference(lastPopTime) > Duration(seconds: 2)) {
  77. lastPopTime = DateTime.now();
  78. EasyLoading.showToast('再按一次退出');
  79. } else {
  80. lastPopTime = DateTime.now();
  81. await SystemChannels.platform.invokeMethod('SystemNavigator.pop');
  82. }
  83. return false;
  84. },
  85. child: Scaffold(
  86. resizeToAvoidBottomInset: false,
  87. backgroundColor: Colors.transparent,
  88. body: Column(
  89. children: [
  90. Expanded(
  91. child: PageView(
  92. controller: pageController,
  93. children: [HomePage(), GangPage(), MsgPage(), MinePage()],
  94. physics: NeverScrollableScrollPhysics(),
  95. ),
  96. ),
  97. RootPageView().bottomNavigationBar(),
  98. ],
  99. ),
  100. ),
  101. );
  102. }
  103. void queryPersonalInformation() {
  104. MyDio().query({
  105. "key": "user",
  106. "filters": {
  107. "conditions": ["uid == ${MyCookie().getUID()}"]
  108. },
  109. "dims": userDims,
  110. "paging": [1, 20]
  111. }, (response, hasError) {
  112. if (!hasError) {
  113. UserBeanEntity entity =
  114. UserBeanEntity().fromJson(json.decode(response.data.toString()));
  115. MyCookie().userBean = entity.data.data[0];
  116. EventBus().emit('userChange');
  117. }
  118. }, (error) {});
  119. }
  120. Future<void> getLocation() async {
  121. var status = await Permission.location.status;
  122. print('Permission.location.status--------------$status');
  123. if (status.isDenied) {
  124. await Permission.location.request().then((value) {
  125. print('Permission.location.request()-----$value');
  126. });
  127. }
  128. await AMapLocationClient.startup(new AMapLocationOption(
  129. desiredAccuracy: CLLocationAccuracy.kCLLocationAccuracyHundredMeters));
  130. AMapLocationClient.onLocationUpate.listen((AMapLocation loc) {});
  131. // await AMapLocationClient.getLocation(true).then((value) {
  132. // print('AMapLocation---------\n'
  133. // '${value.latitude}\n'
  134. // '${value.longitude}\n'
  135. // '${value.formattedAddress}\n'
  136. // '${value.country}\n'
  137. // '${value.province}\n'
  138. // '${value.city}\n'
  139. // '${value.district}\n'
  140. // '${value.citycode}\n'
  141. // '${value.adcode}\n'
  142. // '${value.street}\n'
  143. // '${value.number}\n'
  144. // '${value.POIName}\n'
  145. // '${value.AOIName}');
  146. // });
  147. }
  148. //查询优惠券活动
  149. checkCouponEvent() {
  150. MyDio().query({
  151. "key": "coupon_distribute",
  152. "filters": {
  153. "conditions": ["valid==true"],
  154. },
  155. "dims": couponDistributeDims,
  156. "paging": [1, 100]
  157. }, (response, hasError) {
  158. if(!hasError){
  159. CouponBeanEntity entity = CouponBeanEntity().fromJson(json.decode(response.data.toString()));
  160. EventBus().emit('hasCoupon',entity.data.data[0]);
  161. }
  162. }, (error) {});
  163. }
  164. }