Skip to content

Commit 8387fb7

Browse files
committed
action_sheet: Redesign bottom sheet
1 parent 5c70c76 commit 8387fb7

File tree

1 file changed

+61
-14
lines changed

1 file changed

+61
-14
lines changed

lib/widgets/action_sheet.dart

Lines changed: 61 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import '../model/narrow.dart';
1111
import 'clipboard.dart';
1212
import 'compose_box.dart';
1313
import 'dialog.dart';
14-
import 'draggable_scrollable_modal_bottom_sheet.dart';
1514
import 'icons.dart';
1615
import 'message_list.dart';
1716
import 'store.dart';
@@ -36,20 +35,44 @@ void showMessageActionSheet({required BuildContext context, required Message mes
3635
&& reactionWithVotes.userIds.contains(store.selfUserId))
3736
?? false;
3837

39-
showDraggableScrollableModalBottomSheet<void>(
38+
showModalBottomSheet<void>(
4039
context: context,
40+
clipBehavior: Clip.antiAlias,
41+
shape: const RoundedRectangleBorder(borderRadius: BorderRadius.vertical(top: Radius.circular(20.0))),
42+
useSafeArea: true,
43+
isScrollControlled: true,
4144
builder: (BuildContext _) {
42-
return Column(children: [
43-
if (!hasThumbsUpReactionVote) AddThumbsUpButton(message: message, messageListContext: context),
44-
StarButton(message: message, messageListContext: context),
45-
if (isComposeBoxOffered) QuoteAndReplyButton(
46-
message: message,
47-
messageListContext: context,
45+
return Padding(
46+
padding: const EdgeInsets.all(16.0),
47+
child: Column(
48+
crossAxisAlignment: CrossAxisAlignment.stretch,
49+
mainAxisSize: MainAxisSize.min,
50+
children: [
51+
// TODO(#217): show message text
52+
Flexible(
53+
child: SingleChildScrollView(
54+
child: ClipRRect(
55+
borderRadius: BorderRadius.circular(7),
56+
child: Column(children: [
57+
if (!hasThumbsUpReactionVote) AddThumbsUpButton(message: message, messageListContext: context),
58+
StarButton(message: message, messageListContext: context),
59+
if (isComposeBoxOffered) QuoteAndReplyButton(
60+
message: message,
61+
messageListContext: context,
62+
),
63+
CopyMessageTextButton(message: message, messageListContext: context),
64+
CopyMessageLinkButton(message: message, messageListContext: context),
65+
ShareButton(message: message, messageListContext: context),
66+
// TODO: The following line could be replaced by the [spacing]
67+
// property when https://github.com/flutter/flutter/issues/55378 is fixed.
68+
].expand((item) => [const SizedBox(height: 1), item]).skip(1).toList()),
69+
),
70+
),
71+
),
72+
const MessageActionSheetCancelButton(),
73+
],
4874
),
49-
CopyMessageTextButton(message: message, messageListContext: context),
50-
CopyMessageLinkButton(message: message, messageListContext: context),
51-
ShareButton(message: message, messageListContext: context),
52-
]);
75+
);
5376
});
5477
}
5578

@@ -71,9 +94,13 @@ abstract class MessageActionSheetMenuItemButton extends StatelessWidget {
7194
Widget build(BuildContext context) {
7295
final zulipLocalizations = ZulipLocalizations.of(context);
7396
return MenuItemButton(
74-
leadingIcon: Icon(icon),
97+
trailingIcon: Icon(icon, color: const Color(0xFF381DA7)), // TODO(#831)
98+
style: MenuItemButton.styleFrom(
99+
backgroundColor: const Color(0xFF6159E1).withOpacity(0.12), // TODO(#831)
100+
foregroundColor: const Color(0xFF381DA7), // TODO(#831)
101+
),
75102
onPressed: () => onPressed(context),
76-
child: Text(label(zulipLocalizations)));
103+
child: Text(label(zulipLocalizations), style: const TextStyle(fontSize: 16)));
77104
}
78105
}
79106

@@ -402,3 +429,23 @@ class ShareButton extends MessageActionSheetMenuItemButton {
402429
}
403430
}
404431
}
432+
433+
class MessageActionSheetCancelButton extends StatelessWidget {
434+
const MessageActionSheetCancelButton({super.key});
435+
436+
@override
437+
Widget build(BuildContext context) {
438+
return ElevatedButton(
439+
style: ElevatedButton.styleFrom(
440+
elevation: 0,
441+
backgroundColor: const Color(0xFF797986).withOpacity(0.15), // TODO(#831)
442+
foregroundColor: const Color(0xFF222222), // TODO(#831)
443+
shadowColor: Colors.transparent,
444+
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(7)),
445+
),
446+
onPressed: () => Navigator.pop(context),
447+
child: Text(ZulipLocalizations.of(context).dialogCancel,
448+
style: const TextStyle(fontSize: 16)),
449+
);
450+
}
451+
}

0 commit comments

Comments
 (0)