root_page.dart 5.7 KB

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