calendar_controller.dart 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import 'package:clean/module/people_photo/photo_group.dart';
  2. import 'package:intl/intl.dart';
  3. import 'package:wechat_assets_picker/wechat_assets_picker.dart';
  4. import '../../base/base_controller.dart';
  5. import 'package:get/get.dart';
  6. import '../../utils/file_utils.dart';
  7. import '../../utils/image_util.dart';
  8. import '../image_picker/image_picker_util.dart';
  9. import 'calendar_month_view.dart';
  10. class CalendarController extends BaseController {
  11. RxList<PhotoGroup> monthlyAlbums = <PhotoGroup>[].obs;
  12. RxList<AssetEntity> imageList = <AssetEntity>[].obs;
  13. @override
  14. void onInit() {
  15. super.onInit();
  16. loadAssets();
  17. }
  18. // 加载并分组图片
  19. Future<void> loadAssets() async {
  20. final List<AssetEntity> result = await ImagePickerUtil.loadAssetsAndroid();
  21. result.sort((a, b) => b.createDateTime.compareTo(a.createDateTime));
  22. imageList.value = result;
  23. updateMonthlyAssets();
  24. }
  25. // 更新按月份分组的照片
  26. void updateMonthlyAssets() {
  27. Map<String, List<AssetEntity>> groupedAssets = {};
  28. for (var asset in imageList) {
  29. final monthKey = DateFormat('yyyy-MM').format(asset.createDateTime);
  30. groupedAssets.putIfAbsent(monthKey, () => []).add(asset);
  31. }
  32. monthlyAlbums.clear();
  33. groupedAssets.forEach((month, assets) {
  34. assets
  35. .sort((a, b) => b.createDateTime.compareTo(a.createDateTime)); // 时间排序
  36. monthlyAlbums.add(PhotoGroup(month: month, images: assets, isSelected: false));
  37. });
  38. // 打印结果
  39. for (var album in monthlyAlbums) {
  40. print('${album.month}: ${album.images.length} 张照片');
  41. }
  42. }
  43. void clickMonthCard(PhotoGroup photoGroup) {
  44. print("clickMonthCard");
  45. CalendarMonthPage.start(photoGroup: photoGroup);
  46. }
  47. void clickImage(){
  48. print("clickImage");
  49. }
  50. }