208 lines
6.8 KiB
Dart

import 'package:flutter/material.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 '../../../appRouters.dart';
import '../../../baseWidget.dart';
import '../../../mine/mine/starLockMine_page.dart';
import '../../../tools/EasyRefreshTool.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<StarLockMainPage> createState() => _StarLockMainPageState();
}
// GlobalKey<_StarLockMainPageState> starLockMainKey = GlobalKey();
class _StarLockMainPageState extends State<StarLockMainPage> with BaseWidget {
final logic = Get.put(LockMainLogic());
final state = Get.find<LockMainLogic>().state;
void getHttpData(){
logic.getStarLockInfo().then((LockListInfoEntity value){
setState(() {});
});
}
@override
void initState() {
super.initState();
getHttpData();
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: const Color(0xFFF5F5F5),
appBar: TitleAppBar(
barTitle: "星锁".tr,
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<LockListInfoGroupEntity>(
// future: logic.getStarLockInfo(), // 异步操作
// builder: (BuildContext context, AsyncSnapshot<LockListInfoGroupEntity> 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: (){
logic.pageNo = 1;
getHttpData();
},
child: Obx(() => 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,
),
SubmitBtn(
btnName: '演示模式',
onClick: () {
Get.toNamed(Routers.demoModeLockDetailPage);
},
)
],
),
],
);
}
void onShow() {}
void onHide() {}
}