From 7c8bd11fd2a41d9810b7dd7a01e92fee7e661d7d Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Wed, 13 Jan 2021 13:25:38 +0530 Subject: [PATCH] [ImageActionsModal] Remove cross icon and fix dividers Signed-off-by: Sahil Kumar --- lib/src/image_actions_modal.dart | 206 +++++++++++++++---------------- 1 file changed, 102 insertions(+), 104 deletions(-) diff --git a/lib/src/image_actions_modal.dart b/lib/src/image_actions_modal.dart index 332117d4..97729ca1 100644 --- a/lib/src/image_actions_modal.dart +++ b/lib/src/image_actions_modal.dart @@ -8,6 +8,7 @@ import 'package:image_gallery_saver/image_gallery_saver.dart'; import 'package:path_provider/path_provider.dart'; import '../stream_chat_flutter.dart'; +import 'extension.dart'; class ImageActionsModal extends StatelessWidget { final Message message; @@ -35,127 +36,124 @@ class ImageActionsModal extends StatelessWidget { } Widget _buildPage(context) { - return Material( - color: Colors.transparent, - child: Column( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - SizedBox( - height: kToolbarHeight, - child: IconButton( - icon: StreamSvgIcon.close(), - onPressed: () => Navigator.maybePop(context), + return Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + SizedBox(height: kToolbarHeight), + Padding( + padding: const EdgeInsets.only(right: 8.0), + child: Container( + width: MediaQuery.of(context).size.width * 0.5, + clipBehavior: Clip.hardEdge, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(16.0), ), - ), - Align( - alignment: Alignment.centerRight, child: Container( - width: MediaQuery.of(context).size.width / 1.8, - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Material( - clipBehavior: Clip.hardEdge, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.end, + mainAxisSize: MainAxisSize.min, + children: [ + _buildButton( + context, + 'Reply', + StreamSvgIcon.Icon_curve_line_left_up( + size: 24.0, + color: StreamChatTheme.of(context).colorTheme.grey, + ), + () {}, ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: ListTile.divideTiles( - color: StreamChatTheme.of(context).colorTheme.greyWhisper, - context: context, - tiles: [ - _buildButton( - context, - 'Reply', - StreamSvgIcon.Icon_curve_line_left_up( - size: 24.0, - color: - StreamChatTheme.of(context).colorTheme.grey, - ), - () {}), - _buildButton( - context, - 'Show in Chat', - StreamSvgIcon.eye( - size: 24.0, - color: - StreamChatTheme.of(context).colorTheme.black, - ), - onShowMessage), - _buildButton( - context, - 'Save ${urls[currentIndex].type == 'video' ? 'Video' : 'Image'}', - StreamSvgIcon.Icon_save( - size: 24.0, - color: - StreamChatTheme.of(context).colorTheme.grey, - ), () async { - var url = urls[currentIndex].imageUrl ?? - urls[currentIndex].assetUrl ?? - urls[currentIndex].thumbUrl; + _buildButton( + context, + 'Show in Chat', + StreamSvgIcon.eye( + size: 24.0, + color: StreamChatTheme.of(context).colorTheme.black, + ), + onShowMessage, + ), + _buildButton( + context, + 'Save ${urls[currentIndex].type == 'video' ? 'Video' : 'Image'}', + StreamSvgIcon.Icon_save( + size: 24.0, + color: StreamChatTheme.of(context).colorTheme.grey, + ), + () async { + var url = urls[currentIndex].imageUrl ?? + urls[currentIndex].assetUrl ?? + urls[currentIndex].thumbUrl; - if (urls[currentIndex].type == 'video') { - await _saveVideo(url); - Navigator.pop(context); - } else { - await _saveImage(url); - Navigator.pop(context); - } - }), - if (StreamChat.of(context).user.id == message.user.id) - _buildButton( - context, - 'Delete', - StreamSvgIcon.delete( - size: 24.0, - color: StreamChatTheme.of(context) - .colorTheme - .accentRed, - ), - () { - Navigator.pop(context); - Navigator.pop(context); - StreamChat.of(context).client.deleteMessage( - message, - StreamChannel.of(context).channel.cid, - ); - }, - color: StreamChatTheme.of(context) - .colorTheme - .accentRed, - ), - ], - ).toList(), + if (urls[currentIndex].type == 'video') { + await _saveVideo(url); + Navigator.pop(context); + } else { + await _saveImage(url); + Navigator.pop(context); + } + }, ), - ), + if (StreamChat.of(context).user.id == message.user.id) + _buildButton( + context, + 'Delete', + StreamSvgIcon.delete( + size: 24.0, + color: StreamChatTheme.of(context).colorTheme.accentRed, + ), + () { + Navigator.pop(context); + Navigator.pop(context); + StreamChat.of(context).client.deleteMessage( + message, + StreamChannel.of(context).channel.cid, + ); + }, + color: StreamChatTheme.of(context).colorTheme.accentRed, + ), + ] + .map((e) => + Align(alignment: Alignment.centerRight, child: e)) + .insertBetween( + Container( + height: 1, + color: + StreamChatTheme.of(context).colorTheme.greyWhisper, + ), + ), ), ), ), - ], - ), + ) + ], ); } Widget _buildButton( - context, String title, StreamSvgIcon icon, VoidCallback onTap, - {Color color}) { - var titleStyle = TextStyle( - fontSize: 14.5, - color: StreamChatTheme.of(context).colorTheme.black, - ); - + context, + String title, + StreamSvgIcon icon, + VoidCallback onTap, { + Color color, + }) { return Material( color: StreamChatTheme.of(context).colorTheme.white, child: InkWell( onTap: onTap, - child: ListTile( - dense: true, - title: Text( - title, - style: - color == null ? titleStyle : titleStyle.copyWith(color: color), + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 8.0, horizontal: 16.0), + child: Row( + children: [ + icon, + SizedBox(width: 16), + Text( + title, + style: StreamChatTheme.of(context) + .textTheme + .body + .copyWith(color: color), + ), + ], ), - leading: icon, ), ), );