feat(mobile): Modified draggable area of detail modal (#14953)

Modified draggable area of detail modal
This commit is contained in:
Yaros 2024-12-27 16:28:54 +01:00 committed by GitHub
parent 2be1cb7de2
commit 2255f3e966
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 33 additions and 14 deletions

View File

@ -127,18 +127,29 @@ class GalleryViewerPage extends HookConsumerWidget {
context: context, context: context,
useSafeArea: true, useSafeArea: true,
builder: (context) { builder: (context) {
return FractionallySizedBox( return DraggableScrollableSheet(
heightFactor: 0.75, minChildSize: 0.5,
child: Padding( maxChildSize: 1,
padding: EdgeInsets.only( initialChildSize: 0.75,
bottom: context.viewInsets.bottom, expand: false,
), builder: (context, scrollController) {
child: ref return Padding(
.watch(appSettingsServiceProvider) padding: EdgeInsets.only(
.getSetting<bool>(AppSettingsEnum.advancedTroubleshooting) bottom: context.viewInsets.bottom,
? AdvancedBottomSheet(assetDetail: asset) ),
: DetailPanel(asset: asset), child: ref.watch(appSettingsServiceProvider).getSetting<bool>(
), AppSettingsEnum.advancedTroubleshooting,
)
? AdvancedBottomSheet(
assetDetail: asset,
scrollController: scrollController,
)
: DetailPanel(
asset: asset,
scrollController: scrollController,
),
);
},
); );
}, },
); );

View File

@ -6,12 +6,18 @@ import 'package:immich_mobile/entities/asset.entity.dart';
class AdvancedBottomSheet extends HookConsumerWidget { class AdvancedBottomSheet extends HookConsumerWidget {
final Asset assetDetail; final Asset assetDetail;
final ScrollController? scrollController;
const AdvancedBottomSheet({super.key, required this.assetDetail}); const AdvancedBottomSheet({
super.key,
required this.assetDetail,
this.scrollController,
});
@override @override
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
return SingleChildScrollView( return SingleChildScrollView(
controller: scrollController,
child: Container( child: Container(
margin: const EdgeInsets.symmetric(horizontal: 8.0), margin: const EdgeInsets.symmetric(horizontal: 8.0),
child: LayoutBuilder( child: LayoutBuilder(

View File

@ -9,12 +9,14 @@ import 'package:immich_mobile/entities/asset.entity.dart';
class DetailPanel extends HookConsumerWidget { class DetailPanel extends HookConsumerWidget {
final Asset asset; final Asset asset;
final ScrollController? scrollController;
const DetailPanel({super.key, required this.asset}); const DetailPanel({super.key, required this.asset, this.scrollController});
@override @override
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
return ListView( return ListView(
controller: scrollController,
shrinkWrap: true, shrinkWrap: true,
children: [ children: [
Padding( Padding(