diff --git a/packages/hms_room_kit/lib/src/hls_viewer/overlay_chat_component.dart b/packages/hms_room_kit/lib/src/hls_viewer/overlay_chat_component.dart index 3b56051e8..fd68d71dc 100644 --- a/packages/hms_room_kit/lib/src/hls_viewer/overlay_chat_component.dart +++ b/packages/hms_room_kit/lib/src/hls_viewer/overlay_chat_component.dart @@ -121,289 +121,314 @@ class _OverlayChatComponentState extends State { Widget build(BuildContext context) { return Padding( padding: const EdgeInsets.all(8.0), - child: SizedBox( - height: widget.height ?? MediaQuery.of(context).size.height * 0.2, - child: Column( - children: [ - ///Chat Header - Expanded( - child: Selector, int>>( - selector: (_, meetingStore) => Tuple2( - meetingStore.messages, meetingStore.messages.length), - builder: (context, data, _) { - _scrollToEnd(); - return ListView.builder( - controller: _scrollController, - shrinkWrap: true, - itemCount: data.item1.length, - itemBuilder: (_, index) { - return Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, + child: Selector( + selector: (_, meetingStore) => meetingStore.pinnedMessages.isNotEmpty, + builder: (_, isPinnedMessage, __) { + return SizedBox( + height: isPinnedMessage + ? MediaQuery.of(context).size.height * 0.4 + : MediaQuery.of(context).size.height * 0.3, + child: Column( + children: [ + ///Chat Header + Expanded( + child: Selector, int>>( + selector: (_, meetingStore) => Tuple2( + meetingStore.messages, + meetingStore.messages.length), + builder: (context, data, _) { + _scrollToEnd(); + return ListView.builder( + controller: _scrollController, + shrinkWrap: true, + itemCount: data.item1.length, + itemBuilder: (_, index) { + return Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, children: [ - Row( - children: [ - Container( - constraints: BoxConstraints( - maxWidth: MediaQuery.of(context) - .size - .width * - 0.5), - child: HMSTitleText( - text: data.item1[index].sender - ?.name ?? - "Anonymous", - textColor: Colors.white, - fontSize: 14, - lineHeight: 20, - letterSpacing: 0.1, + Expanded( + child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Row( + children: [ + Container( + constraints: BoxConstraints( + maxWidth: + MediaQuery.of(context) + .size + .width * + 0.5), + child: HMSTitleText( + text: data.item1[index].sender + ?.name ?? + "Anonymous", + textColor: Colors.white, + fontSize: 14, + lineHeight: 20, + letterSpacing: 0.1, + ), + ), + const SizedBox( + width: 4, + ), + Container( + constraints: BoxConstraints( + maxWidth: + MediaQuery.of(context) + .size + .width * + 0.5), + child: HMSSubtitleText( + text: messageTypeText(data + .item1[index] + .hmsMessageRecipient), + textColor: HMSThemeColors + .onSurfaceMediumEmphasis), + ), + ], ), - ), - const SizedBox( - width: 4, - ), - Container( - constraints: BoxConstraints( - maxWidth: MediaQuery.of(context) - .size - .width * - 0.5), - child: HMSSubtitleText( - text: messageTypeText(data - .item1[index] - .hmsMessageRecipient), - textColor: HMSThemeColors - .onSurfaceMediumEmphasis), - ), - ], - ), - const SizedBox( - height: 2, + const SizedBox( + height: 2, + ), + SelectableLinkify( + text: data.item1[index].message, + onOpen: (link) async { + Uri url = Uri.parse(link.url); + if (await canLaunchUrl(url)) { + await launchUrl(url, + mode: LaunchMode + .externalApplication); + } + }, + scrollPhysics: + const NeverScrollableScrollPhysics(), + options: const LinkifyOptions( + humanize: false), + style: HMSTextStyle.setTextStyle( + color: Colors.white, + fontSize: 14, + height: 20 / 14, + letterSpacing: 0.25, + ), + ), + const SizedBox( + height: 8, + ) + ], + ), ), - SelectableLinkify( - text: data.item1[index].message, - onOpen: (link) async { - Uri url = Uri.parse(link.url); - if (await canLaunchUrl(url)) { - await launchUrl(url, - mode: LaunchMode - .externalApplication); - } + GestureDetector( + onTap: () { + showModalBottomSheet( + isScrollControlled: true, + backgroundColor: + HMSThemeColors.surfaceDim, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(16), + topRight: Radius.circular(16)), + ), + context: context, + builder: (ctx) => + ChangeNotifierProvider.value( + value: context + .read(), + child: + ChatUtilitiesBottomSheet( + message: data.item1[index], + )), + ); }, - scrollPhysics: - const NeverScrollableScrollPhysics(), - options: - const LinkifyOptions(humanize: false), - style: HMSTextStyle.setTextStyle( - color: Colors.white, - fontSize: 14, - height: 20 / 14, - letterSpacing: 0.25, + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/more.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors + .onSurfaceMediumEmphasis, + BlendMode.srcIn), ), - ), - const SizedBox( - height: 8, ) ], - ), - ), - GestureDetector( - onTap: () { - showModalBottomSheet( - isScrollControlled: true, - backgroundColor: HMSThemeColors.surfaceDim, - shape: const RoundedRectangleBorder( - borderRadius: BorderRadius.only( - topLeft: Radius.circular(16), - topRight: Radius.circular(16)), - ), - context: context, - builder: (ctx) => - ChangeNotifierProvider.value( - value: context.read(), - child: ChatUtilitiesBottomSheet( - message: data.item1[index], - )), - ); - }, - child: SvgPicture.asset( - "packages/hms_room_kit/lib/src/assets/icons/more.svg", - height: 20, - width: 20, - colorFilter: ColorFilter.mode( - HMSThemeColors.onSurfaceMediumEmphasis, - BlendMode.srcIn), - ), - ) - ], - ); - }); - }), - ), - const SizedBox( - height: 8, - ), + ); + }); + }), + ), + const SizedBox( + height: 8, + ), - ///This renders the pinned message widget - Selector, int>>( - selector: (_, meetingStore) => Tuple2( - meetingStore.pinnedMessages, - meetingStore.pinnedMessages.length), - builder: (_, data, __) { - return PinChatWidget( - pinnedMessage: data.item1.reversed.toList(), + ///This renders the pinned message widget + PinChatWidget( backgroundColor: HMSThemeColors.backgroundDim.withAlpha(64), - ); - }), - - Selector( - selector: (_, meetingStore) => - meetingStore.chatControls["enabled"], - builder: (_, isChatEnabled, __) { - return isChatEnabled - ? Padding( - padding: const EdgeInsets.only(bottom: 8.0, top: 16), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - if ((HMSRoomLayout - .chatData?.isPrivateChatEnabled ?? - false) || - (HMSRoomLayout - .chatData?.isPublicChatEnabled ?? - false) || - (HMSRoomLayout.chatData?.rolesWhitelist - .isNotEmpty ?? - false)) - ReceipientSelectorChip( - currentlySelectedValue: - currentlySelectedValue, - updateSelectedValue: _updateValueChoose, - chipColor: HMSThemeColors.backgroundDim - .withAlpha(64), - ), - const SizedBox(), - if (HMSRoomLayout.chatData?.realTimeControls - ?.canDisableChat ?? - false) - Row( - mainAxisAlignment: MainAxisAlignment.end, + ), + Selector( + selector: (_, meetingStore) => + meetingStore.chatControls["enabled"], + builder: (_, isChatEnabled, __) { + return isChatEnabled + ? Padding( + padding: + const EdgeInsets.only(bottom: 8.0, top: 0), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, children: [ - PopupMenuButton( - padding: EdgeInsets.zero, - position: PopupMenuPosition.over, - color: HMSThemeColors.surfaceDefault, - itemBuilder: (context) => [ - PopupMenuItem( - value: 1, + if ((HMSRoomLayout.chatData + ?.isPrivateChatEnabled ?? + false) || + (HMSRoomLayout.chatData + ?.isPublicChatEnabled ?? + false) || + (HMSRoomLayout.chatData?.rolesWhitelist + .isNotEmpty ?? + false)) + ReceipientSelectorChip( + currentlySelectedValue: + currentlySelectedValue, + updateSelectedValue: _updateValueChoose, + chipColor: HMSThemeColors.backgroundDim + .withAlpha(64), + ), + const SizedBox(), + if (HMSRoomLayout.chatData?.realTimeControls + ?.canDisableChat ?? + false) + Row( + mainAxisAlignment: + MainAxisAlignment.end, + children: [ + PopupMenuButton( + padding: EdgeInsets.zero, + position: PopupMenuPosition.over, + color: + HMSThemeColors.surfaceDefault, + itemBuilder: (context) => [ + PopupMenuItem( + value: 1, + child: Container( + decoration: BoxDecoration( + borderRadius: + BorderRadius + .circular(50)), + child: Row(children: [ + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/${context.read().chatControls["enabled"] ? "recording_paused" : "resume"}.svg", + width: 20, + height: 20, + colorFilter: + ColorFilter.mode( + HMSThemeColors + .onSurfaceHighEmphasis, + BlendMode + .srcIn)), + const SizedBox( + width: 8, + ), + HMSTitleText( + text: context + .read< + MeetingStore>() + .chatControls[ + "enabled"] + ? "Pause Chat" + : "Resume Chat", + textColor: HMSThemeColors + .onSurfaceHighEmphasis, + fontSize: 14, + lineHeight: 20, + letterSpacing: 0.1, + ), + ]), + )) + ], + onSelected: (value) { + switch (value) { + case 1: + context + .read() + .setSessionMetadataForKey( + key: SessionStoreKeyValues + .getNameFromMethod( + SessionStoreKey + .chatState), + metadata: { + "enabled": context + .read< + MeetingStore>() + .chatControls[ + "enabled"] + ? false + : true, + "updatedBy": { + "peerID": context + .read< + MeetingStore>() + .localPeer + ?.peerId, + "userID": context + .read< + MeetingStore>() + .localPeer + ?.customerUserId, + "userName": context + .read< + MeetingStore>() + .localPeer + ?.name + }, + "updatedAt": DateTime + .now() + .millisecondsSinceEpoch //unix timestamp in miliseconds + }); + break; + } + }, child: Container( + height: 24, + width: 24, decoration: BoxDecoration( borderRadius: - BorderRadius.circular( - 50)), - child: Row(children: [ - SvgPicture.asset( - "packages/hms_room_kit/lib/src/assets/icons/${context.read().chatControls["enabled"] ? "recording_paused" : "resume"}.svg", - width: 20, - height: 20, - colorFilter: ColorFilter.mode( - HMSThemeColors - .onSurfaceHighEmphasis, - BlendMode.srcIn)), - const SizedBox( - width: 8, - ), - HMSTitleText( - text: context - .read() - .chatControls["enabled"] - ? "Pause Chat" - : "Resume Chat", - textColor: HMSThemeColors - .onSurfaceHighEmphasis, - fontSize: 14, - lineHeight: 20, - letterSpacing: 0.1, + const BorderRadius.all( + Radius.circular(4)), + color: HMSThemeColors + .backgroundDim + .withOpacity(0.64)), + child: Padding( + padding: + const EdgeInsets.all(4.0), + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/more.svg", + height: 16, + width: 16, + colorFilter: ColorFilter.mode( + HMSThemeColors + .onSurfaceLowEmphasis, + BlendMode.srcIn), ), - ]), - )) - ], - onSelected: (value) { - switch (value) { - case 1: - context - .read() - .setSessionMetadataForKey( - key: SessionStoreKeyValues - .getNameFromMethod( - SessionStoreKey - .chatState), - metadata: { - "enabled": context - .read() - .chatControls["enabled"] - ? false - : true, - "updatedBy": { - "peerID": context - .read() - .localPeer - ?.peerId, - "userID": context - .read() - .localPeer - ?.customerUserId, - "userName": context - .read() - .localPeer - ?.name - }, - "updatedAt": DateTime.now() - .millisecondsSinceEpoch //unix timestamp in miliseconds - }); - break; - } - }, - child: Container( - height: 24, - width: 24, - decoration: BoxDecoration( - borderRadius: - const BorderRadius.all( - Radius.circular(4)), - color: HMSThemeColors.backgroundDim - .withOpacity(0.64)), - child: Padding( - padding: const EdgeInsets.all(4.0), - child: SvgPicture.asset( - "packages/hms_room_kit/lib/src/assets/icons/more.svg", - height: 16, - width: 16, - colorFilter: ColorFilter.mode( - HMSThemeColors - .onSurfaceLowEmphasis, - BlendMode.srcIn), - ), - ), - ), - ) + ), + ), + ) + ], + ) ], - ) - ], - ), - ) - : const SizedBox(); - }), - ChatTextField( - sendMessage: _sendMessage, - toastBackgroundColor: HMSThemeColors.backgroundDim.withAlpha(64), - ) - ], - ), - ), + ), + ) + : const SizedBox(); + }), + ChatTextField( + sendMessage: _sendMessage, + toastBackgroundColor: + HMSThemeColors.backgroundDim.withAlpha(64), + ) + ], + ), + ); + }), ); } } diff --git a/packages/hms_room_kit/lib/src/meeting/meeting_bottom_navigation_bar.dart b/packages/hms_room_kit/lib/src/meeting/meeting_bottom_navigation_bar.dart index bb9155044..b86cb3a40 100644 --- a/packages/hms_room_kit/lib/src/meeting/meeting_bottom_navigation_bar.dart +++ b/packages/hms_room_kit/lib/src/meeting/meeting_bottom_navigation_bar.dart @@ -53,9 +53,7 @@ class _MeetingBottomNavigationBarState padding: EdgeInsets.only( bottom: MediaQuery.of(context).viewInsets.bottom + 15), - child: OverlayChatComponent( - height: MediaQuery.of(context).size.height * 0.3, - ), + child: const OverlayChatComponent(), )) : const SizedBox(); }), diff --git a/packages/hms_room_kit/lib/src/meeting/meeting_store.dart b/packages/hms_room_kit/lib/src/meeting/meeting_store.dart index 5944727a4..2852ca961 100644 --- a/packages/hms_room_kit/lib/src/meeting/meeting_store.dart +++ b/packages/hms_room_kit/lib/src/meeting/meeting_store.dart @@ -1772,11 +1772,13 @@ class MeetingStore extends ChangeNotifier if (value != null) { var data = jsonDecode(value); if (data != null && data.isNotEmpty) { - data.forEach((element) => pinnedMessages.add({ - "id": element["id"], - "text": element["text"], - "pinnedBy": element["pinnedBy"] - })); + data.forEach((element) { + pinnedMessages.add({ + "id": element["id"], + "text": element["text"], + "pinnedBy": element["pinnedBy"] + }); + }); } } notifyListeners(); diff --git a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/chat_bottom_sheet.dart b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/chat_bottom_sheet.dart index 03c6f222a..238fb5eef 100644 --- a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/chat_bottom_sheet.dart +++ b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/chat_bottom_sheet.dart @@ -148,9 +148,7 @@ class _ChatBottomSheetState extends State { child: const HMSEmptyChatWidget()))) : Expanded( child: Column(children: [ - PinChatWidget( - pinnedMessage: - data.item3.reversed.toList()), + const PinChatWidget(), /// List containing chats Expanded( diff --git a/packages/hms_room_kit/lib/src/widgets/chat_widgets/pin_chat_widget.dart b/packages/hms_room_kit/lib/src/widgets/chat_widgets/pin_chat_widget.dart index 1badcc343..d51ff8f25 100644 --- a/packages/hms_room_kit/lib/src/widgets/chat_widgets/pin_chat_widget.dart +++ b/packages/hms_room_kit/lib/src/widgets/chat_widgets/pin_chat_widget.dart @@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_linkify/flutter_linkify.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; import 'package:url_launcher/url_launcher.dart'; ///Project imports @@ -13,12 +14,9 @@ import 'package:hms_room_kit/src/meeting/meeting_store.dart'; ///[PinChatWidget] renders the pinned message widget class PinChatWidget extends StatefulWidget { - final List pinnedMessage; final Color? backgroundColor; - const PinChatWidget( - {Key? key, required this.pinnedMessage, this.backgroundColor}) - : super(key: key); + const PinChatWidget({Key? key, this.backgroundColor}) : super(key: key); @override State createState() => _PinChatWidgetState(); @@ -61,116 +59,133 @@ class _PinChatWidgetState extends State { Widget build(BuildContext context) { ///If there are no pinnedMessage we render an empty SizedBox ///else we render the pinned message widget - return widget.pinnedMessage.isEmpty - ? const SizedBox() - : GestureDetector( - onTap: () => toggleExpand(), - child: Padding( - padding: const EdgeInsets.only(bottom: 8.0), - child: Row( - children: [ - AnimatedContainer( - height: MediaQuery.of(context).size.height * - (isExpanded ? 0.13 : 0.09), - width: - (HMSRoomLayout.chatData?.allowPinningMessages ?? false) - ? MediaQuery.of(context).size.width * 0.83 - : MediaQuery.of(context).size.width * 0.9, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8), - color: widget.backgroundColor ?? - HMSThemeColors.surfaceDefault), - duration: const Duration(milliseconds: 0), - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - if (widget.pinnedMessage.length > 1) - DotsIndicator( - axis: Axis.vertical, - mainAxisSize: MainAxisSize.min, - dotsCount: widget.pinnedMessage.length, - position: - currentPage >= widget.pinnedMessage.length - ? 0 - : currentPage, - decorator: DotsDecorator( - spacing: const EdgeInsets.only( - bottom: 3.0, right: 8), - size: Size(2.0, isExpanded ? 24 : 9.0), - activeSize: Size(2.0, isExpanded ? 24 : 9.0), - color: HMSThemeColors.onSurfaceLowEmphasis, - activeColor: - HMSThemeColors.onSurfaceHighEmphasis, - activeShape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(16.0)), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(16.0)), - ), - onTap: (position) => setCurrentPage(position), - ), - Expanded( - child: PageView.builder( - scrollDirection: Axis.vertical, - controller: _pageController, - itemCount: widget.pinnedMessage.length, - physics: const PageScrollPhysics(), - onPageChanged: (value) => setCurrentPage(value), - itemBuilder: (context, index) => - SelectableLinkify( - maxLines: 3, - scrollPhysics: isExpanded - ? const BouncingScrollPhysics() - : const NeverScrollableScrollPhysics(), - text: widget.pinnedMessage[index]["text"], - onOpen: (link) async { - Uri url = Uri.parse(link.url); - if (await canLaunchUrl(url)) { - await launchUrl(url, - mode: LaunchMode.externalApplication); - } - }, - onTap: () => toggleExpand(), - options: const LinkifyOptions(humanize: false), - style: HMSTextStyle.setTextStyle( - fontSize: 14.0, - color: HMSThemeColors.onSurfaceHighEmphasis, - letterSpacing: 0.25, - height: 20 / 14, - fontWeight: FontWeight.w400, + return Selector, int>>( + selector: (_, meetingStore) => Tuple2( + meetingStore.pinnedMessages.reversed.toList(), + meetingStore.pinnedMessages.length), + builder: (_, data, __) { + return data.item2 == 0 + ? const SizedBox() + : GestureDetector( + onTap: () => toggleExpand(), + child: Padding( + padding: const EdgeInsets.only(bottom: 8.0), + child: Row( + children: [ + AnimatedContainer( + height: MediaQuery.of(context).size.height * + (isExpanded ? 0.13 : 0.09), + width: + (HMSRoomLayout.chatData?.allowPinningMessages ?? + false) + ? MediaQuery.of(context).size.width * 0.83 + : MediaQuery.of(context).size.width * 0.9, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: widget.backgroundColor ?? + HMSThemeColors.surfaceDefault), + duration: const Duration(milliseconds: 0), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + if (data.item2 > 1) + DotsIndicator( + axis: Axis.vertical, + mainAxisSize: MainAxisSize.min, + dotsCount: data.item2, + position: currentPage >= data.item2 + ? 0 + : currentPage, + decorator: DotsDecorator( + spacing: const EdgeInsets.only( + bottom: 3.0, right: 8), + size: Size(2.0, isExpanded ? 24 : 9.0), + activeSize: + Size(2.0, isExpanded ? 24 : 9.0), + color: + HMSThemeColors.onSurfaceLowEmphasis, + activeColor: + HMSThemeColors.onSurfaceHighEmphasis, + activeShape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular(16.0)), + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular(16.0)), + ), + onTap: (position) => + setCurrentPage(position), + ), + Expanded( + child: PageView.builder( + scrollDirection: Axis.vertical, + controller: _pageController, + itemCount: data.item2, + physics: const PageScrollPhysics(), + onPageChanged: (value) => + setCurrentPage(value), + itemBuilder: (context, index) => + SelectableLinkify( + maxLines: 3, + scrollPhysics: isExpanded + ? const BouncingScrollPhysics() + : const NeverScrollableScrollPhysics(), + text: data.item1[index]["text"], + onOpen: (link) async { + Uri url = Uri.parse(link.url); + if (await canLaunchUrl(url)) { + await launchUrl(url, + mode: LaunchMode + .externalApplication); + } + }, + onTap: () => toggleExpand(), + options: + const LinkifyOptions(humanize: false), + style: HMSTextStyle.setTextStyle( + fontSize: 14.0, + color: HMSThemeColors + .onSurfaceHighEmphasis, + letterSpacing: 0.25, + height: 20 / 14, + fontWeight: FontWeight.w400, + ), + linkStyle: HMSTextStyle.setTextStyle( + fontSize: 14.0, + color: HMSThemeColors.primaryDefault, + letterSpacing: 0.25, + height: 20 / 14, + fontWeight: FontWeight.w400), + ), + ), ), - linkStyle: HMSTextStyle.setTextStyle( - fontSize: 14.0, - color: HMSThemeColors.primaryDefault, - letterSpacing: 0.25, - height: 20 / 14, - fontWeight: FontWeight.w400), - ), + ], + ), + ), + ), + const SizedBox(width: 8), + if (HMSRoomLayout.chatData?.allowPinningMessages ?? + false) + GestureDetector( + onTap: () => context + .read() + .unpinMessage(data.item1[currentPage]["id"]), + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/unpin.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceMediumEmphasis, + BlendMode.srcIn), ), ), - ], - ), + ], ), ), - const SizedBox(width: 8), - if (HMSRoomLayout.chatData?.allowPinningMessages ?? false) - GestureDetector( - onTap: () => context.read().unpinMessage( - widget.pinnedMessage[currentPage]["id"]), - child: SvgPicture.asset( - "packages/hms_room_kit/lib/src/assets/icons/unpin.svg", - height: 20, - width: 20, - colorFilter: ColorFilter.mode( - HMSThemeColors.onSurfaceMediumEmphasis, - BlendMode.srcIn), - ), - ), - ], - ), - ), - ); + ); + }); } }