mirror of
https://github.com/immich-app/immich.git
synced 2025-01-08 12:56:48 +01:00
49c4d7cff9
fix orientation for remote assets wip separate widget separate video loader widget fixed memory leak optimized seeking, cleanup debug context pop use global key back to one widget fixed rebuild wait for swipe animation to finish smooth hero animation for remote videos faster scroll animation
59 lines
1.7 KiB
Dart
59 lines
1.7 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:immich_mobile/entities/asset.entity.dart';
|
|
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
|
import 'package:immich_mobile/utils/bytes_units.dart';
|
|
|
|
class FileInfo extends StatelessWidget {
|
|
final Asset asset;
|
|
|
|
const FileInfo({
|
|
super.key,
|
|
required this.asset,
|
|
});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final textColor = context.isDarkTheme ? Colors.white : Colors.black;
|
|
|
|
String resolution =
|
|
asset.orientatedHeight != null && asset.orientatedWidth != null
|
|
? "${asset.orientatedHeight} x ${asset.orientatedWidth} "
|
|
: "";
|
|
String fileSize = asset.exifInfo?.fileSize != null
|
|
? formatBytes(asset.exifInfo!.fileSize!)
|
|
: "";
|
|
String text = resolution + fileSize;
|
|
final imgSizeString = text.isNotEmpty ? text : null;
|
|
|
|
String? title;
|
|
String? subtitle;
|
|
|
|
if (imgSizeString == null && asset.fileName.isNotEmpty) {
|
|
// There is only filename
|
|
title = asset.fileName;
|
|
} else if (imgSizeString != null && asset.fileName.isNotEmpty) {
|
|
// There is both filename and size information
|
|
title = asset.fileName;
|
|
subtitle = imgSizeString;
|
|
} else if (imgSizeString != null && asset.fileName.isEmpty) {
|
|
title = imgSizeString;
|
|
} else {
|
|
return const SizedBox.shrink();
|
|
}
|
|
|
|
return ListTile(
|
|
contentPadding: const EdgeInsets.all(0),
|
|
dense: true,
|
|
leading: Icon(
|
|
Icons.image,
|
|
color: textColor.withAlpha(200),
|
|
),
|
|
titleAlignment: ListTileTitleAlignment.center,
|
|
title: Text(
|
|
title,
|
|
style: context.textTheme.labelLarge,
|
|
),
|
|
subtitle: subtitle == null ? null : Text(subtitle),
|
|
);
|
|
}
|
|
}
|