mirror of
https://github.com/immich-app/immich.git
synced 2026-02-28 09:38:43 +03:00
The existing implementation for showing asset details uses a bottom sheet, and is not in sync with the preview or scroll intent. Other apps use inline details, which is much cleaner and feels better to use.
46 lines
2.0 KiB
Dart
46 lines
2.0 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
|
import 'package:immich_mobile/presentation/widgets/asset_viewer/asset_details/appears_in_details.widget.dart';
|
|
import 'package:immich_mobile/presentation/widgets/asset_viewer/asset_details/date_time_details.widget.dart';
|
|
import 'package:immich_mobile/presentation/widgets/asset_viewer/asset_details/drag_handle.widget.dart';
|
|
import 'package:immich_mobile/presentation/widgets/asset_viewer/asset_details/location_details.widget.dart';
|
|
import 'package:immich_mobile/presentation/widgets/asset_viewer/asset_details/people_details.widget.dart';
|
|
import 'package:immich_mobile/presentation/widgets/asset_viewer/asset_details/rating_details.widget.dart';
|
|
import 'package:immich_mobile/presentation/widgets/asset_viewer/asset_details/technical_details.widget.dart';
|
|
import 'package:immich_mobile/providers/infrastructure/asset_viewer/asset.provider.dart';
|
|
|
|
class AssetDetails extends ConsumerWidget {
|
|
final double minHeight;
|
|
|
|
const AssetDetails({required this.minHeight, super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
|
final asset = ref.watch(currentAssetNotifier);
|
|
if (asset == null) {
|
|
return const SizedBox.shrink();
|
|
}
|
|
return Container(
|
|
constraints: BoxConstraints(minHeight: minHeight),
|
|
decoration: BoxDecoration(
|
|
color: context.colorScheme.surface,
|
|
borderRadius: const BorderRadius.vertical(top: Radius.circular(20)),
|
|
),
|
|
child: Column(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
const DragHandle(),
|
|
const DateTimeDetails(),
|
|
const PeopleDetails(),
|
|
const LocationDetails(),
|
|
const TechnicalDetails(),
|
|
const RatingDetails(),
|
|
const AppearsInDetails(),
|
|
SizedBox(height: context.padding.bottom + 48),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|