gallery_picker/lib/views/album_view/album_medias_view.dart

78 lines
2.3 KiB
Dart
Raw Normal View History

2022-12-29 08:45:28 +03:00
import 'package:flutter/material.dart';
2024-02-24 22:33:52 +03:00
2022-12-29 08:45:28 +03:00
import '../../../controller/gallery_controller.dart';
2024-02-24 22:33:52 +03:00
import '/models/gallery_album.dart';
2022-12-29 08:45:28 +03:00
import 'date_category_view.dart';
import 'selected_medias_view.dart';
class AlbumMediasView extends StatelessWidget {
2022-12-30 05:18:18 +03:00
final PhoneGalleryController controller;
final bool singleMedia;
2023-01-20 09:58:21 +03:00
final bool isBottomSheet;
2022-12-30 05:18:18 +03:00
const AlbumMediasView(
2022-12-29 08:45:28 +03:00
{super.key,
required this.galleryAlbum,
required this.controller,
2023-01-20 09:58:21 +03:00
required this.isBottomSheet,
2022-12-29 08:45:28 +03:00
required this.singleMedia});
2022-12-30 05:18:18 +03:00
final GalleryAlbum galleryAlbum;
2023-01-20 09:58:21 +03:00
2022-12-29 08:45:28 +03:00
@override
Widget build(BuildContext context) {
return Stack(
children: [
ListView(
children: [
for (var category in checkCategories(galleryAlbum.dateCategories))
2022-12-29 08:45:28 +03:00
DateCategoryWiew(
category: category,
controller: controller,
singleMedia: singleMedia,
2023-01-20 09:58:21 +03:00
isBottomSheet: isBottomSheet,
2022-12-29 08:45:28 +03:00
),
],
),
if (controller.selectedFiles.isNotEmpty)
Align(
alignment: Alignment.bottomCenter,
child: SelectedMediasView(
controller: controller,
2023-01-20 09:58:21 +03:00
isBottomSheet: isBottomSheet,
2022-12-29 08:45:28 +03:00
))
],
);
}
List<DateCategory> checkCategories(List<DateCategory> categories) {
if (controller.isRecent &&
controller.extraRecentMedia != null &&
controller.extraRecentMedia!.isNotEmpty) {
List<DateCategory> categoriesTmp = categories.map((e) => e).toList();
int index = categoriesTmp
.indexWhere((element) => element.name == controller.config.recent);
if (index != -1) {
2024-02-24 22:33:52 +03:00
DateCategory category = DateCategory(
files: [
...controller.extraRecentMedia!,
...categoriesTmp[index].files,
],
name: categoriesTmp[index].name,
dateTime: categoriesTmp[index].dateTime);
categoriesTmp[index] = category;
return categoriesTmp;
} else {
return [
DateCategory(
files: controller.extraRecentMedia!,
2024-02-24 22:33:52 +03:00
dateTime: controller.extraRecentMedia!.first.lastModified ??
DateTime.now(),
name: controller.config.recent),
...categoriesTmp
];
}
} else {
return categories;
}
}
2022-12-29 08:45:28 +03:00
}