ente/lib/ui/viewer/gallery/component/group/group_gallery.dart

57 lines
1.5 KiB
Dart
Raw Normal View History

2023-05-31 19:34:19 +00:00
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:photos/core/constants.dart';
2023-08-25 04:39:30 +00:00
import 'package:photos/models/file/file.dart';
2023-05-31 19:34:19 +00:00
import 'package:photos/models/selected_files.dart';
2023-05-31 19:39:43 +00:00
import "package:photos/ui/viewer/gallery/component/grid/lazy_grid_view.dart";
2023-05-31 19:34:19 +00:00
import 'package:photos/ui/viewer/gallery/gallery.dart';
class GroupGallery extends StatelessWidget {
final int photoGridSize;
2023-08-24 16:56:24 +00:00
final List<EnteFile> files;
2023-05-31 19:34:19 +00:00
final String tag;
final GalleryLoader asyncLoader;
final SelectedFiles? selectedFiles;
final bool limitSelectionToOne;
2023-06-01 06:35:30 +00:00
2023-05-31 19:34:19 +00:00
const GroupGallery({
required this.photoGridSize,
required this.files,
required this.tag,
required this.asyncLoader,
required this.selectedFiles,
required this.limitSelectionToOne,
super.key,
});
@override
Widget build(BuildContext context) {
const kRecycleLimit = 400;
final List<Widget> childGalleries = [];
final subGalleryItemLimit = photoGridSize * subGalleryMultiplier;
for (int index = 0; index < files.length; index += subGalleryItemLimit) {
childGalleries.add(
2023-05-31 19:39:43 +00:00
LazyGridView(
2023-05-31 19:34:19 +00:00
tag,
files.sublist(
index,
min(index + subGalleryItemLimit, files.length),
),
asyncLoader,
selectedFiles,
index == 0,
files.length > kRecycleLimit,
photoGridSize,
limitSelectionToOne: limitSelectionToOne,
),
);
}
return Column(
children: childGalleries,
);
}
}