import 'dart:async'; import 'dart:io'; import 'package:aliyun_push/aliyun_push.dart'; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:star_lock/app_settings/app_colors.dart'; import 'package:star_lock/tools/noData.dart'; import 'package:star_lock/tools/submitBtn.dart'; import 'package:star_lock/tools/xs_aliyunPush.dart'; import '../../../appRouters.dart'; import '../../../baseWidget.dart'; import '../../../flavors.dart'; import '../../../mine/mine/starLockMine_page.dart'; import '../../../tools/EasyRefreshTool.dart'; import '../../../tools/eventBusEventManage.dart'; import '../../../tools/storage.dart'; import '../../../tools/titleAppBar.dart'; import '../../../translations/trans_lib.dart'; import '../../lockDetail/lockDetail/lockDetail_page.dart'; import '../entity/lockListInfo_entity.dart'; import '../lockList/lockList_page.dart'; import 'lockMain_logic.dart'; class StarLockMainPage extends StatefulWidget { const StarLockMainPage({Key? key}) : super(key: key); @override State createState() => _StarLockMainPageState(); } // GlobalKey<_StarLockMainPageState> starLockMainKey = GlobalKey(); class _StarLockMainPageState extends State with BaseWidget { final logic = Get.put(LockMainLogic()); final state = Get.find().state; Future getHttpData() async { // await logic.getStarLockInfo(); // setState(() {}); logic.getStarLockInfo().then((LockListInfoEntity value) { setState(() {}); }); } @override void initState() { super.initState(); WidgetsBinding.instance!.addPostFrameCallback((_) { getHttpData(); }); initAliyunPush(); _initLoadDataAction(); } @override void didChangeDependencies() { super.didChangeDependencies(); // WidgetsBinding.instance!.addPostFrameCallback((_) { // getHttpData(); // }); } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: const Color(0xFFF5F5F5), appBar: TitleAppBar( barTitle: F.navTitle, haveBack: false, haveOtherLeftWidget: true, leftWidget: Builder( builder: (context) => IconButton( icon: Image.asset( "images/main/mainLeft_menu_icon.png", color: Colors.white, width: 44.w, height: 44.w, ), onPressed: () { // _globalKey.currentState!.openDrawer(); Scaffold.of(context).openDrawer(); }, )), backgroundColor: AppColors.mainColor, // actionsList: [ // TextButton( // child: const Text("", style: TextStyle(color: Colors.white)), // onPressed: () { // Navigator.pushNamed(context, Routers.starLockLoginPage); // }, // ), // ], ), drawer: Drawer( width: 1.sw / 3 * 2, child: const StarLockMinePage(), ), // body: FutureBuilder( // future: logic.getStarLockInfo(), // 异步操作 // builder: (BuildContext context, AsyncSnapshot snapshot) { // if (snapshot.connectionState == ConnectionState.waiting) { // // return CircularProgressIndicator(); // 显示加载指示器 // return Container(); // } else if (snapshot.hasError) { // // return Text('Error: ${snapshot.error}'); // 显示错误 // return unHaveData(); // } else { // return getDataReturnUI(snapshot.data!.groupList!.length ?? 0); // 显示获取的数据 // } // }, // ), body: EasyRefreshTool( onRefresh: () { SchedulerBinding.instance.addPostFrameCallback((_) { // 更新状态的代码 logic.pageNo = 1; getHttpData(); }); }, child: getDataReturnUI(state.dataLength.value)), // body:smartRefresher( // logic.refreshController, // onRefresh:logic.onRefresh, // onLoading:logic.onLoading, // child:Obx(() => getDataReturnUI(state.dataLength.value))), // body: getLockList(), // body: unHaveData(), ); } Widget getDataReturnUI(int type) { Widget returnWidget; switch (type) { case 0: // 显示无数据模式 returnWidget = unHaveData(); break; case 1: // 只有一条数据 Storage.setBool(ifIsDemoModeOrNot, false); returnWidget = LockDetailPage( isOnlyOneData: true, lockListInfoItemEntity: state.lockListInfoEntity.value.data!.groupList![0].lockList![0]); break; case 2: // 有多条数据 Storage.setBool(ifIsDemoModeOrNot, false); returnWidget = LockListPage(lockListInfoGroupEntity: state.lockListInfoEntity.value.data!); break; default: returnWidget = NoData(); break; } // Future.delayed(const Duration(seconds: 1)); // Future.delayed(const Duration(milliseconds: 200)); return returnWidget; } Widget unHaveData() { return ListView( children: [ Column( mainAxisAlignment: MainAxisAlignment.center, children: [ SizedBox( height: 160.h, ), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ SizedBox( width: 330.w, // height: 330.w, // margin: EdgeInsets.only(top: 180.h), // decoration: BoxDecoration( // border: Border.all(width: 4.w, color: AppColors.mainColor), // borderRadius: BorderRadius.circular(110.w), // ), child: InkWell( child: Padding( padding: const EdgeInsets.all(30.0), child: Image.asset( 'images/main/icon_main_unHaveLockData.png', width: 260.w, height: 260.w, ), ), onTap: () { //实现回调函数 Navigator.pushNamed( context, Routers.selectLockTypePage, // arguments: { // "url": ConstConfig.privacAgreementUrl, // "title": '隐私政策' // } ); }, )), ], ), Container( // padding: EdgeInsets.all(30.w), child: Text( TranslationLoader .lanKeys!.whenAddingLockThePhoneMustBeNextToTheLock!.tr, style: TextStyle( fontSize: 26.sp, // fontWeight: FontWeight.w800, color: Colors.black), )), SizedBox( height: 160.h, ), //上架审核注释 提交Google暂时屏蔽 F.appFlavor == Flavor.sky ? Container() : SubmitBtn( btnName: '演示模式', onClick: () { Get.toNamed(Routers.demoModeLockDetailPage); }, ) ], ), ], ); } void onShow() {} void onHide() {} //初始化阿里云推送 void initAliyunPush() { final aliyunPush = AliyunPush(); XSAliyunPushProvider().init(aliyunPush); XSAliyunPushProvider().initAliyunPush(); if (Platform.isAndroid) { XSAliyunPushProvider().initAliyunThirdPush(); } //暂使用DeviceID推送 aliyunPush.getDeviceId().then((deviceId) async { // print('得到的DeviceId$deviceId'); final data = await Storage.getString(saveUserLoginData); if (data!.isNotEmpty && deviceId.isNotEmpty) { XSAliyunPushProvider() .pushBindDeviceID(deviceId, Platform.isAndroid ? 10 : 20); } }); } late StreamSubscription _teamEvent; void _initLoadDataAction() { _teamEvent = eventBus.on().listen((event) { // getLockInfo(); getHttpData(); print("收到刷新首页数据消息"); }); } @override void dispose() { // TODO: implement dispose super.dispose(); _teamEvent.cancel(); } }