| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- import 'dart:async';
- import 'dart:convert';
- import 'dart:io';
- import 'package:amap_flutter_location/amap_flutter_location.dart';
- import 'package:amap_flutter_location/amap_location_option.dart';
- import 'package:bbyyy/beans/coupon_bean_entity.dart';
- import 'package:bbyyy/beans/user_bean_entity.dart';
- import 'package:bbyyy/https/MyDio.dart';
- import 'package:bbyyy/https/my_request.dart';
- import 'package:bbyyy/my_tools/dims.dart';
- import 'package:bbyyy/my_tools/easy_loading/easy_loading.dart';
- import 'package:bbyyy/my_tools/event_bus.dart';
- import 'package:bbyyy/my_tools/loacion_util.dart';
- import 'package:bbyyy/my_tools/my_cookie.dart';
- import 'package:bbyyy/my_tools/my_datas.dart';
- import 'package:bbyyy/my_tools/my_tools.dart';
- import 'package:bbyyy/my_tools/pop_up_queue.dart';
- import 'package:bbyyy/nsq/nsq.dart' as Nsq;
- import 'package:bbyyy/paegs/gang_page/gang_page.dart';
- import 'package:bbyyy/paegs/home_page/home_page.dart';
- import 'package:bbyyy/paegs/mine_page/mine_page.dart';
- import 'package:bbyyy/paegs/mine_page/order_page/order_page.dart';
- import 'package:bbyyy/paegs/msg_page/msg_page.dart';
- import 'package:bbyyy/paegs/root_page/root_page_view.dart';
- import 'package:flutter/cupertino.dart';
- import 'package:flutter/material.dart';
- import 'package:flutter/services.dart';
- import 'package:flutter_svg/flutter_svg.dart';
- import 'package:permission_handler/permission_handler.dart';
- class RootPage extends StatefulWidget {
- @override
- _RootPageState createState() => _RootPageState();
- }
- class _RootPageState extends State<RootPage> {
- PageController pageController = PageController(initialPage: 0);
- DateTime lastPopTime;
- @override
- void initState() {
- super.initState();
- MyCookie().initP();
- LocationUtil().initLocation();
- LocationUtil().getLocation();
- Nsq.ConnectServer(
- Nsq.handlerMessage, // 接收消息处理逻辑
- // serverIp: '172.16.104.14',
- serverIp: MyCookie().server,
- // 服务端返回
- serverPort: 4150,
- // 服务端返回
- topic: '${MyCookie().getUID()}',
- // 主题订阅,服务端返回
- channel: '${MyCookie().getUID()}',
- // 服务端返回uid
- clientId: '客户uid',
- // 服务端返回uid
- hostname: '主机名', // 服务端返回
- );
- EventBus().emit('检查粘贴板');
- EventBus().on('ChangePage', (arg) {
- if (RootPageView().bNIndex == 3) {
- queryPersonalInformation();
- }
- pageController.jumpToPage(RootPageView().bNIndex);
- setState(() {});
- });
- EventBus().on('hasNoPay', (arg) {
- setState(() {});
- });
- MyData().init(context);
- queryPersonalInformation();
- checkForUpdates(context);
- Future.delayed(Duration(seconds: 1), () {
- checkCouponEvent();
- });
- }
- @override
- void dispose() {
- // TODO: implement dispose
- EventBus().off('ChangePage');
- EventBus().off('hasNoPay');
- LocationUtil().stopLocation();
- super.dispose();
- }
- @override
- Widget build(BuildContext context) {
- return WillPopScope(
- onWillPop: () async {
- if (lastPopTime == null ||
- DateTime.now().difference(lastPopTime) > Duration(seconds: 2)) {
- lastPopTime = DateTime.now();
- EasyLoading.showToast('再按一次退出');
- } else {
- lastPopTime = DateTime.now();
- await SystemChannels.platform.invokeMethod('SystemNavigator.pop');
- }
- return false;
- },
- child: Scaffold(
- resizeToAvoidBottomInset: false,
- backgroundColor: Colors.transparent,
- body: Stack(
- children: [
- Column(
- children: [
- Expanded(
- child: PageView(
- controller: pageController,
- children: [HomePage(), GangPage(), MsgPage(), MinePage()],
- physics: NeverScrollableScrollPhysics(),
- ),
- ),
- RootPageView().bottomNavigationBar(),
- ],
- ),
- if (MyCookie().haveNoPay)
- Positioned(
- bottom: 60,
- right: 0,
- child: SafeArea(
- top: false,
- child: GestureDetector(
- onTap: () {
- MyTools().toPage(
- context,
- OrderPage(
- index: 2,
- ), (then) {
- queryPersonalInformation();
- });
- },
- behavior: HitTestBehavior.translucent,
- child: Container(
- height: 44,
- width: 100,
- padding: EdgeInsets.symmetric(horizontal: 10),
- child: Row(
- children: [
- SvgPicture.asset(
- 'images/svg/订单.svg',
- color: Colors.white,
- height: 15,
- width: 15,
- ),
- Text(
- '未付订单',
- style: TextStyle(color: Colors.white, fontSize: 14),
- )
- ],
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- ),
- decoration: BoxDecoration(
- color: Colors.amber,
- borderRadius: BorderRadius.only(
- topLeft: Radius.circular(22),
- bottomLeft: Radius.circular(22),
- ),
- ),
- ),
- ),
- ),
- ),
- ],
- ),
- ),
- );
- }
- void queryPersonalInformation() {
- MyDio().query({
- "key": "user",
- "filters": {
- "conditions": ["uid == ${MyCookie().getUID()}"]
- },
- "dims": userDims,
- "paging": [1, 20]
- }, (response, hasError) {
- if (!hasError) {
- UserBeanEntity entity =
- UserBeanEntity().fromJson(json.decode(response.data.toString()));
- MyCookie().userBean = entity.data.data[0];
- EventBus().emit('userChange');
- }
- }, (error) {});
- }
- //查询优惠券活动
- checkCouponEvent() {
- MyDio().query({
- "key": "coupon_distribute",
- "filters": {
- "conditions": ["valid==true"],
- },
- "dims": couponDistributeDims,
- "paging": [1, 100]
- }, (response, hasError) {
- if (!hasError) {
- CouponBeanEntity entity =
- CouponBeanEntity().fromJson(json.decode(response.data.toString()));
- PopUpQueue().coupon.addAll(entity.data.data);
- }
- }, (error) {});
- }
- }
|