From 7eb86fc6b96dafb550cc1f88b82bac935e3f48b0 Mon Sep 17 00:00:00 2001 From: Roscoe Rubin-Rottenberg Date: Fri, 10 Jul 2026 14:52:02 -0400 Subject: [PATCH] refactor: use material sheet for share sheet --- .../widgets/action_buttons/share_panel.dart | 42 +++++++++---------- .../action_buttons/side_action_bar.dart | 10 +---- 2 files changed, 20 insertions(+), 32 deletions(-) diff --git a/lib/src/features/feed/ui/widgets/action_buttons/share_panel.dart b/lib/src/features/feed/ui/widgets/action_buttons/share_panel.dart index 1a665e39..6530766b 100644 --- a/lib/src/features/feed/ui/widgets/action_buttons/share_panel.dart +++ b/lib/src/features/feed/ui/widgets/action_buttons/share_panel.dart @@ -11,6 +11,23 @@ import 'package:spark/src/core/utils/logging/log_service.dart'; import 'package:spark/src/features/messages/providers/conversation_provider.dart'; import 'package:spark/src/features/messages/providers/conversations_provider.dart'; +Future showShareSheet({ + required BuildContext context, + required String shareUrl, + required String atUri, +}) { + return showModalBottomSheet( + context: context, + isScrollControlled: true, + useSafeArea: true, + showDragHandle: true, + constraints: BoxConstraints( + maxHeight: MediaQuery.sizeOf(context).height * 0.7, + ), + builder: (context) => SharePanel(shareUrl: shareUrl, atUri: atUri), + ); +} + class SharePanel extends ConsumerStatefulWidget { const SharePanel({required this.shareUrl, required this.atUri, super.key}); @@ -94,35 +111,14 @@ class _SharePanelState extends ConsumerState { final convosAsync = ref.watch(conversationsProvider); final hasSelection = _selectedConvoId != null; - return Container( - decoration: BoxDecoration( - color: theme.colorScheme.surface, - borderRadius: const BorderRadius.only( - topLeft: Radius.circular(20), - topRight: Radius.circular(20), - ), - boxShadow: [ - BoxShadow( - color: theme.colorScheme.shadow.withValues(alpha: 0.2), - blurRadius: 10, - ), - ], - ), + return SizedBox( + width: double.infinity, child: SafeArea( top: false, child: SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.min, children: [ - Container( - width: 40, - height: 4, - margin: const EdgeInsets.only(top: 12, bottom: 16), - decoration: BoxDecoration( - color: dividerColor, - borderRadius: BorderRadius.circular(10), - ), - ), Padding( padding: const EdgeInsets.symmetric(horizontal: 20), child: Text( diff --git a/lib/src/features/feed/ui/widgets/action_buttons/side_action_bar.dart b/lib/src/features/feed/ui/widgets/action_buttons/side_action_bar.dart index 47199ed0..61dd05e0 100644 --- a/lib/src/features/feed/ui/widgets/action_buttons/side_action_bar.dart +++ b/lib/src/features/feed/ui/widgets/action_buttons/side_action_bar.dart @@ -277,19 +277,11 @@ class SideActionBarState extends ConsumerState { } void _handleShare() { - widget.onMediaPauseRequested?.call(); final currentPost = _currentPost ?? widget.post; final originalAtUri = currentPost.uri.toString(); final shareUrl = _buildShareUrl(currentPost); - showModalBottomSheet( - context: context, - isScrollControlled: true, - backgroundColor: Colors.transparent, - builder: (context) { - return SharePanel(shareUrl: shareUrl, atUri: originalAtUri); - }, - ); + showShareSheet(context: context, shareUrl: shareUrl, atUri: originalAtUri); } void _handleCommentPressed() { -- 2.51.2