root_page.dart 7.2 KB

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