2025-09-03 09:39:06 +08:00
|
|
|
|
import 'package:carousel_slider/carousel_controller.dart';
|
|
|
|
|
|
import 'package:flutter/material.dart';
|
2025-09-01 10:24:46 +08:00
|
|
|
|
import 'package:get/get.dart';
|
|
|
|
|
|
import 'package:permission_handler/permission_handler.dart';
|
|
|
|
|
|
import 'package:starwork_flutter/base/app_permission.dart';
|
2025-08-27 18:20:37 +08:00
|
|
|
|
import 'package:starwork_flutter/base/base_controller.dart';
|
2025-09-03 14:09:32 +08:00
|
|
|
|
import 'package:starwork_flutter/views/main/main_controller.dart';
|
2025-08-27 18:20:37 +08:00
|
|
|
|
|
|
|
|
|
|
class HomeController extends BaseController {
|
2025-09-03 14:09:32 +08:00
|
|
|
|
|
|
|
|
|
|
final mainController = Get.find<MainController>();
|
|
|
|
|
|
|
2025-09-01 10:24:46 +08:00
|
|
|
|
final isOpenNotificationPermission = false.obs;
|
2025-08-27 18:20:37 +08:00
|
|
|
|
|
2025-09-03 14:09:32 +08:00
|
|
|
|
// 页面加载状态
|
|
|
|
|
|
final isLoading = true.obs;
|
|
|
|
|
|
|
2025-09-03 09:39:06 +08:00
|
|
|
|
var carouselCurrentIndex = 0.obs;
|
2025-09-03 14:09:32 +08:00
|
|
|
|
|
2025-09-03 09:39:06 +08:00
|
|
|
|
// 渐变颜色列表
|
|
|
|
|
|
final List<Color> gradientColors = [
|
2025-09-03 14:09:32 +08:00
|
|
|
|
const Color(0xFFBFCBEF),
|
|
|
|
|
|
const Color(0xFFECBE9B),
|
2025-09-03 09:39:06 +08:00
|
|
|
|
];
|
2025-09-03 14:09:32 +08:00
|
|
|
|
|
2025-09-03 09:39:06 +08:00
|
|
|
|
// 当前渐变颜色
|
|
|
|
|
|
var currentGradientColor = const Color(0xFFBFCBEF).obs;
|
|
|
|
|
|
|
2025-09-01 10:24:46 +08:00
|
|
|
|
@override
|
|
|
|
|
|
void onInit() async {
|
|
|
|
|
|
super.onInit();
|
2025-09-03 14:09:32 +08:00
|
|
|
|
|
|
|
|
|
|
// 模拟初始化加载
|
|
|
|
|
|
await _initializeData();
|
2025-09-03 09:39:06 +08:00
|
|
|
|
|
|
|
|
|
|
// 监听轮播图切换,更新渐变颜色
|
|
|
|
|
|
carouselCurrentIndex.listen((index) {
|
|
|
|
|
|
updateGradientColor(index);
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
2025-09-03 14:09:32 +08:00
|
|
|
|
|
|
|
|
|
|
// 初始化数据
|
|
|
|
|
|
Future<void> _initializeData() async {
|
|
|
|
|
|
// 模拟加载延迟(2秒)
|
|
|
|
|
|
await Future.delayed(const Duration(seconds: 2));
|
|
|
|
|
|
|
|
|
|
|
|
// 检查通知权限
|
|
|
|
|
|
isOpenNotificationPermission.value = await AppPermission.checkPermission(
|
|
|
|
|
|
permission: Permission.notification,
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// 加载完成,隐藏骨架屏
|
|
|
|
|
|
isLoading.value = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-09-03 09:39:06 +08:00
|
|
|
|
// 根据轮播图索引更新渐变颜色
|
|
|
|
|
|
void updateGradientColor(int index) {
|
|
|
|
|
|
if (index < gradientColors.length) {
|
|
|
|
|
|
currentGradientColor.value = gradientColors[index];
|
|
|
|
|
|
} else {
|
|
|
|
|
|
// 如果索引超出颜色数量,使用模运算轮环
|
2025-09-03 14:09:32 +08:00
|
|
|
|
currentGradientColor.value =
|
|
|
|
|
|
gradientColors[index % gradientColors.length];
|
2025-09-03 09:39:06 +08:00
|
|
|
|
}
|
2025-09-01 10:24:46 +08:00
|
|
|
|
}
|
2025-09-03 14:09:32 +08:00
|
|
|
|
|
|
|
|
|
|
// 首页刷新方法
|
|
|
|
|
|
Future<void> refreshHome() async {
|
|
|
|
|
|
// 显示加载状态(可选)
|
|
|
|
|
|
// isLoading.value = true;
|
|
|
|
|
|
|
|
|
|
|
|
// 模拟网络请求延迟
|
|
|
|
|
|
await Future.delayed(const Duration(seconds: 1));
|
|
|
|
|
|
|
|
|
|
|
|
// 这里可以添加实际的刷新逻辑,比如:
|
|
|
|
|
|
// 1. 重新获取轮播图数据
|
|
|
|
|
|
// 2. 刷新统计数据
|
|
|
|
|
|
// 3. 更新功能列表
|
|
|
|
|
|
// 4. 刷新考勤图表数据
|
|
|
|
|
|
// 5. 更新门禁列表
|
|
|
|
|
|
|
|
|
|
|
|
// 重新检查通知权限
|
|
|
|
|
|
isOpenNotificationPermission.value = await AppPermission.checkPermission(
|
|
|
|
|
|
permission: Permission.notification,
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// 隐藏加载状态
|
|
|
|
|
|
// isLoading.value = false;
|
|
|
|
|
|
|
|
|
|
|
|
print('首页数据刷新完成');
|
|
|
|
|
|
}
|
2025-08-27 18:20:37 +08:00
|
|
|
|
}
|