starwork_flutter/lib/views/home/home_controller.dart

93 lines
2.5 KiB
Dart
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'package:carousel_slider/carousel_controller.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:starwork_flutter/base/app_permission.dart';
import 'package:starwork_flutter/base/base_controller.dart';
import 'package:starwork_flutter/views/main/main_controller.dart';
class HomeController extends BaseController {
final mainController = Get.find<MainController>();
final isOpenNotificationPermission = false.obs;
// 页面加载状态
final isLoading = true.obs;
var carouselCurrentIndex = 0.obs;
// 渐变颜色列表
final List<Color> gradientColors = [
const Color(0xFFBFCBEF),
const Color(0xFFECBE9B),
];
// 当前渐变颜色
var currentGradientColor = const Color(0xFFBFCBEF).obs;
@override
void onInit() async {
super.onInit();
// 模拟初始化加载
await _initializeData();
// 监听轮播图切换,更新渐变颜色
carouselCurrentIndex.listen((index) {
updateGradientColor(index);
});
}
// 初始化数据
Future<void> _initializeData() async {
// 模拟加载延迟2秒
await Future.delayed(const Duration(seconds: 2));
// 检查通知权限
isOpenNotificationPermission.value = await AppPermission.checkPermission(
permission: Permission.notification,
);
// 加载完成,隐藏骨架屏
isLoading.value = false;
}
// 根据轮播图索引更新渐变颜色
void updateGradientColor(int index) {
if (index < gradientColors.length) {
currentGradientColor.value = gradientColors[index];
} else {
// 如果索引超出颜色数量,使用模运算轮环
currentGradientColor.value =
gradientColors[index % gradientColors.length];
}
}
// 首页刷新方法
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('首页数据刷新完成');
}
}