adjusted logbook grid

This commit is contained in:
Vadim 2025-07-10 16:05:35 +02:00
parent 02c6c2fc6f
commit 84e77d0620
2 changed files with 53 additions and 21 deletions

View file

@ -0,0 +1,35 @@
import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:lightmeter/res/dimens.dart';
import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart';
class LogbookPhotoGridTile extends StatelessWidget {
final LogbookPhoto photo;
final VoidCallback onTap;
const LogbookPhotoGridTile({
required this.photo,
required this.onTap,
});
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onTap,
child: Card(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(Dimens.borderRadiusM)),
child: FadeInImage(
placeholder: MemoryImage(Uint8List(0)), // Will be replaced by placeholder widget
image: FileImage(File(photo.name)),
fit: BoxFit.cover,
fadeInDuration: Dimens.durationS,
fadeOutDuration: Dimens.durationS,
imageErrorBuilder: (_, __, ___) => const Center(child: Icon(Icons.error_outline)),
placeholderErrorBuilder: (_, __, ___) => const SizedBox.shrink(),
),
),
);
}
}

View file

@ -1,11 +1,10 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:lightmeter/generated/l10n.dart';
import 'package:lightmeter/navigation/routes.dart';
import 'package:lightmeter/platform_config.dart';
import 'package:lightmeter/providers/logbook_photos_provider.dart';
import 'package:lightmeter/res/dimens.dart';
import 'package:lightmeter/screens/logbook/components/grid_tile/widget_grid_tile_logbook_photo.dart';
import 'package:lightmeter/screens/shared/sliver_screen/screen_sliver.dart';
import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart';
@ -54,27 +53,25 @@ class _PicturesGridBuilder extends StatelessWidget {
@override
Widget build(BuildContext context) {
return SliverGrid(
return SliverPadding(
padding: const EdgeInsets.symmetric(horizontal: Dimens.paddingM),
sliver: SliverGrid(
gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent:
(MediaQuery.sizeOf(context).width - Dimens.paddingS * (_crossAxisCount - 1)) / _crossAxisCount,
(MediaQuery.sizeOf(context).width - Dimens.paddingS * (_crossAxisCount - 1) - Dimens.paddingM * 2) /
_crossAxisCount,
mainAxisSpacing: Dimens.paddingS,
crossAxisSpacing: Dimens.paddingS,
childAspectRatio: PlatformConfig.cameraPreviewAspectRatio,
),
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
return GestureDetector(
(_, int index) => LogbookPhotoGridTile(
photo: values[index],
onTap: () => onEdit(values[index]),
child: Container(
alignment: Alignment.center,
color: Colors.teal[100 * (index % 9)],
child: Image.file(File(values[index].name)),
),
);
},
childCount: values.length,
),
),
);
}
}