From 4c4ad35cafc9be9bf7bd27ee42e57a2ec4f388ce Mon Sep 17 00:00:00 2001 From: Anuj Date: Thu, 5 Jun 2025 15:28:50 +0530 Subject: [PATCH 1/7] fix: removed .w extension and replaced with mediaquirey size --- chatbot_example/pubspec.lock | 122 +++++++++------ example/lib/onboarding/cred_screen.dart | 6 +- example/pubspec.lock | 122 +++++++++------ lib/packages/core/.flutter-plugins | 145 +++++++++--------- .../core/.flutter-plugins-dependencies | 2 +- .../core/lib/src/views/chatroom/chatroom.dart | 8 +- .../views/community_chat/community_chat.dart | 16 +- .../core/lib/src/views/explore/explore.dart | 29 ++-- .../lib/src/views/media/media_forwarding.dart | 50 +++--- .../lib/src/views/media/media_preview.dart | 27 ++-- .../src/views/participants/participants.dart | 11 +- .../core/lib/src/views/poll/create_poll.dart | 14 +- .../core/lib/src/views/poll/poll_result.dart | 9 +- .../src/widgets/chatroom/chatroom_bar.dart | 27 ++-- .../widgets/chatroom/chatroom_bar_header.dart | 16 +- .../src/widgets/chatroom/chatroom_menu.dart | 5 +- .../src/widgets/text_field/text_field.dart | 12 +- lib/packages/ui/.flutter-plugins | 94 ++++++------ lib/packages/ui/.flutter-plugins-dependencies | 2 +- lib/packages/ui/lib/src/theme/theme.dart | 8 +- .../ui/lib/src/utils/media/media_utils.dart | 134 ++++++++-------- .../lib/src/widgets/common/extras/appbar.dart | 10 +- .../ui/lib/src/widgets/common/menu/menu.dart | 6 +- .../src/widgets/conversation/chat_bubble.dart | 52 ++++--- .../conversation/chat_bubble_media.dart | 8 +- .../conversation/chat_bubble_reply.dart | 7 +- .../conversation/chat_bubble_state.dart | 3 +- .../src/widgets/media/document/thumbnail.dart | 3 +- .../lib/src/widgets/media/document/tile.dart | 3 +- .../ui/lib/src/widgets/media/image.dart | 15 +- .../src/widgets/media/link_preview_bar.dart | 29 ++-- .../ui/lib/src/widgets/media/video.dart | 5 +- .../src/widgets/reaction/reaction_bar.dart | 6 +- .../reaction/reaction_bottom_sheet.dart | 7 +- .../widgets/shimmers/chatroom_skeleton.dart | 33 ++-- .../widgets/shimmers/document_shimmer.dart | 8 +- .../src/widgets/shimmers/media_shimmer.dart | 5 +- 37 files changed, 609 insertions(+), 450 deletions(-) diff --git a/chatbot_example/pubspec.lock b/chatbot_example/pubspec.lock index 05b5628c..fb86bbbe 100644 --- a/chatbot_example/pubspec.lock +++ b/chatbot_example/pubspec.lock @@ -53,10 +53,10 @@ packages: dependency: transitive description: name: async - sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" url: "https://pub.dev" source: hosted - version: "2.12.0" + version: "2.11.0" bloc: dependency: transitive description: @@ -69,10 +69,10 @@ packages: dependency: transitive description: name: boolean_selector - sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.1" build: dependency: transitive description: @@ -125,10 +125,10 @@ packages: dependency: transitive description: name: characters - sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.3.0" checked_yaml: dependency: transitive description: @@ -141,26 +141,26 @@ packages: dependency: transitive description: name: clock - sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.1.1" collection: dependency: transitive description: name: collection - sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf url: "https://pub.dev" source: hosted - version: "1.19.1" + version: "1.19.0" connectivity_plus: - dependency: "direct main" + dependency: transitive description: name: connectivity_plus - sha256: "876849631b0c7dc20f8b471a2a03142841b482438e3b707955464f5ffca3e4c3" + sha256: "051849e2bd7c7b3bc5844ea0d096609ddc3a859890ec3a9ac4a65a2620cc1f99" url: "https://pub.dev" source: hosted - version: "6.1.0" + version: "6.1.4" connectivity_plus_platform_interface: dependency: transitive description: @@ -242,7 +242,7 @@ packages: source: hosted version: "0.7.10" device_info_plus: - dependency: "direct main" + dependency: transitive description: name: device_info_plus sha256: a7fd703482b391a87d60b6061d04dfdeab07826b96f9abd8f5ed98068acc0074 @@ -333,10 +333,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" url: "https://pub.dev" source: hosted - version: "1.3.2" + version: "1.3.1" ffi: dependency: transitive description: @@ -510,6 +510,30 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.0" + flutter_local_notifications: + dependency: transitive + description: + name: flutter_local_notifications + sha256: ef41ae901e7529e52934feba19ed82827b11baa67336829564aeab3129460610 + url: "https://pub.dev" + source: hosted + version: "18.0.1" + flutter_local_notifications_linux: + dependency: transitive + description: + name: flutter_local_notifications_linux + sha256: "8f685642876742c941b29c32030f6f4f6dacd0e4eaecb3efbb187d6a3812ca01" + url: "https://pub.dev" + source: hosted + version: "5.0.0" + flutter_local_notifications_platform_interface: + dependency: transitive + description: + name: flutter_local_notifications_platform_interface + sha256: "6c5b83c86bf819cdb177a9247a3722067dd8cc6313827ce7c77a4b238a26fd52" + url: "https://pub.dev" + source: hosted + version: "8.0.0" flutter_localizations: dependency: transitive description: flutter @@ -761,18 +785,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec + sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" url: "https://pub.dev" source: hosted - version: "10.0.8" + version: "10.0.7" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" url: "https://pub.dev" source: hosted - version: "3.0.9" + version: "3.0.8" leak_tracker_testing: dependency: transitive description: @@ -784,24 +808,24 @@ packages: likeminds_chat_fl: dependency: "direct overridden" description: - path: "../../likeminds-chat-flutter-data" + path: "../../LikeMinds-Flutter-GroupChat-SDK" relative: true source: path - version: "1.12.0" + version: "1.16.1" likeminds_chat_flutter_core: dependency: "direct main" description: path: "../lib/packages/core" relative: true source: path - version: "0.14.0" + version: "1.1.1" likeminds_chat_flutter_ui: dependency: "direct overridden" description: path: "../lib/packages/ui" relative: true source: path - version: "0.14.0" + version: "1.1.1" lints: dependency: transitive description: @@ -838,10 +862,10 @@ packages: dependency: transitive description: name: matcher - sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb url: "https://pub.dev" source: hosted - version: "0.12.17" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: @@ -926,10 +950,10 @@ packages: dependency: transitive description: name: meta - sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.15.0" mime: dependency: transitive description: @@ -1062,10 +1086,10 @@ packages: dependency: transitive description: name: path - sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.9.0" path_parsing: dependency: transitive description: @@ -1403,10 +1427,10 @@ packages: dependency: transitive description: name: source_span - sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.10.1" + version: "1.10.0" sprintf: dependency: transitive description: @@ -1435,26 +1459,26 @@ packages: dependency: transitive description: name: stack_trace - sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" url: "https://pub.dev" source: hosted - version: "1.12.1" + version: "1.12.0" stream_channel: dependency: transitive description: name: stream_channel - sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.1.2" string_scanner: dependency: transitive description: name: string_scanner - sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" url: "https://pub.dev" source: hosted - version: "1.4.1" + version: "1.3.0" super_sliver_list: dependency: transitive description: @@ -1483,18 +1507,26 @@ packages: dependency: transitive description: name: term_glyph - sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 url: "https://pub.dev" source: hosted - version: "1.2.2" + version: "1.2.1" test_api: dependency: transitive description: name: test_api - sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + url: "https://pub.dev" + source: hosted + version: "0.7.3" + timezone: + dependency: transitive + description: + name: timezone + sha256: dd14a3b83cfd7cb19e7888f1cbc20f258b8d71b54c06f79ac585f14093a287d1 url: "https://pub.dev" source: hosted - version: "0.7.4" + version: "0.10.1" typed_data: dependency: transitive description: @@ -1635,10 +1667,10 @@ packages: dependency: transitive description: name: vm_service - sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" + sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b url: "https://pub.dev" source: hosted - version: "14.3.1" + version: "14.3.0" volume_controller: dependency: transitive description: @@ -1720,5 +1752,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.7.0-0 <4.0.0" + dart: ">=3.4.0 <4.0.0" flutter: ">=3.22.0" diff --git a/example/lib/onboarding/cred_screen.dart b/example/lib/onboarding/cred_screen.dart index 202df01c..f03907a4 100644 --- a/example/lib/onboarding/cred_screen.dart +++ b/example/lib/onboarding/cred_screen.dart @@ -274,9 +274,9 @@ class _CredScreenState extends State { Future _onSubmit() async { await LMChatLocalPreference.instance.clearLocalData(); - String apiKey = _apiKeyController.text; - String username = _usernameController.text; - String userId = _userIdController.text; + String apiKey = "b3a5e07d-85c4-4d8d-9ec0-ca07e841b35b"; + String username = "abc"; + String userId = "abc"; // Ensure all data is fetched correctly if (apiKey.isEmpty) { ScaffoldMessenger.of(context).showSnackBar( diff --git a/example/pubspec.lock b/example/pubspec.lock index cd075a3d..829096c8 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -53,10 +53,10 @@ packages: dependency: transitive description: name: async - sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" url: "https://pub.dev" source: hosted - version: "2.12.0" + version: "2.11.0" bloc: dependency: transitive description: @@ -69,10 +69,10 @@ packages: dependency: transitive description: name: boolean_selector - sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.1" build: dependency: transitive description: @@ -125,10 +125,10 @@ packages: dependency: transitive description: name: characters - sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.3.0" checked_yaml: dependency: transitive description: @@ -141,26 +141,26 @@ packages: dependency: transitive description: name: clock - sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.1.1" collection: dependency: transitive description: name: collection - sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf url: "https://pub.dev" source: hosted - version: "1.19.1" + version: "1.19.0" connectivity_plus: - dependency: "direct main" + dependency: transitive description: name: connectivity_plus - sha256: "2056db5241f96cdc0126bd94459fc4cdc13876753768fc7a31c425e50a7177d0" + sha256: "051849e2bd7c7b3bc5844ea0d096609ddc3a859890ec3a9ac4a65a2620cc1f99" url: "https://pub.dev" source: hosted - version: "6.0.5" + version: "6.1.4" connectivity_plus_platform_interface: dependency: transitive description: @@ -242,7 +242,7 @@ packages: source: hosted version: "0.7.10" device_info_plus: - dependency: "direct main" + dependency: transitive description: name: device_info_plus sha256: a7fd703482b391a87d60b6061d04dfdeab07826b96f9abd8f5ed98068acc0074 @@ -333,10 +333,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" url: "https://pub.dev" source: hosted - version: "1.3.2" + version: "1.3.1" ffi: dependency: transitive description: @@ -510,6 +510,30 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.0" + flutter_local_notifications: + dependency: transitive + description: + name: flutter_local_notifications + sha256: ef41ae901e7529e52934feba19ed82827b11baa67336829564aeab3129460610 + url: "https://pub.dev" + source: hosted + version: "18.0.1" + flutter_local_notifications_linux: + dependency: transitive + description: + name: flutter_local_notifications_linux + sha256: "8f685642876742c941b29c32030f6f4f6dacd0e4eaecb3efbb187d6a3812ca01" + url: "https://pub.dev" + source: hosted + version: "5.0.0" + flutter_local_notifications_platform_interface: + dependency: transitive + description: + name: flutter_local_notifications_platform_interface + sha256: "6c5b83c86bf819cdb177a9247a3722067dd8cc6313827ce7c77a4b238a26fd52" + url: "https://pub.dev" + source: hosted + version: "8.0.0" flutter_localizations: dependency: transitive description: flutter @@ -761,18 +785,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec + sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" url: "https://pub.dev" source: hosted - version: "10.0.8" + version: "10.0.7" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" url: "https://pub.dev" source: hosted - version: "3.0.9" + version: "3.0.8" leak_tracker_testing: dependency: transitive description: @@ -784,24 +808,24 @@ packages: likeminds_chat_fl: dependency: "direct overridden" description: - path: "../../likeminds-chat-flutter-data" + path: "../../LikeMinds-Flutter-GroupChat-SDK" relative: true source: path - version: "1.12.0" + version: "1.16.1" likeminds_chat_flutter_core: dependency: "direct main" description: path: "../lib/packages/core" relative: true source: path - version: "0.14.0" + version: "1.1.1" likeminds_chat_flutter_ui: dependency: "direct overridden" description: path: "../lib/packages/ui" relative: true source: path - version: "0.14.0" + version: "1.1.1" lints: dependency: transitive description: @@ -838,10 +862,10 @@ packages: dependency: transitive description: name: matcher - sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb url: "https://pub.dev" source: hosted - version: "0.12.17" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: @@ -926,10 +950,10 @@ packages: dependency: transitive description: name: meta - sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.15.0" mime: dependency: transitive description: @@ -1062,10 +1086,10 @@ packages: dependency: transitive description: name: path - sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.9.0" path_parsing: dependency: transitive description: @@ -1403,10 +1427,10 @@ packages: dependency: transitive description: name: source_span - sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.10.1" + version: "1.10.0" sprintf: dependency: transitive description: @@ -1435,26 +1459,26 @@ packages: dependency: transitive description: name: stack_trace - sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" url: "https://pub.dev" source: hosted - version: "1.12.1" + version: "1.12.0" stream_channel: dependency: transitive description: name: stream_channel - sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.1.2" string_scanner: dependency: transitive description: name: string_scanner - sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" url: "https://pub.dev" source: hosted - version: "1.4.1" + version: "1.3.0" super_sliver_list: dependency: transitive description: @@ -1483,18 +1507,26 @@ packages: dependency: transitive description: name: term_glyph - sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 url: "https://pub.dev" source: hosted - version: "1.2.2" + version: "1.2.1" test_api: dependency: transitive description: name: test_api - sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + url: "https://pub.dev" + source: hosted + version: "0.7.3" + timezone: + dependency: transitive + description: + name: timezone + sha256: dd14a3b83cfd7cb19e7888f1cbc20f258b8d71b54c06f79ac585f14093a287d1 url: "https://pub.dev" source: hosted - version: "0.7.4" + version: "0.10.1" typed_data: dependency: transitive description: @@ -1635,10 +1667,10 @@ packages: dependency: transitive description: name: vm_service - sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" + sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b url: "https://pub.dev" source: hosted - version: "14.3.1" + version: "14.3.0" volume_controller: dependency: transitive description: @@ -1720,5 +1752,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.7.0-0 <4.0.0" + dart: ">=3.4.0 <4.0.0" flutter: ">=3.22.0" diff --git a/lib/packages/core/.flutter-plugins b/lib/packages/core/.flutter-plugins index 744dde5f..2e91bdd2 100644 --- a/lib/packages/core/.flutter-plugins +++ b/lib/packages/core/.flutter-plugins @@ -1,73 +1,74 @@ # This is a generated file; do not edit or check into version control. -device_info_plus=/Users/likeminds/.pub-cache/hosted/pub.dev/device_info_plus-10.1.2/ -emoji_picker_flutter=/Users/likeminds/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/ -file_picker=/Users/likeminds/.pub-cache/hosted/pub.dev/file_picker-8.3.7/ -file_selector_linux=/Users/likeminds/.pub-cache/hosted/pub.dev/file_selector_linux-0.9.3+2/ -file_selector_macos=/Users/likeminds/.pub-cache/hosted/pub.dev/file_selector_macos-0.9.4+2/ -file_selector_windows=/Users/likeminds/.pub-cache/hosted/pub.dev/file_selector_windows-0.9.3+4/ -firebase_core=/Users/likeminds/.pub-cache/hosted/pub.dev/firebase_core-3.12.1/ -firebase_core_web=/Users/likeminds/.pub-cache/hosted/pub.dev/firebase_core_web-2.21.1/ -firebase_database=/Users/likeminds/.pub-cache/hosted/pub.dev/firebase_database-11.3.4/ -firebase_database_web=/Users/likeminds/.pub-cache/hosted/pub.dev/firebase_database_web-0.2.6+10/ -firebase_messaging=/Users/likeminds/.pub-cache/hosted/pub.dev/firebase_messaging-15.2.4/ -firebase_messaging_web=/Users/likeminds/.pub-cache/hosted/pub.dev/firebase_messaging_web-3.10.4/ -flutter_plugin_android_lifecycle=/Users/likeminds/.pub-cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.27/ -flutter_sound=/Users/likeminds/.pub-cache/hosted/pub.dev/flutter_sound-9.27.0/ -flutter_sound_web=/Users/likeminds/.pub-cache/hosted/pub.dev/flutter_sound_web-9.27.0/ -image_picker=/Users/likeminds/.pub-cache/hosted/pub.dev/image_picker-1.1.2/ -image_picker_android=/Users/likeminds/.pub-cache/hosted/pub.dev/image_picker_android-0.8.12+22/ -image_picker_for_web=/Users/likeminds/.pub-cache/hosted/pub.dev/image_picker_for_web-3.0.6/ -image_picker_ios=/Users/likeminds/.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+2/ -image_picker_linux=/Users/likeminds/.pub-cache/hosted/pub.dev/image_picker_linux-0.2.1+2/ -image_picker_macos=/Users/likeminds/.pub-cache/hosted/pub.dev/image_picker_macos-0.2.1+2/ -image_picker_windows=/Users/likeminds/.pub-cache/hosted/pub.dev/image_picker_windows-0.2.1+1/ -media_kit_libs_android_video=/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_libs_android_video-1.3.6/ -media_kit_libs_ios_video=/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_libs_ios_video-1.1.4/ -media_kit_libs_linux=/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_libs_linux-1.1.3/ -media_kit_libs_macos_video=/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_libs_macos_video-1.1.4/ -media_kit_libs_windows_video=/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_libs_windows_video-1.0.10/ -media_kit_native_event_loop=/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_native_event_loop-1.0.9/ -media_kit_video=/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/ -open_file=/Users/likeminds/.pub-cache/hosted/pub.dev/open_file-3.5.10/ -open_file_android=/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_android-1.0.6/ -open_file_ios=/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_ios-1.0.3/ -open_file_linux=/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_linux-0.0.5/ -open_file_mac=/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_mac-1.0.3/ -open_file_web=/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_web-0.0.4/ -open_file_windows=/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_windows-0.0.3/ -package_info_plus=/Users/likeminds/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/ -path_provider=/Users/likeminds/.pub-cache/hosted/pub.dev/path_provider-2.1.5/ -path_provider_android=/Users/likeminds/.pub-cache/hosted/pub.dev/path_provider_android-2.2.16/ -path_provider_foundation=/Users/likeminds/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.1/ -path_provider_linux=/Users/likeminds/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/ -path_provider_windows=/Users/likeminds/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0/ -pdf_render=/Users/likeminds/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/ -permission_handler=/Users/likeminds/.pub-cache/hosted/pub.dev/permission_handler-11.4.0/ -permission_handler_android=/Users/likeminds/.pub-cache/hosted/pub.dev/permission_handler_android-12.1.0/ -permission_handler_apple=/Users/likeminds/.pub-cache/hosted/pub.dev/permission_handler_apple-9.4.6/ -permission_handler_html=/Users/likeminds/.pub-cache/hosted/pub.dev/permission_handler_html-0.1.3+5/ -permission_handler_windows=/Users/likeminds/.pub-cache/hosted/pub.dev/permission_handler_windows-0.2.1/ -screen_brightness=/Users/likeminds/.pub-cache/hosted/pub.dev/screen_brightness-0.2.2+1/ -screen_brightness_android=/Users/likeminds/.pub-cache/hosted/pub.dev/screen_brightness_android-0.1.0+2/ -screen_brightness_ios=/Users/likeminds/.pub-cache/hosted/pub.dev/screen_brightness_ios-0.1.0/ -screen_brightness_macos=/Users/likeminds/.pub-cache/hosted/pub.dev/screen_brightness_macos-0.1.0+1/ -screen_brightness_windows=/Users/likeminds/.pub-cache/hosted/pub.dev/screen_brightness_windows-0.1.3/ -shared_preferences=/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences-2.5.2/ -shared_preferences_android=/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences_android-2.4.8/ -shared_preferences_foundation=/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.4/ -shared_preferences_linux=/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences_linux-2.4.1/ -shared_preferences_web=/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences_web-2.4.3/ -shared_preferences_windows=/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.4.1/ -sqflite=/Users/likeminds/.pub-cache/hosted/pub.dev/sqflite-2.4.2/ -sqflite_android=/Users/likeminds/.pub-cache/hosted/pub.dev/sqflite_android-2.4.1/ -sqflite_darwin=/Users/likeminds/.pub-cache/hosted/pub.dev/sqflite_darwin-2.4.2/ -url_launcher=/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher-6.3.1/ -url_launcher_android=/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_android-6.3.15/ -url_launcher_ios=/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_ios-6.3.2/ -url_launcher_linux=/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_linux-3.2.1/ -url_launcher_macos=/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_macos-3.2.2/ -url_launcher_web=/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_web-2.4.0/ -url_launcher_windows=/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_windows-3.1.4/ -video_thumbnail=/Users/likeminds/.pub-cache/hosted/pub.dev/video_thumbnail-0.5.3/ -volume_controller=/Users/likeminds/.pub-cache/hosted/pub.dev/volume_controller-2.0.8/ -wakelock_plus=/Users/likeminds/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.10/ +connectivity_plus=/Users/anujkumar/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.4/ +device_info_plus=/Users/anujkumar/.pub-cache/hosted/pub.dev/device_info_plus-10.1.2/ +emoji_picker_flutter=/Users/anujkumar/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/ +file_picker=/Users/anujkumar/.pub-cache/hosted/pub.dev/file_picker-8.1.2/ +file_selector_linux=/Users/anujkumar/.pub-cache/hosted/pub.dev/file_selector_linux-0.9.2+1/ +file_selector_macos=/Users/anujkumar/.pub-cache/hosted/pub.dev/file_selector_macos-0.9.4/ +file_selector_windows=/Users/anujkumar/.pub-cache/hosted/pub.dev/file_selector_windows-0.9.3+2/ +firebase_core=/Users/anujkumar/.pub-cache/hosted/pub.dev/firebase_core-3.6.0/ +firebase_core_web=/Users/anujkumar/.pub-cache/hosted/pub.dev/firebase_core_web-2.18.1/ +firebase_database=/Users/anujkumar/.pub-cache/hosted/pub.dev/firebase_database-11.1.4/ +firebase_database_web=/Users/anujkumar/.pub-cache/hosted/pub.dev/firebase_database_web-0.2.6+2/ +firebase_messaging=/Users/anujkumar/.pub-cache/hosted/pub.dev/firebase_messaging-15.1.3/ +firebase_messaging_web=/Users/anujkumar/.pub-cache/hosted/pub.dev/firebase_messaging_web-3.9.2/ +flutter_local_notifications=/Users/anujkumar/.pub-cache/hosted/pub.dev/flutter_local_notifications-18.0.1/ +flutter_local_notifications_linux=/Users/anujkumar/.pub-cache/hosted/pub.dev/flutter_local_notifications_linux-5.0.0/ +flutter_plugin_android_lifecycle=/Users/anujkumar/.pub-cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.19/ +flutter_sound=/Users/anujkumar/.pub-cache/hosted/pub.dev/flutter_sound-9.17.0/ +flutter_sound_web=/Users/anujkumar/.pub-cache/hosted/pub.dev/flutter_sound_web-9.17.0/ +image_picker=/Users/anujkumar/.pub-cache/hosted/pub.dev/image_picker-1.1.2/ +image_picker_android=/Users/anujkumar/.pub-cache/hosted/pub.dev/image_picker_android-0.8.12+12/ +image_picker_for_web=/Users/anujkumar/.pub-cache/hosted/pub.dev/image_picker_for_web-3.0.5/ +image_picker_ios=/Users/anujkumar/.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12/ +image_picker_linux=/Users/anujkumar/.pub-cache/hosted/pub.dev/image_picker_linux-0.2.1+1/ +image_picker_macos=/Users/anujkumar/.pub-cache/hosted/pub.dev/image_picker_macos-0.2.1+1/ +image_picker_windows=/Users/anujkumar/.pub-cache/hosted/pub.dev/image_picker_windows-0.2.1+1/ +media_kit_libs_android_video=/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_libs_android_video-1.3.6/ +media_kit_libs_ios_video=/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_libs_ios_video-1.1.4/ +media_kit_libs_linux=/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_libs_linux-1.1.3/ +media_kit_libs_macos_video=/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_libs_macos_video-1.1.4/ +media_kit_libs_windows_video=/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_libs_windows_video-1.0.10/ +media_kit_native_event_loop=/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_native_event_loop-1.0.9/ +media_kit_video=/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/ +open_file=/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file-3.5.10/ +open_file_android=/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_android-1.0.6/ +open_file_ios=/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_ios-1.0.3/ +open_file_linux=/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_linux-0.0.5/ +open_file_mac=/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_mac-1.0.3/ +open_file_web=/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_web-0.0.4/ +open_file_windows=/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_windows-0.0.3/ +package_info_plus=/Users/anujkumar/.pub-cache/hosted/pub.dev/package_info_plus-8.0.2/ +path_provider=/Users/anujkumar/.pub-cache/hosted/pub.dev/path_provider-2.1.5/ +path_provider_android=/Users/anujkumar/.pub-cache/hosted/pub.dev/path_provider_android-2.2.12/ +path_provider_foundation=/Users/anujkumar/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.0/ +path_provider_linux=/Users/anujkumar/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/ +path_provider_windows=/Users/anujkumar/.pub-cache/hosted/pub.dev/path_provider_windows-2.2.1/ +pdf_render=/Users/anujkumar/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/ +permission_handler=/Users/anujkumar/.pub-cache/hosted/pub.dev/permission_handler-11.3.1/ +permission_handler_android=/Users/anujkumar/.pub-cache/hosted/pub.dev/permission_handler_android-12.0.6/ +permission_handler_apple=/Users/anujkumar/.pub-cache/hosted/pub.dev/permission_handler_apple-9.4.4/ +permission_handler_html=/Users/anujkumar/.pub-cache/hosted/pub.dev/permission_handler_html-0.1.1/ +permission_handler_windows=/Users/anujkumar/.pub-cache/hosted/pub.dev/permission_handler_windows-0.2.1/ +screen_brightness=/Users/anujkumar/.pub-cache/hosted/pub.dev/screen_brightness-0.2.2+1/ +screen_brightness_android=/Users/anujkumar/.pub-cache/hosted/pub.dev/screen_brightness_android-0.1.0+2/ +screen_brightness_ios=/Users/anujkumar/.pub-cache/hosted/pub.dev/screen_brightness_ios-0.1.0/ +screen_brightness_macos=/Users/anujkumar/.pub-cache/hosted/pub.dev/screen_brightness_macos-0.1.0+1/ +screen_brightness_windows=/Users/anujkumar/.pub-cache/hosted/pub.dev/screen_brightness_windows-0.1.3/ +shared_preferences=/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences-2.3.2/ +shared_preferences_android=/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences_android-2.3.3/ +shared_preferences_foundation=/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.3/ +shared_preferences_linux=/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences_linux-2.4.1/ +shared_preferences_web=/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences_web-2.4.2/ +shared_preferences_windows=/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.4.1/ +sqflite=/Users/anujkumar/.pub-cache/hosted/pub.dev/sqflite-2.3.3+1/ +url_launcher=/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher-6.3.1/ +url_launcher_android=/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_android-6.3.2/ +url_launcher_ios=/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_ios-6.3.0/ +url_launcher_linux=/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_linux-3.1.1/ +url_launcher_macos=/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_macos-3.2.0/ +url_launcher_web=/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_web-2.3.3/ +url_launcher_windows=/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_windows-3.1.1/ +video_thumbnail=/Users/anujkumar/.pub-cache/hosted/pub.dev/video_thumbnail-0.5.3/ +volume_controller=/Users/anujkumar/.pub-cache/hosted/pub.dev/volume_controller-2.0.7/ +wakelock_plus=/Users/anujkumar/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.8/ diff --git a/lib/packages/core/.flutter-plugins-dependencies b/lib/packages/core/.flutter-plugins-dependencies index 7aa405f6..428c9060 100644 --- a/lib/packages/core/.flutter-plugins-dependencies +++ b/lib/packages/core/.flutter-plugins-dependencies @@ -1 +1 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"device_info_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/device_info_plus-10.1.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"emoji_picker_flutter","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/file_picker-8.3.7/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_core","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/firebase_core-3.12.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_database","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/firebase_database-11.3.4/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_messaging","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/firebase_messaging-15.2.4/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"flutter_sound","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/flutter_sound-9.27.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"image_picker_ios","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_libs_ios_video","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_libs_ios_video-1.1.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_native_event_loop","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_native_event_loop-1.0.9/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_video","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/","native_build":true,"dependencies":["wakelock_plus","volume_controller"],"dev_dependency":false},{"name":"open_file_ios","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_ios-1.0.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_foundation","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.1/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"pdf_render","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"permission_handler_apple","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/permission_handler_apple-9.4.6/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"screen_brightness_ios","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/screen_brightness_ios-0.1.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_foundation","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.4/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"sqflite_darwin","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/sqflite_darwin-2.4.2/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_ios","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_ios-6.3.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"video_thumbnail","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/video_thumbnail-0.5.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"volume_controller","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/volume_controller-2.0.8/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"wakelock_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.10/","native_build":true,"dependencies":["package_info_plus"],"dev_dependency":false}],"android":[{"name":"device_info_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/device_info_plus-10.1.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"emoji_picker_flutter","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/file_picker-8.3.7/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"],"dev_dependency":false},{"name":"firebase_core","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/firebase_core-3.12.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_database","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/firebase_database-11.3.4/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_messaging","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/firebase_messaging-15.2.4/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"flutter_plugin_android_lifecycle","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.27/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"flutter_sound","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/flutter_sound-9.27.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"image_picker_android","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/image_picker_android-0.8.12+22/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"],"dev_dependency":false},{"name":"media_kit_libs_android_video","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_libs_android_video-1.3.6/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_video","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/","native_build":true,"dependencies":["wakelock_plus","volume_controller"],"dev_dependency":false},{"name":"open_file_android","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_android-1.0.6/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_android","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/path_provider_android-2.2.16/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"pdf_render","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"permission_handler_android","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/permission_handler_android-12.1.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"screen_brightness_android","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/screen_brightness_android-0.1.0+2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_android","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences_android-2.4.8/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"sqflite_android","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/sqflite_android-2.4.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_android","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_android-6.3.15/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"video_thumbnail","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/video_thumbnail-0.5.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"volume_controller","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/volume_controller-2.0.8/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"wakelock_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.10/","native_build":true,"dependencies":["package_info_plus"],"dev_dependency":false}],"macos":[{"name":"device_info_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/device_info_plus-10.1.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"emoji_picker_flutter","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/file_picker-8.3.7/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"file_selector_macos","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/file_selector_macos-0.9.4+2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_core","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/firebase_core-3.12.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_database","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/firebase_database-11.3.4/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_messaging","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/firebase_messaging-15.2.4/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"image_picker_macos","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/image_picker_macos-0.2.1+2/","native_build":false,"dependencies":["file_selector_macos"],"dev_dependency":false},{"name":"media_kit_libs_macos_video","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_libs_macos_video-1.1.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_native_event_loop","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_native_event_loop-1.0.9/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_video","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/","native_build":true,"dependencies":["wakelock_plus"],"dev_dependency":false},{"name":"open_file_mac","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_mac-1.0.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_foundation","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.1/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"pdf_render","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"screen_brightness_macos","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/screen_brightness_macos-0.1.0+1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_foundation","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.4/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"sqflite_darwin","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/sqflite_darwin-2.4.2/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_macos","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_macos-3.2.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"wakelock_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.10/","native_build":true,"dependencies":["package_info_plus"],"dev_dependency":false}],"linux":[{"name":"device_info_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/device_info_plus-10.1.2/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"emoji_picker_flutter","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/file_picker-8.3.7/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"file_selector_linux","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/file_selector_linux-0.9.3+2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"image_picker_linux","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/image_picker_linux-0.2.1+2/","native_build":false,"dependencies":["file_selector_linux"],"dev_dependency":false},{"name":"media_kit_libs_linux","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_libs_linux-1.1.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_native_event_loop","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_native_event_loop-1.0.9/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_video","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/","native_build":true,"dependencies":["wakelock_plus"],"dev_dependency":false},{"name":"open_file_linux","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_linux-0.0.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"path_provider_linux","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_linux","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences_linux-2.4.1/","native_build":false,"dependencies":["path_provider_linux"],"dev_dependency":false},{"name":"url_launcher_linux","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_linux-3.2.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"wakelock_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.10/","native_build":false,"dependencies":["package_info_plus"],"dev_dependency":false}],"windows":[{"name":"device_info_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/device_info_plus-10.1.2/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"emoji_picker_flutter","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/file_picker-8.3.7/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"file_selector_windows","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/file_selector_windows-0.9.3+4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_core","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/firebase_core-3.12.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"image_picker_windows","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/image_picker_windows-0.2.1+1/","native_build":false,"dependencies":["file_selector_windows"],"dev_dependency":false},{"name":"media_kit_libs_windows_video","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_libs_windows_video-1.0.10/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_native_event_loop","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_native_event_loop-1.0.9/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_video","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/","native_build":true,"dependencies":["wakelock_plus"],"dev_dependency":false},{"name":"open_file_windows","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_windows-0.0.3/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"path_provider_windows","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"permission_handler_windows","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/permission_handler_windows-0.2.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"screen_brightness_windows","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/screen_brightness_windows-0.1.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_windows","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.4.1/","native_build":false,"dependencies":["path_provider_windows"],"dev_dependency":false},{"name":"url_launcher_windows","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_windows-3.1.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"wakelock_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.10/","native_build":false,"dependencies":["package_info_plus"],"dev_dependency":false}],"web":[{"name":"device_info_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/device_info_plus-10.1.2/","dependencies":[],"dev_dependency":false},{"name":"emoji_picker_flutter","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/file_picker-8.3.7/","dependencies":[],"dev_dependency":false},{"name":"firebase_core_web","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/firebase_core_web-2.21.1/","dependencies":[],"dev_dependency":false},{"name":"firebase_database_web","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/firebase_database_web-0.2.6+10/","dependencies":["firebase_core_web"],"dev_dependency":false},{"name":"firebase_messaging_web","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/firebase_messaging_web-3.10.4/","dependencies":["firebase_core_web"],"dev_dependency":false},{"name":"flutter_sound_web","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/flutter_sound_web-9.27.0/","dependencies":[],"dev_dependency":false},{"name":"image_picker_for_web","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/image_picker_for_web-3.0.6/","dependencies":[],"dev_dependency":false},{"name":"open_file_web","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_web-0.0.4/","dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","dependencies":[],"dev_dependency":false},{"name":"pdf_render","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","dependencies":[],"dev_dependency":false},{"name":"permission_handler_html","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/permission_handler_html-0.1.3+5/","dependencies":[],"dev_dependency":false},{"name":"shared_preferences_web","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences_web-2.4.3/","dependencies":[],"dev_dependency":false},{"name":"url_launcher_web","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_web-2.4.0/","dependencies":[],"dev_dependency":false},{"name":"wakelock_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.10/","dependencies":["package_info_plus"],"dev_dependency":false}]},"dependencyGraph":[{"name":"device_info_plus","dependencies":[]},{"name":"emoji_picker_flutter","dependencies":["shared_preferences"]},{"name":"file_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"file_selector_linux","dependencies":[]},{"name":"file_selector_macos","dependencies":[]},{"name":"file_selector_windows","dependencies":[]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"firebase_database","dependencies":["firebase_core","firebase_database_web"]},{"name":"firebase_database_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"firebase_messaging","dependencies":["firebase_core","firebase_messaging_web"]},{"name":"firebase_messaging_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"flutter_sound","dependencies":["path_provider","flutter_sound_web"]},{"name":"flutter_sound_web","dependencies":[]},{"name":"image_picker","dependencies":["image_picker_android","image_picker_for_web","image_picker_ios","image_picker_linux","image_picker_macos","image_picker_windows"]},{"name":"image_picker_android","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"image_picker_for_web","dependencies":[]},{"name":"image_picker_ios","dependencies":[]},{"name":"image_picker_linux","dependencies":["file_selector_linux"]},{"name":"image_picker_macos","dependencies":["file_selector_macos"]},{"name":"image_picker_windows","dependencies":["file_selector_windows"]},{"name":"media_kit_libs_android_video","dependencies":[]},{"name":"media_kit_libs_ios_video","dependencies":[]},{"name":"media_kit_libs_linux","dependencies":[]},{"name":"media_kit_libs_macos_video","dependencies":[]},{"name":"media_kit_libs_windows_video","dependencies":[]},{"name":"media_kit_native_event_loop","dependencies":[]},{"name":"media_kit_video","dependencies":["wakelock_plus","screen_brightness","volume_controller"]},{"name":"open_file","dependencies":["open_file_android","open_file_web","open_file_ios","open_file_mac","open_file_windows","open_file_linux"]},{"name":"open_file_android","dependencies":[]},{"name":"open_file_ios","dependencies":[]},{"name":"open_file_linux","dependencies":[]},{"name":"open_file_mac","dependencies":[]},{"name":"open_file_web","dependencies":[]},{"name":"open_file_windows","dependencies":[]},{"name":"package_info_plus","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"pdf_render","dependencies":[]},{"name":"permission_handler","dependencies":["permission_handler_android","permission_handler_apple","permission_handler_html","permission_handler_windows"]},{"name":"permission_handler_android","dependencies":[]},{"name":"permission_handler_apple","dependencies":[]},{"name":"permission_handler_html","dependencies":[]},{"name":"permission_handler_windows","dependencies":[]},{"name":"screen_brightness","dependencies":["screen_brightness_android","screen_brightness_ios","screen_brightness_macos","screen_brightness_windows"]},{"name":"screen_brightness_android","dependencies":[]},{"name":"screen_brightness_ios","dependencies":[]},{"name":"screen_brightness_macos","dependencies":[]},{"name":"screen_brightness_windows","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]},{"name":"sqflite","dependencies":["sqflite_android","sqflite_darwin"]},{"name":"sqflite_android","dependencies":[]},{"name":"sqflite_darwin","dependencies":[]},{"name":"url_launcher","dependencies":["url_launcher_android","url_launcher_ios","url_launcher_linux","url_launcher_macos","url_launcher_web","url_launcher_windows"]},{"name":"url_launcher_android","dependencies":[]},{"name":"url_launcher_ios","dependencies":[]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_web","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]},{"name":"video_thumbnail","dependencies":[]},{"name":"volume_controller","dependencies":[]},{"name":"wakelock_plus","dependencies":["package_info_plus"]}],"date_created":"2025-03-26 15:32:36.594418","version":"3.29.2","swift_package_manager_enabled":{"ios":false,"macos":false}} \ No newline at end of file +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"connectivity_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.4/","native_build":true,"dependencies":[]},{"name":"device_info_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/device_info_plus-10.1.2/","native_build":true,"dependencies":[]},{"name":"emoji_picker_flutter","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","native_build":true,"dependencies":[]},{"name":"file_picker","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/file_picker-8.1.2/","native_build":true,"dependencies":[]},{"name":"firebase_core","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/firebase_core-3.6.0/","native_build":true,"dependencies":[]},{"name":"firebase_database","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/firebase_database-11.1.4/","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_messaging","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/firebase_messaging-15.1.3/","native_build":true,"dependencies":["firebase_core"]},{"name":"flutter_local_notifications","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/flutter_local_notifications-18.0.1/","native_build":true,"dependencies":[]},{"name":"flutter_sound","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/flutter_sound-9.17.0/","native_build":true,"dependencies":[]},{"name":"image_picker_ios","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12/","native_build":true,"dependencies":[]},{"name":"media_kit_libs_ios_video","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_libs_ios_video-1.1.4/","native_build":true,"dependencies":[]},{"name":"media_kit_native_event_loop","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_native_event_loop-1.0.9/","native_build":true,"dependencies":[]},{"name":"media_kit_video","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/","native_build":true,"dependencies":["wakelock_plus","volume_controller"]},{"name":"open_file_ios","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_ios-1.0.3/","native_build":true,"dependencies":[]},{"name":"package_info_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/package_info_plus-8.0.2/","native_build":true,"dependencies":[]},{"name":"path_provider_foundation","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.0/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"pdf_render","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","native_build":true,"dependencies":[]},{"name":"permission_handler_apple","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/permission_handler_apple-9.4.4/","native_build":true,"dependencies":[]},{"name":"screen_brightness_ios","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/screen_brightness_ios-0.1.0/","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.3/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"sqflite","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/sqflite-2.3.3+1/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"url_launcher_ios","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_ios-6.3.0/","native_build":true,"dependencies":[]},{"name":"video_thumbnail","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/video_thumbnail-0.5.3/","native_build":true,"dependencies":[]},{"name":"volume_controller","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/volume_controller-2.0.7/","native_build":true,"dependencies":[]},{"name":"wakelock_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.8/","native_build":true,"dependencies":["package_info_plus"]}],"android":[{"name":"connectivity_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.4/","native_build":true,"dependencies":[]},{"name":"device_info_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/device_info_plus-10.1.2/","native_build":true,"dependencies":[]},{"name":"emoji_picker_flutter","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","native_build":true,"dependencies":[]},{"name":"file_picker","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/file_picker-8.1.2/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]},{"name":"firebase_core","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/firebase_core-3.6.0/","native_build":true,"dependencies":[]},{"name":"firebase_database","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/firebase_database-11.1.4/","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_messaging","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/firebase_messaging-15.1.3/","native_build":true,"dependencies":["firebase_core"]},{"name":"flutter_local_notifications","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/flutter_local_notifications-18.0.1/","native_build":true,"dependencies":[]},{"name":"flutter_plugin_android_lifecycle","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.19/","native_build":true,"dependencies":[]},{"name":"flutter_sound","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/flutter_sound-9.17.0/","native_build":true,"dependencies":[]},{"name":"image_picker_android","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/image_picker_android-0.8.12+12/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]},{"name":"media_kit_libs_android_video","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_libs_android_video-1.3.6/","native_build":true,"dependencies":[]},{"name":"media_kit_video","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/","native_build":true,"dependencies":["wakelock_plus","volume_controller"]},{"name":"open_file_android","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_android-1.0.6/","native_build":true,"dependencies":[]},{"name":"package_info_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/package_info_plus-8.0.2/","native_build":true,"dependencies":[]},{"name":"path_provider_android","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/path_provider_android-2.2.12/","native_build":true,"dependencies":[]},{"name":"pdf_render","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","native_build":true,"dependencies":[]},{"name":"permission_handler_android","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/permission_handler_android-12.0.6/","native_build":true,"dependencies":[]},{"name":"screen_brightness_android","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/screen_brightness_android-0.1.0+2/","native_build":true,"dependencies":[]},{"name":"shared_preferences_android","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences_android-2.3.3/","native_build":true,"dependencies":[]},{"name":"sqflite","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/sqflite-2.3.3+1/","native_build":true,"dependencies":[]},{"name":"url_launcher_android","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_android-6.3.2/","native_build":true,"dependencies":[]},{"name":"video_thumbnail","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/video_thumbnail-0.5.3/","native_build":true,"dependencies":[]},{"name":"volume_controller","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/volume_controller-2.0.7/","native_build":true,"dependencies":[]},{"name":"wakelock_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.8/","native_build":true,"dependencies":["package_info_plus"]}],"macos":[{"name":"connectivity_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.4/","native_build":true,"dependencies":[]},{"name":"device_info_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/device_info_plus-10.1.2/","native_build":true,"dependencies":[]},{"name":"emoji_picker_flutter","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","native_build":true,"dependencies":[]},{"name":"file_picker","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/file_picker-8.1.2/","native_build":false,"dependencies":[]},{"name":"file_selector_macos","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/file_selector_macos-0.9.4/","native_build":true,"dependencies":[]},{"name":"firebase_core","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/firebase_core-3.6.0/","native_build":true,"dependencies":[]},{"name":"firebase_database","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/firebase_database-11.1.4/","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_messaging","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/firebase_messaging-15.1.3/","native_build":true,"dependencies":["firebase_core"]},{"name":"flutter_local_notifications","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/flutter_local_notifications-18.0.1/","native_build":true,"dependencies":[]},{"name":"image_picker_macos","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/image_picker_macos-0.2.1+1/","native_build":false,"dependencies":["file_selector_macos"]},{"name":"media_kit_libs_macos_video","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_libs_macos_video-1.1.4/","native_build":true,"dependencies":[]},{"name":"media_kit_native_event_loop","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_native_event_loop-1.0.9/","native_build":true,"dependencies":[]},{"name":"media_kit_video","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/","native_build":true,"dependencies":["wakelock_plus"]},{"name":"open_file_mac","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_mac-1.0.3/","native_build":true,"dependencies":[]},{"name":"package_info_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/package_info_plus-8.0.2/","native_build":true,"dependencies":[]},{"name":"path_provider_foundation","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.0/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"pdf_render","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","native_build":true,"dependencies":[]},{"name":"screen_brightness_macos","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/screen_brightness_macos-0.1.0+1/","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.3/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"sqflite","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/sqflite-2.3.3+1/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"url_launcher_macos","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_macos-3.2.0/","native_build":true,"dependencies":[]},{"name":"wakelock_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.8/","native_build":true,"dependencies":["package_info_plus"]}],"linux":[{"name":"connectivity_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.4/","native_build":false,"dependencies":[]},{"name":"device_info_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/device_info_plus-10.1.2/","native_build":false,"dependencies":[]},{"name":"emoji_picker_flutter","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","native_build":true,"dependencies":[]},{"name":"file_picker","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/file_picker-8.1.2/","native_build":false,"dependencies":[]},{"name":"file_selector_linux","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/file_selector_linux-0.9.2+1/","native_build":true,"dependencies":[]},{"name":"flutter_local_notifications_linux","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/flutter_local_notifications_linux-5.0.0/","native_build":false,"dependencies":[]},{"name":"image_picker_linux","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/image_picker_linux-0.2.1+1/","native_build":false,"dependencies":["file_selector_linux"]},{"name":"media_kit_libs_linux","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_libs_linux-1.1.3/","native_build":true,"dependencies":[]},{"name":"media_kit_native_event_loop","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_native_event_loop-1.0.9/","native_build":true,"dependencies":[]},{"name":"media_kit_video","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/","native_build":true,"dependencies":["wakelock_plus"]},{"name":"open_file_linux","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_linux-0.0.5/","native_build":true,"dependencies":[]},{"name":"package_info_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/package_info_plus-8.0.2/","native_build":false,"dependencies":[]},{"name":"path_provider_linux","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/","native_build":false,"dependencies":[]},{"name":"shared_preferences_linux","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences_linux-2.4.1/","native_build":false,"dependencies":["path_provider_linux"]},{"name":"url_launcher_linux","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_linux-3.1.1/","native_build":true,"dependencies":[]},{"name":"wakelock_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.8/","native_build":false,"dependencies":["package_info_plus"]}],"windows":[{"name":"connectivity_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.4/","native_build":true,"dependencies":[]},{"name":"device_info_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/device_info_plus-10.1.2/","native_build":false,"dependencies":[]},{"name":"emoji_picker_flutter","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","native_build":true,"dependencies":[]},{"name":"file_picker","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/file_picker-8.1.2/","native_build":false,"dependencies":[]},{"name":"file_selector_windows","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/file_selector_windows-0.9.3+2/","native_build":true,"dependencies":[]},{"name":"firebase_core","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/firebase_core-3.6.0/","native_build":true,"dependencies":[]},{"name":"image_picker_windows","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/image_picker_windows-0.2.1+1/","native_build":false,"dependencies":["file_selector_windows"]},{"name":"media_kit_libs_windows_video","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_libs_windows_video-1.0.10/","native_build":true,"dependencies":[]},{"name":"media_kit_native_event_loop","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_native_event_loop-1.0.9/","native_build":true,"dependencies":[]},{"name":"media_kit_video","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/","native_build":true,"dependencies":["wakelock_plus"]},{"name":"open_file_windows","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_windows-0.0.3/","native_build":false,"dependencies":[]},{"name":"package_info_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/package_info_plus-8.0.2/","native_build":false,"dependencies":[]},{"name":"path_provider_windows","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/path_provider_windows-2.2.1/","native_build":false,"dependencies":[]},{"name":"permission_handler_windows","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/permission_handler_windows-0.2.1/","native_build":true,"dependencies":[]},{"name":"screen_brightness_windows","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/screen_brightness_windows-0.1.3/","native_build":true,"dependencies":[]},{"name":"shared_preferences_windows","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.4.1/","native_build":false,"dependencies":["path_provider_windows"]},{"name":"url_launcher_windows","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_windows-3.1.1/","native_build":true,"dependencies":[]},{"name":"wakelock_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.8/","native_build":false,"dependencies":["package_info_plus"]}],"web":[{"name":"connectivity_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.4/","dependencies":[]},{"name":"device_info_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/device_info_plus-10.1.2/","dependencies":[]},{"name":"emoji_picker_flutter","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","dependencies":[]},{"name":"file_picker","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/file_picker-8.1.2/","dependencies":[]},{"name":"firebase_core_web","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/firebase_core_web-2.18.1/","dependencies":[]},{"name":"firebase_database_web","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/firebase_database_web-0.2.6+2/","dependencies":["firebase_core_web"]},{"name":"firebase_messaging_web","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/firebase_messaging_web-3.9.2/","dependencies":["firebase_core_web"]},{"name":"flutter_sound_web","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/flutter_sound_web-9.17.0/","dependencies":[]},{"name":"image_picker_for_web","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/image_picker_for_web-3.0.5/","dependencies":[]},{"name":"open_file_web","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_web-0.0.4/","dependencies":[]},{"name":"package_info_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/package_info_plus-8.0.2/","dependencies":[]},{"name":"pdf_render","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","dependencies":[]},{"name":"permission_handler_html","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/permission_handler_html-0.1.1/","dependencies":[]},{"name":"shared_preferences_web","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences_web-2.4.2/","dependencies":[]},{"name":"url_launcher_web","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_web-2.3.3/","dependencies":[]},{"name":"wakelock_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.8/","dependencies":["package_info_plus"]}]},"dependencyGraph":[{"name":"connectivity_plus","dependencies":[]},{"name":"device_info_plus","dependencies":[]},{"name":"emoji_picker_flutter","dependencies":["shared_preferences"]},{"name":"file_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"file_selector_linux","dependencies":[]},{"name":"file_selector_macos","dependencies":[]},{"name":"file_selector_windows","dependencies":[]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"firebase_database","dependencies":["firebase_core","firebase_database_web"]},{"name":"firebase_database_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"firebase_messaging","dependencies":["firebase_core","firebase_messaging_web"]},{"name":"firebase_messaging_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"flutter_local_notifications","dependencies":["flutter_local_notifications_linux"]},{"name":"flutter_local_notifications_linux","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"flutter_sound","dependencies":["path_provider","flutter_sound_web"]},{"name":"flutter_sound_web","dependencies":[]},{"name":"image_picker","dependencies":["image_picker_android","image_picker_for_web","image_picker_ios","image_picker_linux","image_picker_macos","image_picker_windows"]},{"name":"image_picker_android","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"image_picker_for_web","dependencies":[]},{"name":"image_picker_ios","dependencies":[]},{"name":"image_picker_linux","dependencies":["file_selector_linux"]},{"name":"image_picker_macos","dependencies":["file_selector_macos"]},{"name":"image_picker_windows","dependencies":["file_selector_windows"]},{"name":"media_kit_libs_android_video","dependencies":[]},{"name":"media_kit_libs_ios_video","dependencies":[]},{"name":"media_kit_libs_linux","dependencies":[]},{"name":"media_kit_libs_macos_video","dependencies":[]},{"name":"media_kit_libs_windows_video","dependencies":[]},{"name":"media_kit_native_event_loop","dependencies":[]},{"name":"media_kit_video","dependencies":["wakelock_plus","screen_brightness","volume_controller"]},{"name":"open_file","dependencies":["open_file_android","open_file_web","open_file_ios","open_file_mac","open_file_windows","open_file_linux"]},{"name":"open_file_android","dependencies":[]},{"name":"open_file_ios","dependencies":[]},{"name":"open_file_linux","dependencies":[]},{"name":"open_file_mac","dependencies":[]},{"name":"open_file_web","dependencies":[]},{"name":"open_file_windows","dependencies":[]},{"name":"package_info_plus","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"pdf_render","dependencies":[]},{"name":"permission_handler","dependencies":["permission_handler_android","permission_handler_apple","permission_handler_html","permission_handler_windows"]},{"name":"permission_handler_android","dependencies":[]},{"name":"permission_handler_apple","dependencies":[]},{"name":"permission_handler_html","dependencies":[]},{"name":"permission_handler_windows","dependencies":[]},{"name":"screen_brightness","dependencies":["screen_brightness_android","screen_brightness_ios","screen_brightness_macos","screen_brightness_windows"]},{"name":"screen_brightness_android","dependencies":[]},{"name":"screen_brightness_ios","dependencies":[]},{"name":"screen_brightness_macos","dependencies":[]},{"name":"screen_brightness_windows","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]},{"name":"sqflite","dependencies":[]},{"name":"url_launcher","dependencies":["url_launcher_android","url_launcher_ios","url_launcher_linux","url_launcher_macos","url_launcher_web","url_launcher_windows"]},{"name":"url_launcher_android","dependencies":[]},{"name":"url_launcher_ios","dependencies":[]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_web","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]},{"name":"video_thumbnail","dependencies":[]},{"name":"volume_controller","dependencies":[]},{"name":"wakelock_plus","dependencies":["package_info_plus"]}],"date_created":"2025-06-05 11:00:20.636641","version":"3.27.1","swift_package_manager_enabled":false} \ No newline at end of file diff --git a/lib/packages/core/lib/src/views/chatroom/chatroom.dart b/lib/packages/core/lib/src/views/chatroom/chatroom.dart index f741bda6..c8c7cc5c 100644 --- a/lib/packages/core/lib/src/views/chatroom/chatroom.dart +++ b/lib/packages/core/lib/src/views/chatroom/chatroom.dart @@ -77,6 +77,7 @@ class _LMChatroomScreenState extends State { final MemberStateResponse? getMemberState = LMChatLocalPreference.instance.getMemberRights(); final _webConfiguration = LMChatCore.config.webConfiguration; + late Size size; bool isAnyMessageSelected() { return _selectedIds.isNotEmpty; @@ -132,6 +133,7 @@ class _LMChatroomScreenState extends State { _convActionBloc = LMChatConversationActionBloc.instance; ScreenSize.init(context, setWidth: kIsWeb ? _webConfiguration.maxWidth : null); + size = MediaQuery.sizeOf(context); super.didChangeDependencies(); } @@ -401,7 +403,7 @@ class _LMChatroomScreenState extends State { return LMChatAppBar( style: LMChatAppBarStyle( height: 72, - gap: 2.6.w, + gap: size.width * 0.026, backgroundColor: LMChatTheme.theme.container, padding: const EdgeInsets.symmetric(horizontal: 18), ), @@ -752,7 +754,7 @@ class _LMChatroomScreenState extends State { menuBuilder: () => ClipRRect( borderRadius: BorderRadius.circular(8), child: Container( - width: 60.w, + width: size.width * 0.6, color: LMChatTheme.theme.container, child: LMChatText( "Report Message", @@ -763,7 +765,7 @@ class _LMChatroomScreenState extends State { style: LMChatTextStyle( maxLines: 1, padding: EdgeInsets.symmetric( - horizontal: 6.w, + horizontal: size.width * 0.06, vertical: 2.h, ), textStyle: TextStyle( diff --git a/lib/packages/core/lib/src/views/community_chat/community_chat.dart b/lib/packages/core/lib/src/views/community_chat/community_chat.dart index 2061aa5c..4bb6bbe0 100644 --- a/lib/packages/core/lib/src/views/community_chat/community_chat.dart +++ b/lib/packages/core/lib/src/views/community_chat/community_chat.dart @@ -58,6 +58,7 @@ class _LMCommunityChatScreenState extends State LMCommunityChatListStyle.basic(LMChatTheme.theme.scaffold); String get _tag => widget.chatroomTag ?? _homeScreenSettings.tag ?? ''; + late Size size; @override void initState() { @@ -78,6 +79,7 @@ class _LMCommunityChatScreenState extends State @override didChangeDependencies() { super.didChangeDependencies(); + size = MediaQuery.sizeOf(context); } @override @@ -187,11 +189,11 @@ class _LMCommunityChatScreenState extends State }, style: LMChatTileStyle.basic().copyWith( margin: EdgeInsets.only( - top: 2.h, - bottom: 2.h, + top: size.height * 0.02, + bottom: size.height * 0.02, ), - padding: EdgeInsets.symmetric(horizontal: 6.w), - height: 4.5.h, + padding: EdgeInsets.symmetric(horizontal: size.width * 0.06), + height: size.height * 0.045, ), leading: LMChatIcon( type: LMChatIconType.svg, @@ -204,7 +206,7 @@ class _LMCommunityChatScreenState extends State ), title: Padding( padding: EdgeInsets.only( - left: 4.w, + left: size.width * 0.04, right: 4, ), child: LMChatText( @@ -250,8 +252,8 @@ class _LMCommunityChatScreenState extends State backgroundColor: LMChatTheme.theme.primaryColor, padding: EdgeInsets.zero, labelPadding: EdgeInsets.only( - left: 2.w, - right: 2.w, + left: size.width * 0.02, + right: size.width * 0.02, ), side: BorderSide.none, ), diff --git a/lib/packages/core/lib/src/views/explore/explore.dart b/lib/packages/core/lib/src/views/explore/explore.dart index af6bd5bf..cf067619 100644 --- a/lib/packages/core/lib/src/views/explore/explore.dart +++ b/lib/packages/core/lib/src/views/explore/explore.dart @@ -33,6 +33,7 @@ class LMChatExplorePage extends StatefulWidget { } class _LMChatExplorePageState extends State { + late Size size; final LMChatExploreBloc exploreBloc = LMChatExploreBloc.instance; LMChatSpace _space = LMChatSpace.newest; @@ -59,7 +60,7 @@ class _LMChatExplorePageState extends State { size: 28, color: LMChatTheme.theme.onContainer, ), - menuBoxWidth: 52.w, + menuBoxWidth: 400, menuBoxDecoration: BoxDecoration( color: LMChatTheme.theme.container, borderRadius: BorderRadius.circular(10), @@ -82,6 +83,12 @@ class _LMChatExplorePageState extends State { _addPaginationListener(); } + @override + void didChangeDependencies() { + super.didChangeDependencies(); + size = MediaQuery.sizeOf(context); + } + @override void dispose() { exploreBloc.close(); @@ -101,10 +108,10 @@ class _LMChatExplorePageState extends State { builder: (context, _, child) { return _screenBuilder.scaffold( backgroundColor: LMChatTheme.theme.scaffold, - appBar: - _screenBuilder.appBarBuilder(context, _defaultExploreAppBar()), + appBar: _screenBuilder.appBarBuilder( + context, _defaultExploreAppBar()), body: Padding( - padding: EdgeInsets.symmetric(horizontal: 2.w), + padding: EdgeInsets.symmetric(horizontal: size.width * 0.02), child: _defaultExploreBody(), ), ); @@ -118,7 +125,7 @@ class _LMChatExplorePageState extends State { children: [ kVerticalPaddingSmall, Padding( - padding: EdgeInsets.symmetric(horizontal: 2.w), + padding: EdgeInsets.symmetric(horizontal: size.width * 0.02), child: Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ @@ -139,7 +146,7 @@ class _LMChatExplorePageState extends State { Expanded( child: _defaultExploreBlocConsumer(), ), - SizedBox(height: 2.h), + SizedBox(height: size.height * 0.02), ], ); } @@ -161,8 +168,8 @@ class _LMChatExplorePageState extends State { return LMChatAppBar( style: LMChatTheme.theme.appBarStyle.copyWith( height: 76, - gap: 4.w, - padding: EdgeInsets.all(4.w), + gap: size.width * 0.04, + padding: EdgeInsets.all(size.width * 0.04), ), title: LMChatText( 'Explore Chatrooms', @@ -214,7 +221,7 @@ class _LMChatExplorePageState extends State { Container _defaultExploreMenuBox() { return Container( - width: _popUpMenuStyle().menuBoxWidth ?? 52.w, + width: _popUpMenuStyle().menuBoxWidth ?? size.width * 0.52, height: _popUpMenuStyle().menuBoxHeight, decoration: _popUpMenuStyle().menuBoxDecoration ?? BoxDecoration( @@ -336,8 +343,8 @@ class _LMChatExplorePageState extends State { style: LMChatTheme.theme.chatTileStyle.copyWith( gap: 6, padding: EdgeInsets.symmetric( - horizontal: 4.w, - vertical: 1.h, + horizontal: size.width * 0.04, + vertical: size.height * 0.01, ), ), chatroom: item.toChatRoomViewData(), diff --git a/lib/packages/core/lib/src/views/media/media_forwarding.dart b/lib/packages/core/lib/src/views/media/media_forwarding.dart index 6311881e..175951df 100644 --- a/lib/packages/core/lib/src/views/media/media_forwarding.dart +++ b/lib/packages/core/lib/src/views/media/media_forwarding.dart @@ -62,6 +62,8 @@ class _LMChatMediaForwardingScreenState final _themeData = LMChatTheme.theme; final _webConfiguration = LMChatCore.config.webConfiguration; + late Size size; + @override void initState() { super.initState(); @@ -71,6 +73,12 @@ class _LMChatMediaForwardingScreenState mediaList = LMChatMediaHandler.instance.pickedMedia; } + @override + void didChangeDependencies() { + super.didChangeDependencies(); + size = MediaQuery.sizeOf(context); + } + @override void didUpdateWidget(covariant LMChatMediaForwardingScreen oldWidget) { super.didUpdateWidget(oldWidget); @@ -154,7 +162,7 @@ class _LMChatMediaForwardingScreenState child: mediaList[currPosition].mediaType == LMChatMediaType.image ? _screenBuilder.image(context, _defImage()) : Padding( - padding: EdgeInsets.symmetric(vertical: 2.h), + padding: EdgeInsets.symmetric(vertical: size.height * 0.02), child: _screenBuilder.video(context, _defVideo()), ), ); @@ -180,11 +188,11 @@ class _LMChatMediaForwardingScreenState ), ), padding: EdgeInsets.symmetric( - vertical: 2.h, - horizontal: 2.w, + vertical: size.height * 0.02, + horizontal: size.width * 0.02, ), child: SizedBox( - height: 15.w, + height: size.width * 0.15, child: _defPreviewList(), ), ); @@ -195,10 +203,10 @@ class _LMChatMediaForwardingScreenState color: _themeData.backgroundColor, child: Padding( padding: EdgeInsets.only( - bottom: 2.h, - left: 2.w, - right: 2.w, - top: 1.5.h, + bottom: size.height * 0.02, + left: size.width * 0.02, + right: size.width * 0.02, + top: size.height * 0.015, ), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, @@ -227,10 +235,10 @@ class _LMChatMediaForwardingScreenState _defReplyConversationWidget(), ), Container( - width: 80.w, + width: size.width * 0.80, constraints: BoxConstraints( - minHeight: 5.2.h, - maxHeight: 24.h, + minHeight: size.height * 0.052, + maxHeight: size.height * 0.24, ), child: _screenBuilder.chatroomTextField( context, @@ -327,9 +335,9 @@ class _LMChatMediaForwardingScreenState ), ), style: LMChatButtonStyle( - height: 4.h, + height: size.height * 0.04, margin: EdgeInsets.symmetric( - horizontal: 2.w, + horizontal: size.width * 0.02, ), backgroundColor: Colors.transparent, ), @@ -390,7 +398,7 @@ class _LMChatMediaForwardingScreenState backgroundColor: LMChatTheme.isThemeDark ? LMChatTheme.theme.container.withOpacity(0.5) : LMChatTheme.theme.onContainer.withOpacity(0.5), - padding: EdgeInsets.symmetric(horizontal: 4.w), + padding: EdgeInsets.symmetric(horizontal: size.width * 0.04), ), leading: LMChatButton( onTap: () { @@ -449,7 +457,7 @@ class _LMChatMediaForwardingScreenState media: mediaList.first, autoplay: true, style: LMChatGIFStyle( - width: 100.w, + width: size.width * 1.00, ), ); @@ -479,8 +487,8 @@ class _LMChatMediaForwardingScreenState strokeAlign: BorderSide.strokeAlignOutside, ) : null), - width: 15.w, - height: 15.w, + width: size.width * 0.15, + height: size.width * 0.15, child: mediaList[index].mediaType == LMChatMediaType.image ? _defImageThumbnail(index) : mediaList[index].mediaType == LMChatMediaType.video @@ -551,7 +559,7 @@ class _LMChatMediaForwardingScreenState return LMChatDocumentPreview( media: mediaList[currPosition], style: LMChatDocumentPreviewStyle( - maxHeight: 50.h, + maxHeight: size.height * 0.50, ), ); } @@ -560,8 +568,8 @@ class _LMChatMediaForwardingScreenState return LMChatDocumentThumbnail( media: mediaList[index], style: LMChatDocumentThumbnailStyle( - height: 15.w, - width: 15.w, + height: size.width * 0.15, + width: size.width * 0.15, ), ); } @@ -580,7 +588,7 @@ class _LMChatMediaForwardingScreenState imageFile: mediaList[index].thumbnailFile!, style: LMChatImageStyle( boxFit: BoxFit.cover, - width: 15.w, + width: size.width * 0.15, ), ), ) diff --git a/lib/packages/core/lib/src/views/media/media_preview.dart b/lib/packages/core/lib/src/views/media/media_preview.dart index ae29f16c..2c9f6031 100644 --- a/lib/packages/core/lib/src/views/media/media_preview.dart +++ b/lib/packages/core/lib/src/views/media/media_preview.dart @@ -40,6 +40,7 @@ class _LMChatMediaPreviewScreenState extends State { late ValueNotifier _currentPosition; List mediaList = []; late CarouselSliderController _carouselController; + late Size size; final LMChatMediaPreviewBuilderDelegate _screenBuilder = LMChatCore.config.mediaPreviewConfig.builder; @@ -70,6 +71,12 @@ class _LMChatMediaPreviewScreenState extends State { super.deactivate(); } + @override + void didChangeDependencies() { + super.didChangeDependencies(); + size = MediaQuery.sizeOf(context); + } + @override Widget build(BuildContext context) { return Center( @@ -129,7 +136,7 @@ class _LMChatMediaPreviewScreenState extends State { backgroundColor: LMChatTheme.isThemeDark ? LMChatTheme.theme.container.withOpacity(0.5) : LMChatTheme.theme.onContainer.withOpacity(0.5), - padding: EdgeInsets.symmetric(horizontal: 4.w), + padding: EdgeInsets.symmetric(horizontal: size.width * 0.04), ), leading: LMChatButton( onTap: () { @@ -217,7 +224,7 @@ class _LMChatMediaPreviewScreenState extends State { carouselController: _carouselController, itemCount: mediaList.length, options: CarouselOptions( - height: 90.h, + height: size.height * 0.90, viewportFraction: 1.0, enlargeCenterPage: false, animateToClosest: false, @@ -233,7 +240,7 @@ class _LMChatMediaPreviewScreenState extends State { ? LMChatTheme.theme.container : LMChatTheme.theme.onContainer, child: Padding( - padding: EdgeInsets.symmetric(vertical: 2.h), + padding: EdgeInsets.symmetric(vertical: size.height * 0.02), child: Center( child: media.mediaType == LMChatMediaType.image ? _screenBuilder.image( @@ -265,13 +272,13 @@ class _LMChatMediaPreviewScreenState extends State { ), )), padding: EdgeInsets.only( - left: 2.w, + left: size.width * 0.02, right: 5.0, - top: 2.h, - bottom: 4.h, + top: size.height * 0.02, + bottom: size.height * 0.04, ), child: SizedBox( - height: 15.w, + height: size.width * 0.15, child: _defPreviewList(), ), ); @@ -306,8 +313,8 @@ class _LMChatMediaPreviewScreenState extends State { ) : null, ), - width: 15.w, - height: 15.w, + width: size.width * 0.15, + height: size.width * 0.15, child: mediaList[index].mediaType == LMChatMediaType.image ? _buildThumbnailImage(mediaList[index]) : _buildThumbnailVideo(mediaList[index]), @@ -337,7 +344,7 @@ class _LMChatMediaPreviewScreenState extends State { style: LMChatImageStyle( boxFit: BoxFit.cover, borderRadius: BorderRadius.circular(8.0), - width: 100.w, + width: size.width * 1.00, ), ); } diff --git a/lib/packages/core/lib/src/views/participants/participants.dart b/lib/packages/core/lib/src/views/participants/participants.dart index 8322e6a5..9f14940c 100644 --- a/lib/packages/core/lib/src/views/participants/participants.dart +++ b/lib/packages/core/lib/src/views/participants/participants.dart @@ -38,6 +38,7 @@ class _LMChatroomParticipantsPageState final LMChatParticipantBuilderDelegate _screenBuilder = LMChatCore.config.participantConfig.builder; final _webConfiguration = LMChatCore.config.webConfiguration; + late Size size; @override void initState() { @@ -45,6 +46,12 @@ class _LMChatroomParticipantsPageState _addPaginationListener(); } + @override + void didChangeDependencies() { + super.didChangeDependencies(); + size = MediaQuery.sizeOf(context); + } + @override void dispose() { focusNode.dispose(); @@ -127,14 +134,14 @@ class _LMChatroomParticipantsPageState height: 72, gap: 4, backgroundColor: LMChatTheme.theme.container, - padding: EdgeInsets.symmetric(horizontal: 4.w), + padding: EdgeInsets.symmetric(horizontal: size.width * 0.04), ), title: ValueListenableBuilder( valueListenable: _showSearchBarTextField, builder: (context, value, __) { return Padding( padding: EdgeInsets.symmetric( - horizontal: 4.w, + horizontal: size.width * 0.04, ), child: _showSearchBarTextField.value ? TextField( diff --git a/lib/packages/core/lib/src/views/poll/create_poll.dart b/lib/packages/core/lib/src/views/poll/create_poll.dart index 79e546e6..ba00ad68 100644 --- a/lib/packages/core/lib/src/views/poll/create_poll.dart +++ b/lib/packages/core/lib/src/views/poll/create_poll.dart @@ -276,8 +276,12 @@ class _LMChatCreatePollScreenState extends State { builder: (context, _, child) { return _screenBuilder.scaffold( backgroundColor: theme.container, - appBar: _screenBuilder.appBarBuilder(context, _defAppBar(context), - _isValidatedController, validatePoll, onPollSubmit), + appBar: _screenBuilder.appBarBuilder( + context, + _defAppBar(context), + _isValidatedController, + validatePoll, + onPollSubmit), body: SingleChildScrollView( child: Column( children: [ @@ -425,7 +429,8 @@ class _LMChatCreatePollScreenState extends State { ), decoration: InputDecoration( constraints: BoxConstraints( - minWidth: 40.w, maxWidth: 40.w), + minWidth: screenSize.width * .40, + maxWidth: screenSize.width * .40), ), items: [ DropdownMenuItem( @@ -469,7 +474,8 @@ class _LMChatCreatePollScreenState extends State { value: value, decoration: InputDecoration( constraints: BoxConstraints( - minWidth: 40.w, maxWidth: 40.w), + minWidth: screenSize.width * .40, + maxWidth: screenSize.width * .40), ), items: [ // create dropdown items based on current options length min 1 and max options.length diff --git a/lib/packages/core/lib/src/views/poll/poll_result.dart b/lib/packages/core/lib/src/views/poll/poll_result.dart index 458209a6..e29463e3 100644 --- a/lib/packages/core/lib/src/views/poll/poll_result.dart +++ b/lib/packages/core/lib/src/views/poll/poll_result.dart @@ -48,6 +48,7 @@ class _LMChatPollResultScreenState extends State final LMChatPollResultBuilderDelegate _screenBuilder = LMChatCore.config.pollConfig.pollResultBuilder; final _webConfiguration = LMChatCore.config.webConfiguration; + late double width; @override initState() { @@ -79,6 +80,12 @@ class _LMChatPollResultScreenState extends State } } + @override + void didChangeDependencies() { + super.didChangeDependencies(); + width = MediaQuery.sizeOf(context).width; + } + @override void dispose() { _tabController.dispose(); @@ -189,7 +196,7 @@ class _LMChatPollResultScreenState extends State centerTitle: true, height: 72, padding: const EdgeInsets.symmetric(horizontal: 18), - gap: 3.w, + gap: width * 0.03, backgroundColor: theme.container, border: Border.all( color: Colors.transparent, diff --git a/lib/packages/core/lib/src/widgets/chatroom/chatroom_bar.dart b/lib/packages/core/lib/src/widgets/chatroom/chatroom_bar.dart index 3b815f63..0fdc2cee 100644 --- a/lib/packages/core/lib/src/widgets/chatroom/chatroom_bar.dart +++ b/lib/packages/core/lib/src/widgets/chatroom/chatroom_bar.dart @@ -156,6 +156,7 @@ class _LMChatroomBarState extends State late final Animation _binScaleAnimation; late final Animation _binFadeAnimation; late final Animation _micFadeAnimation; + late Size size; // Add this near other state variables in _LMChatroomBarState StreamSubscription? _audioStateSubscription; @@ -365,6 +366,12 @@ class _LMChatroomBarState extends State } } + @override + void didChangeDependencies() { + super.didChangeDependencies(); + size = MediaQuery.sizeOf(context); + } + @override void dispose() { // Clean up recording related resources @@ -455,7 +462,7 @@ class _LMChatroomBarState extends State Container _defDisabledTextContainer(LMChatroomRequestState state) { return Container( - width: 90.w, + width: size.width * 0.9, constraints: BoxConstraints( minHeight: 4.h, ), @@ -724,10 +731,10 @@ class _LMChatroomBarState extends State return Container( width: double.infinity, padding: EdgeInsets.only( - left: 2.w, - right: 2.w, - top: 1.5.h, - bottom: (isOtherUserAIChatbot(chatroom!)) ? 0 : 1.5.h, + left: size.width * 0.02, + right: size.width * 0.02, + top: size.width * 0.015, + bottom: (isOtherUserAIChatbot(chatroom!)) ? 0 : size.width * 0.015, ), child: Row( mainAxisAlignment: MainAxisAlignment.spaceAround, @@ -898,7 +905,7 @@ class _LMChatroomBarState extends State _defLinkPreview(linkModel!.ogTags!), ), Container( - width: 80.w, + width: size.width * 0.8, constraints: BoxConstraints( minHeight: 5.2.h, maxHeight: 24.h, @@ -917,7 +924,7 @@ class _LMChatroomBarState extends State // Widget functions for the default widgets of LMChatroomBar Widget _defDisabledTextField(BuildContext context) { return Container( - width: 90.w, + width: size.width * 0.9, constraints: BoxConstraints( minHeight: 4.h, maxHeight: 6.h, @@ -1053,7 +1060,7 @@ class _LMChatroomBarState extends State clipBehavior: Clip.none, children: [ Container( - width: 80.w, + width: size.width * 0.8, height: 6.2.h, decoration: BoxDecoration( color: _themeData.container, @@ -1252,8 +1259,8 @@ class _LMChatroomBarState extends State Widget _buildReviewContainer(BuildContext context) { return Container( - width: 80.w, - height: 6.2.h, + width: size.width * 0.8, + height: size.height * 0.062, padding: const EdgeInsets.symmetric(horizontal: 12), decoration: BoxDecoration( color: _themeData.container, diff --git a/lib/packages/core/lib/src/widgets/chatroom/chatroom_bar_header.dart b/lib/packages/core/lib/src/widgets/chatroom/chatroom_bar_header.dart index c132d1cc..3033625b 100644 --- a/lib/packages/core/lib/src/widgets/chatroom/chatroom_bar_header.dart +++ b/lib/packages/core/lib/src/widgets/chatroom/chatroom_bar_header.dart @@ -76,10 +76,11 @@ class LMChatBarHeader extends StatelessWidget { @override Widget build(BuildContext context) { final LMChatThemeData themeData = LMChatTheme.theme; + final Size size = MediaQuery.sizeOf(context); return Container( - height: style?.height ?? 8.h, - width: style?.width ?? 80.w, + height: style?.height ?? size.height * 0.08, + width: style?.width ?? size.width * 0.80, padding: style?.padding ?? const EdgeInsets.all(8), decoration: style?.decoration ?? BoxDecoration( @@ -100,7 +101,7 @@ class LMChatBarHeader extends StatelessWidget { child: Row( children: [ Container( - width: 1.w, + width: size.width * 0.01, color: LMChatTheme.instance.themeData.primaryColor, padding: const EdgeInsets.all(4), ), @@ -115,8 +116,8 @@ class LMChatBarHeader extends StatelessWidget { _defTitleBuilder(themeData), kVerticalPaddingSmall, SizedBox( - width: 55.w, - height: 2.h, + width: size.width * 0.55, + height: size.height * 0.02, child: subtitle, ), ], @@ -194,9 +195,10 @@ class LMChatBarHeaderStyle { /// A basic style for the chat bar header. factory LMChatBarHeaderStyle.basic() { + final Size size = MediaQueryData.fromWindow(WidgetsBinding.instance.window).size; return LMChatBarHeaderStyle( - height: 8.h, - width: 80.w, + height: 0.08 * size.height, + width: 0.80 * size.width, padding: const EdgeInsets.all(8), decoration: BoxDecoration( color: LMChatTheme.theme.container, diff --git a/lib/packages/core/lib/src/widgets/chatroom/chatroom_menu.dart b/lib/packages/core/lib/src/widgets/chatroom/chatroom_menu.dart index 9f2eb7f0..a187cbdf 100644 --- a/lib/packages/core/lib/src/widgets/chatroom/chatroom_menu.dart +++ b/lib/packages/core/lib/src/widgets/chatroom/chatroom_menu.dart @@ -66,6 +66,7 @@ class _ChatroomMenuState extends State { @override Widget build(BuildContext context) { + final width = MediaQuery.sizeOf(context).width; return CustomPopupMenu( pressType: PressType.singleClick, showArrow: false, @@ -77,8 +78,8 @@ class _ChatroomMenuState extends State { width: widget.style?.menuBoxWidth, height: widget.style?.menuBoxHeight, constraints: BoxConstraints( - minWidth: 12.w, - maxWidth: 60.w, + minWidth: width * 0.12, + maxWidth: width * 0.60, ), decoration: widget.style?.menuBoxDecoration ?? BoxDecoration( diff --git a/lib/packages/core/lib/src/widgets/text_field/text_field.dart b/lib/packages/core/lib/src/widgets/text_field/text_field.dart index db2726d3..40e75ec6 100644 --- a/lib/packages/core/lib/src/widgets/text_field/text_field.dart +++ b/lib/packages/core/lib/src/widgets/text_field/text_field.dart @@ -115,6 +115,7 @@ class _LMChatTextFieldState extends State { String _tagValue = ""; static const int _fixedSize = 50; late LMChatTextFieldStyle effectiveStyle; + late Size size; @override void initState() { @@ -243,6 +244,12 @@ class _LMChatTextFieldState extends State { return '$_textValue$prefix$tagPrefix${suggestion.name}~'; } + @override + void didChangeDependencies() { + super.didChangeDependencies(); + size = MediaQuery.sizeOf(context); + } + @override Widget build(BuildContext context) { return Padding( @@ -285,7 +292,7 @@ class _LMChatTextFieldState extends State { SuggestionsBoxDecoration _buildSuggestionsBoxDecoration() { return SuggestionsBoxDecoration( - offsetX: -4.w, + offsetX: -(size.width * 0.04), elevation: effectiveStyle.suggestionsBoxElevation ?? 2, color: effectiveStyle.suggestionsBoxColor ?? LMChatTheme.theme.container, clipBehavior: Clip.hardEdge, @@ -293,7 +300,8 @@ class _LMChatTextFieldState extends State { const BorderRadius.all(Radius.circular(12.0)), hasScrollbar: false, constraints: effectiveStyle.suggestionsBoxConstraints ?? - BoxConstraints(maxHeight: 24.h, minWidth: 80.w), + BoxConstraints( + maxHeight: size.height * 0.24, minWidth: size.width * 0.8), ); } diff --git a/lib/packages/ui/.flutter-plugins b/lib/packages/ui/.flutter-plugins index 82277fbf..e3e21965 100644 --- a/lib/packages/ui/.flutter-plugins +++ b/lib/packages/ui/.flutter-plugins @@ -1,49 +1,47 @@ # This is a generated file; do not edit or check into version control. -emoji_picker_flutter=/Users/likeminds/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/ -flutter_sound=/Users/likeminds/.pub-cache/hosted/pub.dev/flutter_sound-9.27.0/ -flutter_sound_web=/Users/likeminds/.pub-cache/hosted/pub.dev/flutter_sound_web-9.27.0/ -media_kit_libs_android_video=/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_libs_android_video-1.3.6/ -media_kit_libs_ios_video=/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_libs_ios_video-1.1.4/ -media_kit_libs_linux=/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_libs_linux-1.1.3/ -media_kit_libs_macos_video=/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_libs_macos_video-1.1.4/ -media_kit_libs_windows_video=/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_libs_windows_video-1.0.10/ -media_kit_native_event_loop=/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_native_event_loop-1.0.9/ -media_kit_video=/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/ -open_file=/Users/likeminds/.pub-cache/hosted/pub.dev/open_file-3.5.10/ -open_file_android=/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_android-1.0.6/ -open_file_ios=/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_ios-1.0.3/ -open_file_linux=/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_linux-0.0.5/ -open_file_mac=/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_mac-1.0.3/ -open_file_web=/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_web-0.0.4/ -open_file_windows=/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_windows-0.0.3/ -package_info_plus=/Users/likeminds/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/ -path_provider=/Users/likeminds/.pub-cache/hosted/pub.dev/path_provider-2.1.5/ -path_provider_android=/Users/likeminds/.pub-cache/hosted/pub.dev/path_provider_android-2.2.16/ -path_provider_foundation=/Users/likeminds/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.1/ -path_provider_linux=/Users/likeminds/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/ -path_provider_windows=/Users/likeminds/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0/ -pdf_render=/Users/likeminds/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/ -screen_brightness=/Users/likeminds/.pub-cache/hosted/pub.dev/screen_brightness-0.2.2+1/ -screen_brightness_android=/Users/likeminds/.pub-cache/hosted/pub.dev/screen_brightness_android-0.1.0+2/ -screen_brightness_ios=/Users/likeminds/.pub-cache/hosted/pub.dev/screen_brightness_ios-0.1.0/ -screen_brightness_macos=/Users/likeminds/.pub-cache/hosted/pub.dev/screen_brightness_macos-0.1.0+1/ -screen_brightness_windows=/Users/likeminds/.pub-cache/hosted/pub.dev/screen_brightness_windows-0.1.3/ -shared_preferences=/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences-2.5.2/ -shared_preferences_android=/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences_android-2.4.8/ -shared_preferences_foundation=/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.4/ -shared_preferences_linux=/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences_linux-2.4.1/ -shared_preferences_web=/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences_web-2.4.3/ -shared_preferences_windows=/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.4.1/ -sqflite=/Users/likeminds/.pub-cache/hosted/pub.dev/sqflite-2.4.2/ -sqflite_android=/Users/likeminds/.pub-cache/hosted/pub.dev/sqflite_android-2.4.1/ -sqflite_darwin=/Users/likeminds/.pub-cache/hosted/pub.dev/sqflite_darwin-2.4.2/ -url_launcher=/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher-6.3.1/ -url_launcher_android=/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_android-6.3.15/ -url_launcher_ios=/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_ios-6.3.2/ -url_launcher_linux=/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_linux-3.2.1/ -url_launcher_macos=/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_macos-3.2.2/ -url_launcher_web=/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_web-2.4.0/ -url_launcher_windows=/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_windows-3.1.4/ -video_thumbnail=/Users/likeminds/.pub-cache/hosted/pub.dev/video_thumbnail-0.5.3/ -volume_controller=/Users/likeminds/.pub-cache/hosted/pub.dev/volume_controller-2.0.8/ -wakelock_plus=/Users/likeminds/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.10/ +emoji_picker_flutter=/Users/anujkumar/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/ +flutter_sound=/Users/anujkumar/.pub-cache/hosted/pub.dev/flutter_sound-9.17.0/ +flutter_sound_web=/Users/anujkumar/.pub-cache/hosted/pub.dev/flutter_sound_web-9.17.0/ +media_kit_libs_android_video=/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_libs_android_video-1.3.6/ +media_kit_libs_ios_video=/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_libs_ios_video-1.1.4/ +media_kit_libs_linux=/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_libs_linux-1.1.3/ +media_kit_libs_macos_video=/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_libs_macos_video-1.1.4/ +media_kit_libs_windows_video=/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_libs_windows_video-1.0.10/ +media_kit_native_event_loop=/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_native_event_loop-1.0.9/ +media_kit_video=/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/ +open_file=/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file-3.5.10/ +open_file_android=/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_android-1.0.6/ +open_file_ios=/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_ios-1.0.3/ +open_file_linux=/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_linux-0.0.5/ +open_file_mac=/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_mac-1.0.3/ +open_file_web=/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_web-0.0.4/ +open_file_windows=/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_windows-0.0.3/ +package_info_plus=/Users/anujkumar/.pub-cache/hosted/pub.dev/package_info_plus-8.0.2/ +path_provider=/Users/anujkumar/.pub-cache/hosted/pub.dev/path_provider-2.1.4/ +path_provider_android=/Users/anujkumar/.pub-cache/hosted/pub.dev/path_provider_android-2.2.4/ +path_provider_foundation=/Users/anujkumar/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.0/ +path_provider_linux=/Users/anujkumar/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/ +path_provider_windows=/Users/anujkumar/.pub-cache/hosted/pub.dev/path_provider_windows-2.2.1/ +pdf_render=/Users/anujkumar/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/ +screen_brightness=/Users/anujkumar/.pub-cache/hosted/pub.dev/screen_brightness-0.2.2+1/ +screen_brightness_android=/Users/anujkumar/.pub-cache/hosted/pub.dev/screen_brightness_android-0.1.0+2/ +screen_brightness_ios=/Users/anujkumar/.pub-cache/hosted/pub.dev/screen_brightness_ios-0.1.0/ +screen_brightness_macos=/Users/anujkumar/.pub-cache/hosted/pub.dev/screen_brightness_macos-0.1.0+1/ +screen_brightness_windows=/Users/anujkumar/.pub-cache/hosted/pub.dev/screen_brightness_windows-0.1.3/ +shared_preferences=/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences-2.3.2/ +shared_preferences_android=/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences_android-2.3.3/ +shared_preferences_foundation=/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.3/ +shared_preferences_linux=/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences_linux-2.4.1/ +shared_preferences_web=/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences_web-2.4.2/ +shared_preferences_windows=/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.4.1/ +sqflite=/Users/anujkumar/.pub-cache/hosted/pub.dev/sqflite-2.3.3+1/ +url_launcher=/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher-6.3.1/ +url_launcher_android=/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_android-6.3.2/ +url_launcher_ios=/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_ios-6.3.0/ +url_launcher_linux=/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_linux-3.1.1/ +url_launcher_macos=/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_macos-3.2.0/ +url_launcher_web=/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_web-2.3.3/ +url_launcher_windows=/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_windows-3.1.1/ +video_thumbnail=/Users/anujkumar/.pub-cache/hosted/pub.dev/video_thumbnail-0.5.3/ +volume_controller=/Users/anujkumar/.pub-cache/hosted/pub.dev/volume_controller-2.0.7/ +wakelock_plus=/Users/anujkumar/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.8/ diff --git a/lib/packages/ui/.flutter-plugins-dependencies b/lib/packages/ui/.flutter-plugins-dependencies index 1ca02f00..52d653a6 100644 --- a/lib/packages/ui/.flutter-plugins-dependencies +++ b/lib/packages/ui/.flutter-plugins-dependencies @@ -1 +1 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"emoji_picker_flutter","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"flutter_sound","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/flutter_sound-9.27.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_libs_ios_video","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_libs_ios_video-1.1.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_native_event_loop","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_native_event_loop-1.0.9/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_video","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/","native_build":true,"dependencies":["wakelock_plus","volume_controller"],"dev_dependency":false},{"name":"open_file_ios","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_ios-1.0.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_foundation","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.1/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"pdf_render","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"screen_brightness_ios","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/screen_brightness_ios-0.1.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_foundation","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.4/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"sqflite_darwin","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/sqflite_darwin-2.4.2/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_ios","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_ios-6.3.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"video_thumbnail","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/video_thumbnail-0.5.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"volume_controller","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/volume_controller-2.0.8/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"wakelock_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.10/","native_build":true,"dependencies":["package_info_plus"],"dev_dependency":false}],"android":[{"name":"emoji_picker_flutter","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"flutter_sound","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/flutter_sound-9.27.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_libs_android_video","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_libs_android_video-1.3.6/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_video","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/","native_build":true,"dependencies":["wakelock_plus","volume_controller"],"dev_dependency":false},{"name":"open_file_android","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_android-1.0.6/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_android","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/path_provider_android-2.2.16/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"pdf_render","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"screen_brightness_android","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/screen_brightness_android-0.1.0+2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_android","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences_android-2.4.8/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"sqflite_android","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/sqflite_android-2.4.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_android","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_android-6.3.15/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"video_thumbnail","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/video_thumbnail-0.5.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"volume_controller","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/volume_controller-2.0.8/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"wakelock_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.10/","native_build":true,"dependencies":["package_info_plus"],"dev_dependency":false}],"macos":[{"name":"emoji_picker_flutter","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_libs_macos_video","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_libs_macos_video-1.1.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_native_event_loop","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_native_event_loop-1.0.9/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_video","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/","native_build":true,"dependencies":["wakelock_plus"],"dev_dependency":false},{"name":"open_file_mac","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_mac-1.0.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_foundation","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.1/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"pdf_render","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"screen_brightness_macos","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/screen_brightness_macos-0.1.0+1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_foundation","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.4/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"sqflite_darwin","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/sqflite_darwin-2.4.2/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_macos","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_macos-3.2.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"wakelock_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.10/","native_build":true,"dependencies":["package_info_plus"],"dev_dependency":false}],"linux":[{"name":"emoji_picker_flutter","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_libs_linux","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_libs_linux-1.1.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_native_event_loop","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_native_event_loop-1.0.9/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_video","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/","native_build":true,"dependencies":["wakelock_plus"],"dev_dependency":false},{"name":"open_file_linux","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_linux-0.0.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"path_provider_linux","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_linux","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences_linux-2.4.1/","native_build":false,"dependencies":["path_provider_linux"],"dev_dependency":false},{"name":"url_launcher_linux","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_linux-3.2.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"wakelock_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.10/","native_build":false,"dependencies":["package_info_plus"],"dev_dependency":false}],"windows":[{"name":"emoji_picker_flutter","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_libs_windows_video","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_libs_windows_video-1.0.10/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_native_event_loop","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_native_event_loop-1.0.9/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"media_kit_video","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/","native_build":true,"dependencies":["wakelock_plus"],"dev_dependency":false},{"name":"open_file_windows","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_windows-0.0.3/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"path_provider_windows","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"screen_brightness_windows","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/screen_brightness_windows-0.1.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_windows","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.4.1/","native_build":false,"dependencies":["path_provider_windows"],"dev_dependency":false},{"name":"url_launcher_windows","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_windows-3.1.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"wakelock_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.10/","native_build":false,"dependencies":["package_info_plus"],"dev_dependency":false}],"web":[{"name":"emoji_picker_flutter","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","dependencies":[],"dev_dependency":false},{"name":"flutter_sound_web","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/flutter_sound_web-9.27.0/","dependencies":[],"dev_dependency":false},{"name":"open_file_web","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/open_file_web-0.0.4/","dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","dependencies":[],"dev_dependency":false},{"name":"pdf_render","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","dependencies":[],"dev_dependency":false},{"name":"shared_preferences_web","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/shared_preferences_web-2.4.3/","dependencies":[],"dev_dependency":false},{"name":"url_launcher_web","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/url_launcher_web-2.4.0/","dependencies":[],"dev_dependency":false},{"name":"wakelock_plus","path":"/Users/likeminds/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.10/","dependencies":["package_info_plus"],"dev_dependency":false}]},"dependencyGraph":[{"name":"emoji_picker_flutter","dependencies":["shared_preferences"]},{"name":"flutter_sound","dependencies":["path_provider","flutter_sound_web"]},{"name":"flutter_sound_web","dependencies":[]},{"name":"media_kit_libs_android_video","dependencies":[]},{"name":"media_kit_libs_ios_video","dependencies":[]},{"name":"media_kit_libs_linux","dependencies":[]},{"name":"media_kit_libs_macos_video","dependencies":[]},{"name":"media_kit_libs_windows_video","dependencies":[]},{"name":"media_kit_native_event_loop","dependencies":[]},{"name":"media_kit_video","dependencies":["wakelock_plus","screen_brightness","volume_controller"]},{"name":"open_file","dependencies":["open_file_android","open_file_web","open_file_ios","open_file_mac","open_file_windows","open_file_linux"]},{"name":"open_file_android","dependencies":[]},{"name":"open_file_ios","dependencies":[]},{"name":"open_file_linux","dependencies":[]},{"name":"open_file_mac","dependencies":[]},{"name":"open_file_web","dependencies":[]},{"name":"open_file_windows","dependencies":[]},{"name":"package_info_plus","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"pdf_render","dependencies":[]},{"name":"screen_brightness","dependencies":["screen_brightness_android","screen_brightness_ios","screen_brightness_macos","screen_brightness_windows"]},{"name":"screen_brightness_android","dependencies":[]},{"name":"screen_brightness_ios","dependencies":[]},{"name":"screen_brightness_macos","dependencies":[]},{"name":"screen_brightness_windows","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]},{"name":"sqflite","dependencies":["sqflite_android","sqflite_darwin"]},{"name":"sqflite_android","dependencies":[]},{"name":"sqflite_darwin","dependencies":[]},{"name":"url_launcher","dependencies":["url_launcher_android","url_launcher_ios","url_launcher_linux","url_launcher_macos","url_launcher_web","url_launcher_windows"]},{"name":"url_launcher_android","dependencies":[]},{"name":"url_launcher_ios","dependencies":[]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_web","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]},{"name":"video_thumbnail","dependencies":[]},{"name":"volume_controller","dependencies":[]},{"name":"wakelock_plus","dependencies":["package_info_plus"]}],"date_created":"2025-03-24 16:26:16.663071","version":"3.29.2","swift_package_manager_enabled":{"ios":false,"macos":false}} \ No newline at end of file +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"emoji_picker_flutter","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","native_build":true,"dependencies":[]},{"name":"flutter_sound","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/flutter_sound-9.17.0/","native_build":true,"dependencies":[]},{"name":"media_kit_libs_ios_video","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_libs_ios_video-1.1.4/","native_build":true,"dependencies":[]},{"name":"media_kit_native_event_loop","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_native_event_loop-1.0.9/","native_build":true,"dependencies":[]},{"name":"media_kit_video","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/","native_build":true,"dependencies":["wakelock_plus","volume_controller"]},{"name":"open_file_ios","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_ios-1.0.3/","native_build":true,"dependencies":[]},{"name":"package_info_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/package_info_plus-8.0.2/","native_build":true,"dependencies":[]},{"name":"path_provider_foundation","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.0/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"pdf_render","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","native_build":true,"dependencies":[]},{"name":"screen_brightness_ios","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/screen_brightness_ios-0.1.0/","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.3/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"sqflite","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/sqflite-2.3.3+1/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"url_launcher_ios","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_ios-6.3.0/","native_build":true,"dependencies":[]},{"name":"video_thumbnail","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/video_thumbnail-0.5.3/","native_build":true,"dependencies":[]},{"name":"volume_controller","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/volume_controller-2.0.7/","native_build":true,"dependencies":[]},{"name":"wakelock_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.8/","native_build":true,"dependencies":["package_info_plus"]}],"android":[{"name":"emoji_picker_flutter","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","native_build":true,"dependencies":[]},{"name":"flutter_sound","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/flutter_sound-9.17.0/","native_build":true,"dependencies":[]},{"name":"media_kit_libs_android_video","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_libs_android_video-1.3.6/","native_build":true,"dependencies":[]},{"name":"media_kit_video","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/","native_build":true,"dependencies":["wakelock_plus","volume_controller"]},{"name":"open_file_android","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_android-1.0.6/","native_build":true,"dependencies":[]},{"name":"package_info_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/package_info_plus-8.0.2/","native_build":true,"dependencies":[]},{"name":"path_provider_android","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/path_provider_android-2.2.4/","native_build":true,"dependencies":[]},{"name":"pdf_render","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","native_build":true,"dependencies":[]},{"name":"screen_brightness_android","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/screen_brightness_android-0.1.0+2/","native_build":true,"dependencies":[]},{"name":"shared_preferences_android","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences_android-2.3.3/","native_build":true,"dependencies":[]},{"name":"sqflite","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/sqflite-2.3.3+1/","native_build":true,"dependencies":[]},{"name":"url_launcher_android","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_android-6.3.2/","native_build":true,"dependencies":[]},{"name":"video_thumbnail","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/video_thumbnail-0.5.3/","native_build":true,"dependencies":[]},{"name":"volume_controller","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/volume_controller-2.0.7/","native_build":true,"dependencies":[]},{"name":"wakelock_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.8/","native_build":true,"dependencies":["package_info_plus"]}],"macos":[{"name":"emoji_picker_flutter","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","native_build":true,"dependencies":[]},{"name":"media_kit_libs_macos_video","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_libs_macos_video-1.1.4/","native_build":true,"dependencies":[]},{"name":"media_kit_native_event_loop","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_native_event_loop-1.0.9/","native_build":true,"dependencies":[]},{"name":"media_kit_video","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/","native_build":true,"dependencies":["wakelock_plus"]},{"name":"open_file_mac","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_mac-1.0.3/","native_build":true,"dependencies":[]},{"name":"package_info_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/package_info_plus-8.0.2/","native_build":true,"dependencies":[]},{"name":"path_provider_foundation","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.0/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"pdf_render","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","native_build":true,"dependencies":[]},{"name":"screen_brightness_macos","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/screen_brightness_macos-0.1.0+1/","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.3/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"sqflite","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/sqflite-2.3.3+1/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"url_launcher_macos","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_macos-3.2.0/","native_build":true,"dependencies":[]},{"name":"wakelock_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.8/","native_build":true,"dependencies":["package_info_plus"]}],"linux":[{"name":"emoji_picker_flutter","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","native_build":true,"dependencies":[]},{"name":"media_kit_libs_linux","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_libs_linux-1.1.3/","native_build":true,"dependencies":[]},{"name":"media_kit_native_event_loop","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_native_event_loop-1.0.9/","native_build":true,"dependencies":[]},{"name":"media_kit_video","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/","native_build":true,"dependencies":["wakelock_plus"]},{"name":"open_file_linux","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_linux-0.0.5/","native_build":true,"dependencies":[]},{"name":"package_info_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/package_info_plus-8.0.2/","native_build":false,"dependencies":[]},{"name":"path_provider_linux","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/","native_build":false,"dependencies":[]},{"name":"shared_preferences_linux","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences_linux-2.4.1/","native_build":false,"dependencies":["path_provider_linux"]},{"name":"url_launcher_linux","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_linux-3.1.1/","native_build":true,"dependencies":[]},{"name":"wakelock_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.8/","native_build":false,"dependencies":["package_info_plus"]}],"windows":[{"name":"emoji_picker_flutter","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","native_build":true,"dependencies":[]},{"name":"media_kit_libs_windows_video","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_libs_windows_video-1.0.10/","native_build":true,"dependencies":[]},{"name":"media_kit_native_event_loop","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_native_event_loop-1.0.9/","native_build":true,"dependencies":[]},{"name":"media_kit_video","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/media_kit_video-1.2.5/","native_build":true,"dependencies":["wakelock_plus"]},{"name":"open_file_windows","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_windows-0.0.3/","native_build":false,"dependencies":[]},{"name":"package_info_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/package_info_plus-8.0.2/","native_build":false,"dependencies":[]},{"name":"path_provider_windows","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/path_provider_windows-2.2.1/","native_build":false,"dependencies":[]},{"name":"screen_brightness_windows","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/screen_brightness_windows-0.1.3/","native_build":true,"dependencies":[]},{"name":"shared_preferences_windows","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.4.1/","native_build":false,"dependencies":["path_provider_windows"]},{"name":"url_launcher_windows","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_windows-3.1.1/","native_build":true,"dependencies":[]},{"name":"wakelock_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.8/","native_build":false,"dependencies":["package_info_plus"]}],"web":[{"name":"emoji_picker_flutter","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/emoji_picker_flutter-3.1.0/","dependencies":[]},{"name":"flutter_sound_web","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/flutter_sound_web-9.17.0/","dependencies":[]},{"name":"open_file_web","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/open_file_web-0.0.4/","dependencies":[]},{"name":"package_info_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/package_info_plus-8.0.2/","dependencies":[]},{"name":"pdf_render","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","dependencies":[]},{"name":"shared_preferences_web","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/shared_preferences_web-2.4.2/","dependencies":[]},{"name":"url_launcher_web","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/url_launcher_web-2.3.3/","dependencies":[]},{"name":"wakelock_plus","path":"/Users/anujkumar/.pub-cache/hosted/pub.dev/wakelock_plus-1.2.8/","dependencies":["package_info_plus"]}]},"dependencyGraph":[{"name":"emoji_picker_flutter","dependencies":["shared_preferences"]},{"name":"flutter_sound","dependencies":["path_provider","flutter_sound_web"]},{"name":"flutter_sound_web","dependencies":[]},{"name":"media_kit_libs_android_video","dependencies":[]},{"name":"media_kit_libs_ios_video","dependencies":[]},{"name":"media_kit_libs_linux","dependencies":[]},{"name":"media_kit_libs_macos_video","dependencies":[]},{"name":"media_kit_libs_windows_video","dependencies":[]},{"name":"media_kit_native_event_loop","dependencies":[]},{"name":"media_kit_video","dependencies":["wakelock_plus","screen_brightness","volume_controller"]},{"name":"open_file","dependencies":["open_file_android","open_file_web","open_file_ios","open_file_mac","open_file_windows","open_file_linux"]},{"name":"open_file_android","dependencies":[]},{"name":"open_file_ios","dependencies":[]},{"name":"open_file_linux","dependencies":[]},{"name":"open_file_mac","dependencies":[]},{"name":"open_file_web","dependencies":[]},{"name":"open_file_windows","dependencies":[]},{"name":"package_info_plus","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"pdf_render","dependencies":[]},{"name":"screen_brightness","dependencies":["screen_brightness_android","screen_brightness_ios","screen_brightness_macos","screen_brightness_windows"]},{"name":"screen_brightness_android","dependencies":[]},{"name":"screen_brightness_ios","dependencies":[]},{"name":"screen_brightness_macos","dependencies":[]},{"name":"screen_brightness_windows","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]},{"name":"sqflite","dependencies":[]},{"name":"url_launcher","dependencies":["url_launcher_android","url_launcher_ios","url_launcher_linux","url_launcher_macos","url_launcher_web","url_launcher_windows"]},{"name":"url_launcher_android","dependencies":[]},{"name":"url_launcher_ios","dependencies":[]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_web","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]},{"name":"video_thumbnail","dependencies":[]},{"name":"volume_controller","dependencies":[]},{"name":"wakelock_plus","dependencies":["package_info_plus"]}],"date_created":"2025-06-05 11:00:19.595421","version":"3.27.1","swift_package_manager_enabled":false} \ No newline at end of file diff --git a/lib/packages/ui/lib/src/theme/theme.dart b/lib/packages/ui/lib/src/theme/theme.dart index 52187455..3b780095 100644 --- a/lib/packages/ui/lib/src/theme/theme.dart +++ b/lib/packages/ui/lib/src/theme/theme.dart @@ -904,10 +904,10 @@ extension ScreenHeight on num { } /// Convert integer or double to screen width percentage (w) -extension ScreenWidth on num { - /// Converts a percentage to screen width - double get w => (this / 100) * ScreenSize.width; -} +// extension ScreenWidth on num { +// /// Converts a percentage to screen width +// double get w => (this / 100) * ScreenSize.width; +// } /// Extension to convert double to scaled text size extension ScreenPoints on double { diff --git a/lib/packages/ui/lib/src/utils/media/media_utils.dart b/lib/packages/ui/lib/src/utils/media/media_utils.dart index fbaa5184..3074ac86 100644 --- a/lib/packages/ui/lib/src/utils/media/media_utils.dart +++ b/lib/packages/ui/lib/src/utils/media/media_utils.dart @@ -573,12 +573,13 @@ Widget getImageMessage( if (conversationAttachments == null || conversationAttachments.isEmpty) { return const SizedBox(); } + final width = MediaQuery.sizeOf(context).width; if (conversationAttachments.length == 1) { return getChatBubbleImage( conversationAttachments.first, - height: 55.w, - width: 55.w, + height: width * 0.55, + width: width * 0.55, ); } else if (conversationAttachments.length == 2) { return Row( @@ -586,14 +587,14 @@ Widget getImageMessage( children: [ getChatBubbleImage( conversationAttachments[0], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), kHorizontalPaddingSmall, getChatBubbleImage( conversationAttachments[1], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), ], ); @@ -603,13 +604,13 @@ Widget getImageMessage( children: [ getChatBubbleImage( conversationAttachments[0], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), kHorizontalPaddingSmall, Container( - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, clipBehavior: Clip.hardEdge, decoration: BoxDecoration( borderRadius: BorderRadius.circular(6.0), @@ -618,13 +619,13 @@ Widget getImageMessage( children: [ getChatBubbleImage( conversationAttachments[1], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), Positioned( child: Container( - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, alignment: Alignment.center, color: LMChatTheme.theme.container.withOpacity(0.5), child: LMChatText( @@ -652,14 +653,14 @@ Widget getImageMessage( children: [ getChatBubbleImage( conversationAttachments[0], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), kHorizontalPaddingSmall, getChatBubbleImage( conversationAttachments[1], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), ], ), @@ -669,14 +670,14 @@ Widget getImageMessage( children: [ getChatBubbleImage( conversationAttachments[2], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), kHorizontalPaddingSmall, getChatBubbleImage( conversationAttachments[3], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), ], ), @@ -690,14 +691,14 @@ Widget getImageMessage( children: [ getChatBubbleImage( conversationAttachments[0], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), kHorizontalPaddingSmall, getChatBubbleImage( conversationAttachments[1], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), ], ), @@ -707,13 +708,13 @@ Widget getImageMessage( children: [ getChatBubbleImage( conversationAttachments[2], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), kHorizontalPaddingSmall, Container( - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, clipBehavior: Clip.hardEdge, decoration: BoxDecoration(borderRadius: BorderRadius.circular(6.0)), @@ -721,13 +722,13 @@ Widget getImageMessage( children: [ getChatBubbleImage( conversationAttachments[3], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), Positioned( child: Container( - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, alignment: Alignment.center, color: LMChatTheme.theme.container.withOpacity(0.5), child: LMChatText( @@ -757,12 +758,13 @@ Widget getImageFileMessage( List mediaFiles, LMChatImageBuilder? imageBuilder, ) { + final width = MediaQuery.sizeOf(context).width; if (mediaFiles.length == 1) { return GestureDetector( child: getFileImageTile( mediaFiles.first, - height: 55.w, - width: 55.w, + height: width * 0.55, + width: width * 0.55, ), ); } else if (mediaFiles.length == 2) { @@ -772,14 +774,14 @@ Widget getImageFileMessage( children: [ getFileImageTile( mediaFiles[0], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), LMChatDefaultTheme.kHorizontalPaddingSmall, getFileImageTile( mediaFiles[1], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ) ], ), @@ -791,13 +793,13 @@ Widget getImageFileMessage( children: [ getFileImageTile( mediaFiles[0], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), LMChatDefaultTheme.kHorizontalPaddingSmall, Container( - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, clipBehavior: Clip.hardEdge, decoration: BoxDecoration( borderRadius: BorderRadius.circular(6.0), @@ -806,13 +808,13 @@ Widget getImageFileMessage( children: [ getFileImageTile( mediaFiles[1], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), Positioned( child: Container( - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, alignment: Alignment.center, color: LMChatDefaultTheme.blackColor.withOpacity(0.5), child: const LMChatText( @@ -842,14 +844,14 @@ Widget getImageFileMessage( children: [ getFileImageTile( mediaFiles[0], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), LMChatDefaultTheme.kHorizontalPaddingSmall, getFileImageTile( mediaFiles[1], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), ], ), @@ -859,14 +861,14 @@ Widget getImageFileMessage( children: [ getFileImageTile( mediaFiles[2], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), LMChatDefaultTheme.kHorizontalPaddingSmall, getFileImageTile( mediaFiles[3], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), ], ), @@ -883,14 +885,14 @@ Widget getImageFileMessage( children: [ getFileImageTile( mediaFiles[0], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), LMChatDefaultTheme.kHorizontalPaddingSmall, getFileImageTile( mediaFiles[1], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), ], ), @@ -900,8 +902,8 @@ Widget getImageFileMessage( children: [ getFileImageTile( mediaFiles[2], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), LMChatDefaultTheme.kHorizontalPaddingSmall, Container( @@ -914,13 +916,13 @@ Widget getImageFileMessage( children: [ getFileImageTile( mediaFiles[3], - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, ), Positioned( child: Container( - height: 25.w, - width: 25.w, + height: width * 0.25, + width: width * 0.25, alignment: Alignment.center, color: LMChatDefaultTheme.blackColor.withOpacity(0.5), child: LMChatText( diff --git a/lib/packages/ui/lib/src/widgets/common/extras/appbar.dart b/lib/packages/ui/lib/src/widgets/common/extras/appbar.dart index 2dc71c9f..607373c0 100644 --- a/lib/packages/ui/lib/src/widgets/common/extras/appbar.dart +++ b/lib/packages/ui/lib/src/widgets/common/extras/appbar.dart @@ -111,8 +111,8 @@ class LMChatAppBar extends StatelessWidget implements PreferredSizeWidget { boxSize: 28, ), ), - backgroundColor: LMChatTheme - .theme.container, + backgroundColor: + LMChatTheme.theme.container, ), ) : const SizedBox.shrink()), @@ -156,7 +156,8 @@ class LMChatAppBar extends StatelessWidget implements PreferredSizeWidget { type: LMChatIconType.icon, icon: Icons.arrow_back, style: LMChatIconStyle( - color: LMChatTheme.theme.onContainer, + color: + LMChatTheme.theme.onContainer, size: 24, boxSize: 28, ), @@ -180,7 +181,8 @@ class LMChatAppBar extends StatelessWidget implements PreferredSizeWidget { children: [ Container( constraints: BoxConstraints( - minWidth: 80.w, + minWidth: + MediaQuery.sizeOf(context).width * 0.8, ), child: titleBuilder?.call( title ?? const SizedBox.shrink()) ?? diff --git a/lib/packages/ui/lib/src/widgets/common/menu/menu.dart b/lib/packages/ui/lib/src/widgets/common/menu/menu.dart index 85d2aa99..75eab456 100644 --- a/lib/packages/ui/lib/src/widgets/common/menu/menu.dart +++ b/lib/packages/ui/lib/src/widgets/common/menu/menu.dart @@ -179,9 +179,9 @@ class LMChatMenuStyle { borderRadius: BorderRadius.circular(8), ), color: Colors.white, - constraints: BoxConstraints( - minWidth: 12.w, - maxWidth: 60.w, + constraints: const BoxConstraints( + minWidth: 120, + maxWidth: 300, ), clipBehavior: Clip.none, itemPadding: EdgeInsets.zero, diff --git a/lib/packages/ui/lib/src/widgets/conversation/chat_bubble.dart b/lib/packages/ui/lib/src/widgets/conversation/chat_bubble.dart index f0ed63a5..6c95bb25 100644 --- a/lib/packages/ui/lib/src/widgets/conversation/chat_bubble.dart +++ b/lib/packages/ui/lib/src/widgets/conversation/chat_bubble.dart @@ -316,6 +316,7 @@ class _LMChatBubbleState extends State { // Add ValueNotifier for voice note duration late final ValueNotifier _voiceNoteDurationNotifier; + late Size size; @override void initState() { @@ -371,6 +372,12 @@ class _LMChatBubbleState extends State { } } + @override + void didChangeDependencies() { + super.didChangeDependencies(); + size = MediaQuery.sizeOf(context); + } + @override void dispose() { _voiceNoteDurationNotifier.dispose(); @@ -395,11 +402,9 @@ class _LMChatBubbleState extends State { } }, background: Padding( - padding: EdgeInsets.only( - left: 2.w, - right: 2.w, - top: 0.2.h, - bottom: 0.2.h, + padding: EdgeInsets.symmetric( + horizontal: size.width * 0.02, + vertical: size.width * 0.002, ), child: Column( mainAxisAlignment: MainAxisAlignment.center, @@ -492,13 +497,13 @@ class _LMChatBubbleState extends State { : null, ), padding: EdgeInsets.only( - left: 1.8.w, - right: 1.8.w, + left: 8, + right: 8, top: conversation.conversationViewType != LMChatConversationViewType.bottom - ? 0.8.h + ? 6 : 0, - bottom: 0.6.h, + bottom: 4, ), child: Row( mainAxisAlignment: @@ -551,15 +556,16 @@ class _LMChatBubbleState extends State { !inStyle.enableClipper ? inStyle.backgroundColor : null, ), constraints: BoxConstraints( - minHeight: 2.h, - minWidth: conversation.answer.split('\n').length > 4 ? 40.w : 5.w, - maxWidth: - (widget.attachments != null && widget.attachments!.isNotEmpty) - ? 60.w - : conversation.state == 10 - ? 70.w - : 65.w, - ), + minHeight: 2.h, + minWidth: conversation.answer.split('\n').length > 4 + ? size.width * 0.4 + : size.width * 0.05, + maxWidth: (widget.attachments != null && + widget.attachments!.isNotEmpty) + ? size.width * 0.6 + : conversation.state == 10 + ? size.width * 0.7 + : size.width * 0.65), child: inStyle.enableClipper ? PhysicalShape( clipper: inStyle.clipper ?? @@ -604,14 +610,14 @@ class _LMChatBubbleState extends State { ? EdgeInsets.only( top: _isDeleted ? 0.8.h : 1.h, bottom: _isDeleted ? 1.2.h : 1.h, - left: 3.w, - right: 3.w + (inStyle.enableClipper ? 10 : 0), + left: size.width * 0.03, + right: size.width * 0.03 + (inStyle.enableClipper ? 10 : 0), ) : EdgeInsets.only( top: _isDeleted ? 0.8.h : 1.h, bottom: _isDeleted ? 1.2.h : 1.h, - left: 3.w + (inStyle.enableClipper ? 10 : 0), - right: 3.w, + left: size.width * 0.033 + (inStyle.enableClipper ? 10 : 0), + right: size.width * 0.03, ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -870,7 +876,7 @@ class _LMChatBubbleState extends State { if ((widget.attachments != null && widget.attachments!.isNotEmpty) || conversation.replyId != null || conversation.replyConversationObject != null) { - return 65.w; // Full width if media or reply is present + return size.width * 0.65; // Full width if media or reply is present } if (conversation.ogTags != null) { diff --git a/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_media.dart b/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_media.dart index f1b02275..b9b4b0d3 100644 --- a/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_media.dart +++ b/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_media.dart @@ -80,6 +80,7 @@ class LMChatBubbleMedia extends StatelessWidget { } Widget? getContent(BuildContext context) { + final width = MediaQuery.sizeOf(context).width; Widget? mediaWidget; if (count > 0 && conversation.deletedByUserId == null && @@ -95,7 +96,8 @@ class LMChatBubbleMedia extends StatelessWidget { case 1: mediaWidget = LMChatDocumentThumbnail( media: attachments.first.toMediaModel(), - style: LMChatDocumentThumbnailStyle(height: 140, width: 55.w), + style: LMChatDocumentThumbnailStyle( + height: 140, width: width * 0.55), showOverlay: true, ); default: @@ -103,7 +105,7 @@ class LMChatBubbleMedia extends StatelessWidget { mediaList: attachments.map((e) => e.toMediaModel()).toList(), style: LMChatDocumentTilePreviewStyle( tileStyle: LMChatDocumentTileStyle( - width: 55.w, + width: width * 0.55, ), ), ); @@ -147,7 +149,7 @@ class LMChatBubbleMedia extends StatelessWidget { Widget _defaultMediaWidget(BuildContext context) { if (attachments.first.attachmentFile != null || - attachments.first.attachmentBytes != null ) { + attachments.first.attachmentBytes != null) { return getImageFileMessage(context, attachments, imageBuilder); } return getImageMessage(context, attachments, imageBuilder); diff --git a/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_reply.dart b/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_reply.dart index 1f3e8205..8272df06 100644 --- a/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_reply.dart +++ b/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_reply.dart @@ -55,6 +55,7 @@ class LMChatBubbleReply extends StatelessWidget { Widget build(BuildContext context) { final theme = LMChatTheme.theme; final inStyle = chatBubbleReplyStyle ?? theme.replyStyle; + final width = MediaQuery.of(context).size.width; return GestureDetector( onTap: onTap, behavior: HitTestBehavior.translucent, @@ -66,8 +67,8 @@ class LMChatBubbleReply extends StatelessWidget { borderRadius: BorderRadius.circular(inStyle.borderRadius ?? 8), ), constraints: BoxConstraints( - minWidth: 20.w, - maxWidth: 64.w, + minWidth: width * 0.2, + maxWidth: width * 0.64, ), margin: inStyle.margin ?? const EdgeInsets.symmetric(vertical: 4), padding: inStyle.padding, @@ -77,7 +78,7 @@ class LMChatBubbleReply extends StatelessWidget { children: [ Container( height: 6.h, - width: 1.w, + width: width * 0.01, decoration: BoxDecoration( color: inStyle.highlightColor ?? theme.primaryColor, ), diff --git a/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_state.dart b/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_state.dart index 9d0efed8..ef811f7b 100644 --- a/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_state.dart +++ b/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_state.dart @@ -42,6 +42,7 @@ class LMChatStateBubble extends StatelessWidget { @override Widget build(BuildContext context) { final inStyle = style ?? LMChatTheme.theme.stateBubbleStyle; + final width = MediaQuery.sizeOf(context).width; return IntrinsicWidth( child: Row( mainAxisAlignment: MainAxisAlignment.center, @@ -49,7 +50,7 @@ class LMChatStateBubble extends StatelessWidget { children: [ IntrinsicWidth( child: Container( - constraints: BoxConstraints(maxWidth: 70.w), + constraints: BoxConstraints(maxWidth: width*0.7), margin: const EdgeInsets.symmetric(vertical: 5), padding: const EdgeInsets.symmetric( horizontal: 8, diff --git a/lib/packages/ui/lib/src/widgets/media/document/thumbnail.dart b/lib/packages/ui/lib/src/widgets/media/document/thumbnail.dart index cd1ad4f2..ddd1beb2 100644 --- a/lib/packages/ui/lib/src/widgets/media/document/thumbnail.dart +++ b/lib/packages/ui/lib/src/widgets/media/document/thumbnail.dart @@ -85,6 +85,7 @@ class _LMChatDocumentThumbnailState extends State { @override Widget build(BuildContext context) { + final width = MediaQuery.sizeOf(context).width; return FutureBuilder( future: loadedFile, builder: (context, snapshot) { @@ -113,7 +114,7 @@ class _LMChatDocumentThumbnailState extends State { style: style?.overlayStyle ?? LMChatDocumentTileStyle( padding: EdgeInsets.zero, - width: 52.w, + width: width * 0.52, backgroundColor: LMChatTheme.theme.container, ), diff --git a/lib/packages/ui/lib/src/widgets/media/document/tile.dart b/lib/packages/ui/lib/src/widgets/media/document/tile.dart index 1b8c12a3..01e46f0b 100644 --- a/lib/packages/ui/lib/src/widgets/media/document/tile.dart +++ b/lib/packages/ui/lib/src/widgets/media/document/tile.dart @@ -94,6 +94,7 @@ class _LMChatDocumentTileState extends State { @override Widget build(BuildContext context) { + final width = MediaQuery.sizeOf(context).width; return FutureBuilder( future: loadedFile, builder: (context, snapshot) { @@ -111,7 +112,7 @@ class _LMChatDocumentTileState extends State { ), child: Container( height: style.height ?? 60, - width: style.width ?? 55.w, + width: style.width ?? width * 0.55, decoration: BoxDecoration( border: Border.all(color: LMChatDefaultTheme.greyColor), borderRadius: BorderRadius.circular(kBorderRadiusMedium), diff --git a/lib/packages/ui/lib/src/widgets/media/image.dart b/lib/packages/ui/lib/src/widgets/media/image.dart index 9f6289eb..08f605c2 100644 --- a/lib/packages/ui/lib/src/widgets/media/image.dart +++ b/lib/packages/ui/lib/src/widgets/media/image.dart @@ -85,6 +85,7 @@ class LMChatImage extends StatefulWidget { class _LMImageState extends State { LMChatImageStyle? style; + late Size size; // Determines if the image is an SVG image based on the file extension of the URL bool _isSvgImage() { @@ -97,6 +98,12 @@ class _LMImageState extends State { super.initState(); style = widget.style ?? LMChatTheme.theme.imageStyle; } + + @override + void didChangeDependencies() { + super.didChangeDependencies(); + size = MediaQuery.sizeOf(context); + } /// Builds the widget tree for the image widget /// Returns a GestureDetector that handles tap events @@ -142,7 +149,7 @@ class _LMImageState extends State { required double imageHeight, }) { // Calculate container dimensions - final containerWidth = style?.width ?? 100.w; + final containerWidth = style?.width ?? size.width; final containerHeight = style?.height ?? 80.h; // Calculate scale to fit @@ -181,7 +188,7 @@ class _LMImageState extends State { return style!.loaderWidget ?? LMChatMediaShimmerWidget( height: style!.height, - width: style!.width ?? 100.w, + width: style!.width ?? size.width, ); }, // errorBuilder: (context, error, stackTrace) { @@ -242,7 +249,7 @@ class _LMImageState extends State { style!.shimmerWidget ?? LMChatMediaShimmerWidget( height: style!.height, - width: style!.width ?? 100.w, + width: style!.width ?? size.width, ), ), ); @@ -290,7 +297,7 @@ class _LMImageState extends State { child: _buildPhotoView( context: context, imageProvider: MemoryImage(widget.imageBytes!), - imageWidth: 100.w, + imageWidth: size.width, imageHeight: 80.h, ), ); diff --git a/lib/packages/ui/lib/src/widgets/media/link_preview_bar.dart b/lib/packages/ui/lib/src/widgets/media/link_preview_bar.dart index e5eb21be..3a8cab12 100644 --- a/lib/packages/ui/lib/src/widgets/media/link_preview_bar.dart +++ b/lib/packages/ui/lib/src/widgets/media/link_preview_bar.dart @@ -10,7 +10,7 @@ import 'package:url_launcher/url_launcher.dart'; /// {@endtemplate} class LMChatLinkPreviewBar extends StatelessWidget { /// {@macro chat_link_preview_bar} - const LMChatLinkPreviewBar({ + LMChatLinkPreviewBar({ super.key, required this.ogTags, this.onCanceled, @@ -50,6 +50,8 @@ class LMChatLinkPreviewBar extends StatelessWidget { /// The style configuration for the link preview bar. final LMChatLinkPreviewBarStyle? style; + late Size _size; + /// Creates a copy of the current LMChatLinkPreviewBar instance with the provided values. /// If no values are provided, the current values are used. LMChatLinkPreviewBar copyWith({ @@ -79,6 +81,7 @@ class LMChatLinkPreviewBar extends StatelessWidget { @override Widget build(BuildContext context) { final themeData = LMChatTheme.theme; + _size = MediaQuery.sizeOf(context); return GestureDetector( onTap: () { if (onTap != null) { @@ -88,7 +91,7 @@ class LMChatLinkPreviewBar extends StatelessWidget { } }, child: Container( - width: style?.width ?? 80.w, + width: style?.width ?? _size.width * 0.8, height: style?.height, decoration: style?.decoration?.copyWith( color: themeData.container, @@ -158,7 +161,9 @@ class LMChatLinkPreviewBar extends StatelessWidget { link, style: style?.linkTextStyle ?? LMChatTextStyle( - padding: EdgeInsets.symmetric(horizontal: 1.w), + padding: EdgeInsets.symmetric( + horizontal: _size.width * 0.01, + ), textStyle: const TextStyle( fontSize: 12, color: Colors.grey, @@ -198,7 +203,9 @@ class LMChatLinkPreviewBar extends StatelessWidget { ogTags.title ?? "", style: style?.titleStyle ?? LMChatTextStyle( - padding: EdgeInsets.symmetric(horizontal: 1.w), + padding: EdgeInsets.symmetric( + horizontal: _size.width * 0.01, + ), textStyle: const TextStyle( fontSize: 14, fontWeight: FontWeight.w500, @@ -214,7 +221,7 @@ class LMChatLinkPreviewBar extends StatelessWidget { ogTags.description ?? "", style: style?.subtitleStyle ?? LMChatTextStyle( - padding: EdgeInsets.symmetric(horizontal: 1.w), + padding: EdgeInsets.symmetric(horizontal: _size.width * 0.01), textStyle: const TextStyle( fontSize: 14, color: Colors.grey, @@ -339,9 +346,9 @@ class LMChatLinkPreviewBarStyle { left: 8, right: 30, ), - width: 80.w, + width: 200, linkTextStyle: LMChatTextStyle( - padding: EdgeInsets.symmetric(horizontal: 1.w), + padding: const EdgeInsets.symmetric(horizontal: 8), textStyle: TextStyle( fontSize: 12, color: inActiveColor, @@ -366,9 +373,9 @@ class LMChatLinkPreviewBarStyle { ), ), ), - titleStyle: LMChatTextStyle( - padding: EdgeInsets.symmetric(horizontal: 1.w), - textStyle: const TextStyle( + titleStyle: const LMChatTextStyle( + padding: EdgeInsets.symmetric(horizontal: 8), + textStyle: TextStyle( fontSize: 14, fontWeight: FontWeight.w500, overflow: TextOverflow.ellipsis, @@ -376,7 +383,7 @@ class LMChatLinkPreviewBarStyle { maxLines: 2, ), subtitleStyle: LMChatTextStyle( - padding: EdgeInsets.symmetric(horizontal: 1.w), + padding: const EdgeInsets.symmetric(horizontal: 8), textStyle: TextStyle( fontSize: 14, color: inActiveColor, diff --git a/lib/packages/ui/lib/src/widgets/media/video.dart b/lib/packages/ui/lib/src/widgets/media/video.dart index a123baaf..b95414fa 100644 --- a/lib/packages/ui/lib/src/widgets/media/video.dart +++ b/lib/packages/ui/lib/src/widgets/media/video.dart @@ -127,11 +127,12 @@ class _LMChatVideoState extends State { @override Widget build(BuildContext context) { + final width = MediaQuery.sizeOf(context).width; final chatTheme = LMChatTheme.theme; style = widget.style ?? chatTheme.videoStyle; return Container( height: style?.height, - width: style?.width ?? 100.w, + width: style?.width ?? width, decoration: BoxDecoration( color: style?.backgroundColor ?? chatTheme.onPrimary, border: Border.all( @@ -142,7 +143,7 @@ class _LMChatVideoState extends State { ), child: AspectRatio( // aspectRatio: - aspectRatio: (style?.width ?? widget.media.width?.toDouble() ?? 100.w) / + aspectRatio: (style?.width ?? widget.media.width?.toDouble() ?? width) / (style?.height ?? widget.media.height?.toDouble() ?? 56.h), child: MaterialVideoControlsTheme( fullscreen: const MaterialVideoControlsThemeData(), diff --git a/lib/packages/ui/lib/src/widgets/reaction/reaction_bar.dart b/lib/packages/ui/lib/src/widgets/reaction/reaction_bar.dart index 51315856..f06475d0 100644 --- a/lib/packages/ui/lib/src/widgets/reaction/reaction_bar.dart +++ b/lib/packages/ui/lib/src/widgets/reaction/reaction_bar.dart @@ -37,6 +37,8 @@ class LMChatReactionBar extends StatelessWidget { @override Widget build(BuildContext context) { + final double width = MediaQuery.of(context).size.width; + final double height = MediaQuery.of(context).size.height; LMChatReactionBarStyle effectiveStyle = style ?? (LMChatTheme.theme.reactionBarStyle as LMChatReactionBarStyle?) ?? LMChatReactionBarStyle.basic(); @@ -54,8 +56,8 @@ class LMChatReactionBar extends StatelessWidget { ) ], ), - width: effectiveStyle.width ?? 80.w, - height: effectiveStyle.height ?? 6.h, + width: effectiveStyle.width ?? width * 0.8, + height: effectiveStyle.height ?? height * 0.06, child: getListOfReactions( onTap: onReaction, effectiveStyle: effectiveStyle, // Pass effectiveStyle here diff --git a/lib/packages/ui/lib/src/widgets/reaction/reaction_bottom_sheet.dart b/lib/packages/ui/lib/src/widgets/reaction/reaction_bottom_sheet.dart index 0150f24f..65b7a8e1 100644 --- a/lib/packages/ui/lib/src/widgets/reaction/reaction_bottom_sheet.dart +++ b/lib/packages/ui/lib/src/widgets/reaction/reaction_bottom_sheet.dart @@ -83,6 +83,7 @@ class _LMChatReactionBottomSheetState extends State { @override Widget build(BuildContext context) { + final width = MediaQuery.of(context).size.width; initialiseBottomSheetData(); return Container( clipBehavior: Clip.none, @@ -105,7 +106,7 @@ class _LMChatReactionBottomSheetState extends State { kVerticalPaddingLarge, _buildTitle(), // Refactored title section kVerticalPaddingXLarge, - _buildTabBar(), // Refactored tab bar section + _buildTabBar(width), // Refactored tab bar section kVerticalPaddingLarge, _buildReactionList(), // Refactored reaction list section ], @@ -125,7 +126,7 @@ class _LMChatReactionBottomSheetState extends State { } // New method to build the tab bar - Widget _buildTabBar() { + Widget _buildTabBar(double width) { return SizedBox( height: 40, child: Row( @@ -141,7 +142,7 @@ class _LMChatReactionBottomSheetState extends State { ), ), ), - width: 100.w - 40, + width: width - 40, height: 40, child: ListView.builder( itemCount: mappedReactions!.keys.length, diff --git a/lib/packages/ui/lib/src/widgets/shimmers/chatroom_skeleton.dart b/lib/packages/ui/lib/src/widgets/shimmers/chatroom_skeleton.dart index d3ffc786..50cd9b08 100644 --- a/lib/packages/ui/lib/src/widgets/shimmers/chatroom_skeleton.dart +++ b/lib/packages/ui/lib/src/widgets/shimmers/chatroom_skeleton.dart @@ -123,26 +123,22 @@ class LMChatSkeletonChatBar extends StatelessWidget { @override Widget build(BuildContext context) { + final size = MediaQuery.sizeOf(context); return Container( color: LMChatTheme.theme.backgroundColor, child: Padding( - padding: EdgeInsets.only( - left: 18, - right: 18, - top: 2.h, - bottom: 2.h, - ), + padding: const EdgeInsets.symmetric(horizontal: 18, vertical: 16), child: Row( children: [ Expanded( child: LMChatSkeletonAnimation( child: Container( - width: 90.w, - height: 6.h, + width: size.width * 0.9, + height: size.height * 0.06, decoration: BoxDecoration( color: LMChatTheme.theme.onContainer.withOpacity(0.5), - borderRadius: BorderRadius.all( - Radius.circular(2.5.h), + borderRadius: const BorderRadius.all( + Radius.circular(12), ), ), ), @@ -155,8 +151,8 @@ class LMChatSkeletonChatBar extends StatelessWidget { height: 6.h, decoration: BoxDecoration( color: LMChatTheme.theme.onContainer.withOpacity(0.5), - borderRadius: BorderRadius.all( - Radius.circular(3.h), + borderRadius: const BorderRadius.all( + Radius.circular(12), ), ), ), @@ -181,10 +177,7 @@ class LMChatSkeletonChatList extends StatelessWidget { ); return Padding( - padding: EdgeInsets.symmetric( - vertical: 1.4.h, - horizontal: 2.w, - ), + padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16), child: Column( children: list, ), @@ -220,6 +213,7 @@ class LMChatSkeletonChatroom extends StatelessWidget { @override Widget build(BuildContext context) { + final size = MediaQuery.sizeOf(context); return Container( color: LMChatTheme.theme.container, child: Padding( @@ -249,7 +243,7 @@ class LMChatSkeletonChatroom extends StatelessWidget { children: [ LMChatSkeletonAnimation( child: Container( - width: 60.w, + width: size.width * 0.6, height: 14, decoration: BoxDecoration( color: LMChatTheme.theme.onContainer.withOpacity(0.5), @@ -262,7 +256,7 @@ class LMChatSkeletonChatroom extends StatelessWidget { LMChatDefaultTheme.kVerticalPaddingSmall, LMChatSkeletonAnimation( child: Container( - width: 40.w, + width: size.width * 0.4, height: 10, decoration: BoxDecoration( color: LMChatTheme.theme.onContainer.withOpacity(0.5), @@ -291,6 +285,7 @@ class LMChatSkeletonChatBubble extends StatelessWidget { @override Widget build(BuildContext context) { + final size = MediaQuery.sizeOf(context); return Padding( padding: EdgeInsets.symmetric( vertical: 1.h, @@ -323,7 +318,7 @@ class LMChatSkeletonChatBubble extends StatelessWidget { borderRadius: BorderRadius.circular(8), ), constraints: BoxConstraints( - maxWidth: 60.w, + maxWidth: size.width * 0.6, maxHeight: 4.5.h, minHeight: 4.5.h, ), diff --git a/lib/packages/ui/lib/src/widgets/shimmers/document_shimmer.dart b/lib/packages/ui/lib/src/widgets/shimmers/document_shimmer.dart index d38b0d83..694c8fe4 100644 --- a/lib/packages/ui/lib/src/widgets/shimmers/document_shimmer.dart +++ b/lib/packages/ui/lib/src/widgets/shimmers/document_shimmer.dart @@ -14,10 +14,12 @@ class LMChatDocumentShimmer extends StatelessWidget { @override Widget build(BuildContext context) { + final double width = MediaQuery.of(context).size.width; + final double height = MediaQuery.of(context).size.height; final style = this.style ?? LMChatDocumentShimmerStyle.basic(); return Container( height: style.height ?? 80, // Default height - width: style.width ?? 55.w, // Default width + width: style.width ?? width * 0.55, // Default width margin: style.margin, decoration: BoxDecoration( border: Border.all( @@ -48,7 +50,7 @@ class LMChatDocumentShimmer extends StatelessWidget { children: [ Container( height: style.titleHeight ?? 16, // Default title height - width: style.titleWidth ?? 28.w, // Default title width + width: style.titleWidth ?? width * 0.28, // Default title width color: LMChatTheme.theme.container, ), kVerticalPaddingMedium, @@ -59,7 +61,7 @@ class LMChatDocumentShimmer extends StatelessWidget { height: style.subtitleHeight ?? 12, // Default subtitle height width: - style.subtitleWidth ?? 16.w, // Default subtitle width + style.subtitleWidth ?? width * 0.16, // Default subtitle width color: LMChatTheme.theme.container, ), kHorizontalPaddingXSmall, diff --git a/lib/packages/ui/lib/src/widgets/shimmers/media_shimmer.dart b/lib/packages/ui/lib/src/widgets/shimmers/media_shimmer.dart index 31fa4cfa..46be005e 100644 --- a/lib/packages/ui/lib/src/widgets/shimmers/media_shimmer.dart +++ b/lib/packages/ui/lib/src/widgets/shimmers/media_shimmer.dart @@ -14,6 +14,7 @@ class LMChatMediaShimmerWidget extends StatelessWidget { @override Widget build(BuildContext context) { + final double screenWidth = MediaQuery.of(context).size.width; return Shimmer.fromColors( baseColor: style?.baseColor ?? Colors.grey.shade100, highlightColor: style?.highlightColor ?? Colors.grey.shade200, @@ -23,8 +24,8 @@ class LMChatMediaShimmerWidget extends StatelessWidget { ? const CircleAvatar(backgroundColor: Colors.white) : Container( color: Colors.white, - width: width ?? 55.w, - height: height ?? 55.w, + width: width ?? screenWidth * 0.55, + height: height ?? screenWidth * 0.55, ), ); } From c594ce88928fb4b555c3db848f35bfc99fb63122 Mon Sep 17 00:00:00 2001 From: Anuj Date: Thu, 5 Jun 2025 17:57:52 +0530 Subject: [PATCH 2/7] fix: fix size issue in poll and other skelton --- example/ios/Podfile.lock | 93 +++--- example/macos/Runner/AppDelegate.swift | 4 + .../core/lib/src/views/chatroom/chatroom.dart | 285 +++++++++--------- .../community_hybrid_chat.dart | 6 +- .../src/views/member_list/member_list.dart | 4 +- .../src/widgets/chatroom/chatroom_bar.dart | 34 ++- .../lists/conversation/conversation_list.dart | 201 ++++++------ lib/packages/ui/lib/src/theme/theme.dart | 114 +++---- .../ui/lib/src/utils/media/media_utils.dart | 2 +- .../src/widgets/conversation/chat_bubble.dart | 12 +- .../conversation/chat_bubble_reply.dart | 5 +- .../ui/lib/src/widgets/media/image.dart | 4 +- .../ui/lib/src/widgets/media/video.dart | 3 +- .../reaction/reaction_bottom_sheet.dart | 3 +- .../reaction/reaction_emoji_keyboard.dart | 4 +- .../widgets/shimmers/chatroom_skeleton.dart | 67 ++-- 16 files changed, 438 insertions(+), 403 deletions(-) diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index cae927f4..5712b9d2 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -1,7 +1,6 @@ PODS: - connectivity_plus (0.0.1): - Flutter - - FlutterMacOS - device_info_plus (0.0.1): - Flutter - DKImagePickerController/Core (4.3.9): @@ -59,13 +58,13 @@ PODS: - Firebase/Messaging (= 11.2.0) - firebase_core - Flutter - - FirebaseAppCheckInterop (11.6.0) + - FirebaseAppCheckInterop (11.14.0) - FirebaseCore (11.2.0): - FirebaseCoreInternal (~> 11.0) - GoogleUtilities/Environment (~> 8.0) - GoogleUtilities/Logger (~> 8.0) - - FirebaseCoreInternal (11.6.0): - - "GoogleUtilities/NSData+zlib (~> 8.0)" + - FirebaseCoreInternal (11.14.0): + - "GoogleUtilities/NSData+zlib (~> 8.1)" - FirebaseDatabase (11.2.0): - FirebaseAppCheckInterop (~> 11.0) - FirebaseCore (~> 11.0) @@ -86,8 +85,10 @@ PODS: - GoogleUtilities/Reachability (~> 8.0) - GoogleUtilities/UserDefaults (~> 8.0) - nanopb (~> 3.30910.0) - - FirebaseSharedSwift (11.6.0) + - FirebaseSharedSwift (11.14.0) - Flutter (1.0.0) + - flutter_local_notifications (0.0.1): + - Flutter - flutter_sound (9.16.3): - Flutter - flutter_sound_core (= 9.16.3) @@ -95,28 +96,28 @@ PODS: - GoogleDataTransport (10.1.0): - nanopb (~> 3.30910.0) - PromisesObjC (~> 2.4) - - GoogleUtilities/AppDelegateSwizzler (8.0.2): + - GoogleUtilities/AppDelegateSwizzler (8.1.0): - GoogleUtilities/Environment - GoogleUtilities/Logger - GoogleUtilities/Network - GoogleUtilities/Privacy - - GoogleUtilities/Environment (8.0.2): + - GoogleUtilities/Environment (8.1.0): - GoogleUtilities/Privacy - - GoogleUtilities/Logger (8.0.2): + - GoogleUtilities/Logger (8.1.0): - GoogleUtilities/Environment - GoogleUtilities/Privacy - - GoogleUtilities/Network (8.0.2): + - GoogleUtilities/Network (8.1.0): - GoogleUtilities/Logger - "GoogleUtilities/NSData+zlib" - GoogleUtilities/Privacy - GoogleUtilities/Reachability - - "GoogleUtilities/NSData+zlib (8.0.2)": + - "GoogleUtilities/NSData+zlib (8.1.0)": - GoogleUtilities/Privacy - - GoogleUtilities/Privacy (8.0.2) - - GoogleUtilities/Reachability (8.0.2): + - GoogleUtilities/Privacy (8.1.0) + - GoogleUtilities/Reachability (8.1.0): - GoogleUtilities/Logger - GoogleUtilities/Privacy - - GoogleUtilities/UserDefaults (8.0.2): + - GoogleUtilities/UserDefaults (8.1.0): - GoogleUtilities/Logger - GoogleUtilities/Privacy - image_picker_ios (0.0.1): @@ -180,7 +181,7 @@ PODS: - Flutter DEPENDENCIES: - - connectivity_plus (from `.symlinks/plugins/connectivity_plus/darwin`) + - connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`) - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) - emoji_picker_flutter (from `.symlinks/plugins/emoji_picker_flutter/ios`) - file_picker (from `.symlinks/plugins/file_picker/ios`) @@ -188,6 +189,7 @@ DEPENDENCIES: - firebase_database (from `.symlinks/plugins/firebase_database/ios`) - firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`) - Flutter (from `Flutter`) + - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) - flutter_sound (from `.symlinks/plugins/flutter_sound/ios`) - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) - media_kit_libs_ios_video (from `.symlinks/plugins/media_kit_libs_ios_video/ios`) @@ -230,7 +232,7 @@ SPEC REPOS: EXTERNAL SOURCES: connectivity_plus: - :path: ".symlinks/plugins/connectivity_plus/darwin" + :path: ".symlinks/plugins/connectivity_plus/ios" device_info_plus: :path: ".symlinks/plugins/device_info_plus/ios" emoji_picker_flutter: @@ -245,6 +247,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/firebase_messaging/ios" Flutter: :path: Flutter + flutter_local_notifications: + :path: ".symlinks/plugins/flutter_local_notifications/ios" flutter_sound: :path: ".symlinks/plugins/flutter_sound/ios" image_picker_ios: @@ -281,51 +285,52 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/wakelock_plus/ios" SPEC CHECKSUMS: - connectivity_plus: 3f6c9057f4cd64198dc826edfb0542892f825343 - device_info_plus: 71ffc6ab7634ade6267c7a93088ed7e4f74e5896 + connectivity_plus: 2a701ffec2c0ae28a48cf7540e279787e77c447d + device_info_plus: 97af1d7e84681a90d0693e63169a5d50e0839a0d DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60 - emoji_picker_flutter: ed468d9746c21711e66b2788880519a9de5de211 - file_picker: 9b3292d7c8bc68c8a7bf8eb78f730e49c8efc517 + emoji_picker_flutter: fe2e6151c5b548e975d546e6eeb567daf0962a58 + file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655 Firebase: 98e6bf5278170668a7983e12971a66b2cd57fc8c - firebase_core: 085320ddfaacb80d1a96eac3a87857afcc150db1 - firebase_database: 938ac21f70e40e8bc2432114ca6e4644fccf9c7e - firebase_messaging: d398edc15fe825f832836e74f6ac61e8cd2f3ad3 - FirebaseAppCheckInterop: 347aa09a805219a31249b58fc956888e9fcb314b + firebase_core: 2bedc3136ec7c7b8561c6123ed0239387b53f2af + firebase_database: d52bf1a2e0542f565925feed43fa5c4350576ed7 + firebase_messaging: 15d114e1a41fc31e4fbabcd48d765a19eec94a38 + FirebaseAppCheckInterop: a92ba81d0ee3c4cddb1a2e52c668ea51dc63c3ae FirebaseCore: a282032ae9295c795714ded2ec9c522fc237f8da - FirebaseCoreInternal: d98ab91e2d80a56d7b246856a8885443b302c0c2 + FirebaseCoreInternal: 6a3b668197644aa858fc4127578637c6767ba123 FirebaseDatabase: 7f0bcea9a7c0554284019a6bac1d80e7288ee831 FirebaseInstallations: 6ef4a1c7eb2a61ee1f74727d7f6ce2e72acf1414 FirebaseMessaging: c9ec7b90c399c7a6100297e9d16f8a27fc7f7152 - FirebaseSharedSwift: a4e5dfca3e210633bb3a3dfb94176c019211948b + FirebaseSharedSwift: bdd5c8674c4712a98e70287c936bc5cca5d640f6 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 - flutter_sound: 859f6ab6196dca46fb9b6ade22a1cdd465364afa + flutter_local_notifications: df98d66e515e1ca797af436137b4459b160ad8c9 + flutter_sound: d9c7b35b2f19366439a74695d190d9a504a6b4fe flutter_sound_core: 2c5d7e93183845b53a776d99c4d6ebc2933ec495 GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 - GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d - image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a + GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1 + image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1 leveldb-library: cc8b8f8e013647a295ad3f8cd2ddf49a6f19be19 libwebp: 1786c9f4ff8a279e4dac1e8f385004d5fc253009 - media_kit_libs_ios_video: 5a18affdb97d1f5d466dc79988b13eff6c5e2854 - media_kit_native_event_loop: 5fba1a849a6c87a34985f1e178a0de5bd444a0cf - media_kit_video: 1746e198cb697d1ffb734b1d05ec429d1fcd1474 + media_kit_libs_ios_video: a5fe24bc7875ccd6378a0978c13185e1344651c1 + media_kit_native_event_loop: e6b2ab20cf0746eb1c33be961fcf79667304fa2a + media_kit_video: 5da63f157170e5bf303bf85453b7ef6971218a2e nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 - open_file_ios: 5ff7526df64e4394b4fe207636b67a95e83078bb - package_info_plus: 580e9a5f1b6ca5594e7c9ed5f92d1dfb2a66b5e1 - path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564 - pdf_render: 5f9586e5fd49519bf59ea14a6da4851616e91c81 - permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d + open_file_ios: 461db5853723763573e140de3193656f91990d9e + package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c + path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 + pdf_render: 0b4e1a615aab83ce88b26c57753049424908a755 + permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2 PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 - screen_brightness_ios: 5ed898fa50fa82a26171c086ca5e28228f932576 + screen_brightness_ios: 715ca807df953bf676d339f11464e438143ee625 SDWebImage: 73c6079366fea25fa4bb9640d5fb58f0893facd8 - shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7 - sqflite: c35dad70033b8862124f8337cc994a809fcd9fa3 + shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 + sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4 - url_launcher_ios: 694010445543906933d732453a59da0a173ae33d - video_thumbnail: b637e0ad5f588ca9945f6e2c927f73a69a661140 - volume_controller: ca1cde542ee70fad77d388f82e9616488110942b - wakelock_plus: fd58c82b1388f4afe3fe8aa2c856503a262a5b03 + url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe + video_thumbnail: c4e2a3c539e247d4de13cd545344fd2d26ffafd1 + volume_controller: 531ddf792994285c9b17f9d8a7e4dcdd29b3eae9 + wakelock_plus: 78ec7c5b202cab7761af8e2b2b3d0671be6c4ae1 PODFILE CHECKSUM: 8c43c61cb6731d05142f58993481d3c29edf778d -COCOAPODS: 1.16.2 +COCOAPODS: 1.15.2 diff --git a/example/macos/Runner/AppDelegate.swift b/example/macos/Runner/AppDelegate.swift index 8e02df28..b3c17614 100644 --- a/example/macos/Runner/AppDelegate.swift +++ b/example/macos/Runner/AppDelegate.swift @@ -6,4 +6,8 @@ class AppDelegate: FlutterAppDelegate { override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { return true } + + override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool { + return true + } } diff --git a/lib/packages/core/lib/src/views/chatroom/chatroom.dart b/lib/packages/core/lib/src/views/chatroom/chatroom.dart index c8c7cc5c..8f654edc 100644 --- a/lib/packages/core/lib/src/views/chatroom/chatroom.dart +++ b/lib/packages/core/lib/src/views/chatroom/chatroom.dart @@ -131,8 +131,8 @@ class _LMChatroomScreenState extends State { _chatroomActionBloc = LMChatroomActionBloc.instance; _conversationBloc = LMChatConversationBloc.instance; _convActionBloc = LMChatConversationActionBloc.instance; - ScreenSize.init(context, - setWidth: kIsWeb ? _webConfiguration.maxWidth : null); + // ScreenSize.init(context, + // setWidth: kIsWeb ? _webConfiguration.maxWidth : null); size = MediaQuery.sizeOf(context); super.didChangeDependencies(); } @@ -164,6 +164,7 @@ class _LMChatroomScreenState extends State { child: ConstrainedBox( constraints: BoxConstraints( maxWidth: _webConfiguration.maxWidth, + maxHeight: MediaQuery.of(context).size.height, ), child: ValueListenableBuilder( valueListenable: LMChatTheme.themeNotifier, @@ -204,148 +205,158 @@ class _LMChatroomScreenState extends State { ); }, ), - body: SafeArea( - bottom: false, - child: BlocConsumer( - bloc: _chatroomBloc, - listener: (context, state) { - if (state is LMChatroomLoadedState) { - chatroom = state.chatroom; - lastConversationId = state.lastConversationId; - _conversationBloc - .add(LMChatInitialiseConversationsEvent( - chatroomId: chatroom.id, - conversationId: lastConversationId, - )); - _chatroomActionBloc.add(LMChatMarkReadChatroomEvent( - chatroomId: chatroom.id, - )); - LMChatAnalyticsBloc.instance.add( - const LMChatFireAnalyticsEvent( - eventName: LMChatAnalyticsKeys.syncComplete, - eventProperties: {'sync_complete': true}, - ), - ); - LMChatAnalyticsBloc.instance.add( - LMChatFireAnalyticsEvent( - eventName: LMChatAnalyticsKeys.chatroomOpened, - eventProperties: { - 'chatroom_id': chatroom.id, - 'community_id': chatroom.communityId, - 'chatroom_type': chatroom.type, - 'source': 'home_feed', - }, - ), - ); - updateChatBotChatroom(); - } - }, - builder: (chatroomContext, chatroomState) { - if (chatroomState is LMChatroomLoadedState) { - chatroom = chatroomState.chatroom; - actions = chatroomState.actions; - return Column( - children: [ - BlocListener( - bloc: _convActionBloc, - listener: (context, state) { - if (state is LMChatRefreshBarState) { - chatroom = state.chatroom.toChatRoom(); - } - }, - child: _screenBuilder.appBarBuilder.call( - context, - chatroom.toChatRoomViewData(), - _defaultAppBar( - chatroom, - chatroomState.participantCount, - ), - chatroomState.participantCount, + body: Center( + child: ConstrainedBox( + constraints: BoxConstraints( + maxWidth: _webConfiguration.maxWidth, + maxHeight: MediaQuery.of(context).size.height, + ), + child: SafeArea( + bottom: false, + child: BlocConsumer( + bloc: _chatroomBloc, + listener: (context, state) { + if (state is LMChatroomLoadedState) { + chatroom = state.chatroom; + lastConversationId = state.lastConversationId; + _conversationBloc + .add(LMChatInitialiseConversationsEvent( + chatroomId: chatroom.id, + conversationId: lastConversationId, + )); + _chatroomActionBloc.add(LMChatMarkReadChatroomEvent( + chatroomId: chatroom.id, + )); + LMChatAnalyticsBloc.instance.add( + const LMChatFireAnalyticsEvent( + eventName: LMChatAnalyticsKeys.syncComplete, + eventProperties: {'sync_complete': true}, ), - ), - Expanded( - child: Listener( - behavior: HitTestBehavior.opaque, - onPointerDown: (_) { - if (FocusScope.of(context).hasFocus) { - FocusScope.of(context).unfocus(); - } + ); + LMChatAnalyticsBloc.instance.add( + LMChatFireAnalyticsEvent( + eventName: LMChatAnalyticsKeys.chatroomOpened, + eventProperties: { + 'chatroom_id': chatroom.id, + 'community_id': chatroom.communityId, + 'chatroom_type': chatroom.type, + 'source': 'home_feed', }, - child: ValueListenableBuilder( - valueListenable: rebuildConversationList, - builder: (context, value, child) { - return _chatroomList(); - }, - ), ), - ), - BlocBuilder( - bloc: _chatroomActionBloc, - builder: (context, state) { - if (state is LMChatShowEmojiKeyboardState) { - return SafeArea( - child: LMChatReactionKeyboard( - onEmojiSelected: (reaction) { - LMChatAnalyticsBloc.instance.add( - LMChatFireAnalyticsEvent( - eventName: LMChatAnalyticsKeys - .reactionAdded, - eventProperties: { - 'reaction': reaction, - 'from': 'keyboard', - 'message_id': - state.conversationId, - 'chatroom_id': chatroom.id, - }, - ), - ); - _convActionBloc.add( - LMChatPutReaction( - conversationId: - state.conversationId, - reaction: reaction, - ), - ); - _chatroomActionBloc.add( - LMChatHideEmojiKeyboardEvent(), - ); - }, - ), - ); - } - return _screenBuilder.chatBarBuilder( + ); + updateChatBotChatroom(); + } + }, + builder: (chatroomContext, chatroomState) { + if (chatroomState is LMChatroomLoadedState) { + chatroom = chatroomState.chatroom; + actions = chatroomState.actions; + return Column( + children: [ + BlocListener( + bloc: _convActionBloc, + listener: (context, state) { + if (state is LMChatRefreshBarState) { + chatroom = state.chatroom.toChatRoom(); + } + }, + child: _screenBuilder.appBarBuilder.call( context, - LMChatroomBar( - chatroom: chatroom.toChatRoomViewData(), - scrollToBottom: _scrollToBottom, - enableTagging: chatroom.type != 10, + chatroom.toChatRoomViewData(), + _defaultAppBar( + chatroom, + chatroomState.participantCount, ), - ); - }), - if (isOtherUserAIChatbot( - chatroom.toChatRoomViewData())) - LMChatText( - "AI may make mistakes", - style: LMChatTextStyle( - padding: const EdgeInsets.only( - bottom: 10, - top: 6, + chatroomState.participantCount, ), - textStyle: TextStyle( - color: LMChatTheme.theme.onContainer - .withOpacity(0.6), + ), + Expanded( + child: Listener( + behavior: HitTestBehavior.opaque, + onPointerDown: (_) { + if (FocusScope.of(context).hasFocus) { + FocusScope.of(context).unfocus(); + } + }, + child: ValueListenableBuilder( + valueListenable: rebuildConversationList, + builder: (context, value, child) { + return _chatroomList(); + }, + ), ), ), - ) - ], - ); - } - return _screenBuilder.loadingPageWidgetBuilder( - context, - const LMChatSkeletonChatPage(), - ); - }, + BlocBuilder( + bloc: _chatroomActionBloc, + builder: (context, state) { + if (state + is LMChatShowEmojiKeyboardState) { + return SafeArea( + child: LMChatReactionKeyboard( + onEmojiSelected: (reaction) { + LMChatAnalyticsBloc.instance.add( + LMChatFireAnalyticsEvent( + eventName: LMChatAnalyticsKeys + .reactionAdded, + eventProperties: { + 'reaction': reaction, + 'from': 'keyboard', + 'message_id': + state.conversationId, + 'chatroom_id': chatroom.id, + }, + ), + ); + _convActionBloc.add( + LMChatPutReaction( + conversationId: + state.conversationId, + reaction: reaction, + ), + ); + _chatroomActionBloc.add( + LMChatHideEmojiKeyboardEvent(), + ); + }, + ), + ); + } + return _screenBuilder.chatBarBuilder( + context, + LMChatroomBar( + chatroom: + chatroom.toChatRoomViewData(), + scrollToBottom: _scrollToBottom, + enableTagging: chatroom.type != 10, + ), + ); + }), + if (isOtherUserAIChatbot( + chatroom.toChatRoomViewData())) + LMChatText( + "AI may make mistakes", + style: LMChatTextStyle( + padding: const EdgeInsets.only( + bottom: 10, + top: 6, + ), + textStyle: TextStyle( + color: LMChatTheme.theme.onContainer + .withOpacity(0.6), + ), + ), + ) + ], + ); + } + return _screenBuilder.loadingPageWidgetBuilder( + context, + const LMChatSkeletonChatPage(), + ); + }, + ), + ), ), ), ); @@ -766,7 +777,7 @@ class _LMChatroomScreenState extends State { maxLines: 1, padding: EdgeInsets.symmetric( horizontal: size.width * 0.06, - vertical: 2.h, + vertical: size.height * 0.02, ), textStyle: TextStyle( fontSize: 16, diff --git a/lib/packages/core/lib/src/views/community_hybrid_chat/community_hybrid_chat.dart b/lib/packages/core/lib/src/views/community_hybrid_chat/community_hybrid_chat.dart index c6a1450a..01eab2c7 100644 --- a/lib/packages/core/lib/src/views/community_hybrid_chat/community_hybrid_chat.dart +++ b/lib/packages/core/lib/src/views/community_hybrid_chat/community_hybrid_chat.dart @@ -38,8 +38,8 @@ class _LMCommunityHybridChatScreenState @override didChangeDependencies() { super.didChangeDependencies(); - ScreenSize.init(context, - setWidth: kIsWeb ? _webConfiguration.maxWidth : null); + // ScreenSize.init(context, + // setWidth: kIsWeb ? _webConfiguration.maxWidth : null); } @override @@ -109,7 +109,7 @@ class _LMCommunityHybridChatScreenState LMChatStringConstants.homeFeedTitle, style: LMChatTextStyle( textStyle: TextStyle( - fontSize: 22.0.sp, + fontSize: 22, fontWeight: FontWeight.w600, color: LMChatTheme.theme.onContainer, ), diff --git a/lib/packages/core/lib/src/views/member_list/member_list.dart b/lib/packages/core/lib/src/views/member_list/member_list.dart index d74bddb6..f987876f 100644 --- a/lib/packages/core/lib/src/views/member_list/member_list.dart +++ b/lib/packages/core/lib/src/views/member_list/member_list.dart @@ -80,8 +80,8 @@ class _LMChatMemberListState extends State { void didudUpdateWidget(LMChatMemberList oldWidget) { super.didUpdateWidget(oldWidget); - ScreenSize.init(context, - setWidth: kIsWeb ? _webConfiguration.maxWidth : null); + // ScreenSize.init(context, + // setWidth: kIsWeb ? _webConfiguration.maxWidth : null); } @override diff --git a/lib/packages/core/lib/src/widgets/chatroom/chatroom_bar.dart b/lib/packages/core/lib/src/widgets/chatroom/chatroom_bar.dart index 0fdc2cee..c6af96d4 100644 --- a/lib/packages/core/lib/src/widgets/chatroom/chatroom_bar.dart +++ b/lib/packages/core/lib/src/widgets/chatroom/chatroom_bar.dart @@ -464,7 +464,7 @@ class _LMChatroomBarState extends State return Container( width: size.width * 0.9, constraints: BoxConstraints( - minHeight: 4.h, + minHeight: size.height * 0.04, ), decoration: BoxDecoration( color: _themeData.container, @@ -739,15 +739,17 @@ class _LMChatroomBarState extends State child: Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ - ValueListenableBuilder( - valueListenable: _isVoiceButtonHeld, - builder: (context, isHeld, child) { - return isHeld || _isReviewingRecording.value - ? _defRecordingContainer(context) - : _isRespondingAllowed() - ? _defTextField(context) - : _defDisabledTextField(context); - }, + Expanded( + child: ValueListenableBuilder( + valueListenable: _isVoiceButtonHeld, + builder: (context, isHeld, child) { + return isHeld || _isReviewingRecording.value + ? _defRecordingContainer(context) + : _isRespondingAllowed() + ? _defTextField(context) + : _defDisabledTextField(context); + }, + ), ), _isRespondingAllowed() ? ValueListenableBuilder( @@ -907,8 +909,8 @@ class _LMChatroomBarState extends State Container( width: size.width * 0.8, constraints: BoxConstraints( - minHeight: 5.2.h, - maxHeight: 24.h, + minHeight: size.height * 0.052, + maxHeight: size.height * 0.24, ), child: _screenBuilder.chatroomTextField( context, @@ -926,8 +928,8 @@ class _LMChatroomBarState extends State return Container( width: size.width * 0.9, constraints: BoxConstraints( - minHeight: 4.h, - maxHeight: 6.h, + minHeight: size.height * 0.04, + maxHeight: size.height * 0.06, ), decoration: BoxDecoration( color: _themeData.container, @@ -1061,7 +1063,7 @@ class _LMChatroomBarState extends State children: [ Container( width: size.width * 0.8, - height: 6.2.h, + height: size.height * 0.062, decoration: BoxDecoration( color: _themeData.container, borderRadius: BorderRadius.circular(24), @@ -1742,7 +1744,7 @@ class _LMChatroomBarState extends State userText = 'You'; } return LMChatBarHeader( - style: LMChatBarHeaderStyle.basic().copyWith(height: 8.h), + style: LMChatBarHeaderStyle.basic().copyWith(height: size.height * 0.08), titleText: userText, onCanceled: () { chatActionBloc.add(LMChatReplyRemoveEvent()); diff --git a/lib/packages/core/lib/src/widgets/lists/conversation/conversation_list.dart b/lib/packages/core/lib/src/widgets/lists/conversation/conversation_list.dart index 1ae36b61..93fee532 100644 --- a/lib/packages/core/lib/src/widgets/lists/conversation/conversation_list.dart +++ b/lib/packages/core/lib/src/widgets/lists/conversation/conversation_list.dart @@ -15,7 +15,6 @@ import 'package:overlay_support/overlay_support.dart'; import 'package:intl/intl.dart'; import 'package:super_sliver_list/super_sliver_list.dart'; -//TODO: do same change in dm file ( later) /// {@template lm_chat_conversation_list} /// A widget that displays a list of conversations. /// {@endtemplate} @@ -115,107 +114,115 @@ class _LMChatConversationListState extends State { @override Widget build(BuildContext context) { - return MultiBlocListener( - listeners: [ - BlocListener( - bloc: _convActionBloc, - listener: (context, state) { - if (state is LMChatConversationDelete) { - for (LMChatConversationViewData conversation - in state.conversations) { - _updateDeletedConversation(conversation); - } - } - - if (state is LMChatConversationEdited) { - _updateEditedConversation(state.conversationViewData); - } - if (state is LMChatPutReactionState || - state is LMChatPutReactionError || - state is LMChatDeleteReactionState || - state is LMChatDeleteReactionError) { - _updateReactions(state); - } - if (state is LMChatSearchConversationInChatroomState) { - _searchWithMessageId( - state.conversation, pagedListController, widget.chatroomId); - } - }, + return Center( + child: ConstrainedBox( + constraints: BoxConstraints( + maxWidth: LMChatCore.config.webConfiguration.maxWidth, + maxHeight: MediaQuery.sizeOf(context).height, ), - BlocListener( - bloc: _conversationBloc, - listener: (context, state) { - updatePagingControllers(state); - }, - ) - ], - child: ValueListenableBuilder( - valueListenable: rebuildConversationList, - builder: (context, value, child) { - final lmDualSidePagedList = - LMDualSidePagedList( - paginationType: LMChatConversationBloc.replyConversation == null - ? LMPaginationType.top - : LMPaginationType.both, - initialPage: 1, - onPaginationTriggered: _onPaginationTriggered, - paginationController: pagedListController, - padding: const EdgeInsets.symmetric( - vertical: 10, - ), - reverse: true, - firstPageProgressIndicatorBuilder: (context) => - _screenBuilder.loadingListWidgetBuilder( - context, - const LMChatSkeletonChatList(), - ), - newPageProgressIndicatorBuilder: (context) => - _screenBuilder.paginatedLoadingWidgetBuilder( - context, - const LMChatLoader(), + child: MultiBlocListener( + listeners: [ + BlocListener( + bloc: _convActionBloc, + listener: (context, state) { + if (state is LMChatConversationDelete) { + for (LMChatConversationViewData conversation + in state.conversations) { + _updateDeletedConversation(conversation); + } + } + + if (state is LMChatConversationEdited) { + _updateEditedConversation(state.conversationViewData); + } + if (state is LMChatPutReactionState || + state is LMChatPutReactionError || + state is LMChatDeleteReactionState || + state is LMChatDeleteReactionError) { + _updateReactions(state); + } + if (state is LMChatSearchConversationInChatroomState) { + _searchWithMessageId( + state.conversation, pagedListController, widget.chatroomId); + } + }, ), - noItemsFoundIndicatorBuilder: (context) { - return _defaultEmptyView(); - }, - itemBuilder: (context, item, index) { - if (item.isTimeStamp != null && item.isTimeStamp! || - item.state != 0 && item.state != 10 && item.state != null) { - final stateMessage = - LMChatTaggingHelper.extractStateMessage(item.answer); - return _screenBuilder.stateBubbleBuilder( + BlocListener( + bloc: _conversationBloc, + listener: (context, state) { + updatePagingControllers(state); + }, + ) + ], + child: ValueListenableBuilder( + valueListenable: rebuildConversationList, + builder: (context, value, child) { + final lmDualSidePagedList = + LMDualSidePagedList( + paginationType: LMChatConversationBloc.replyConversation == null + ? LMPaginationType.top + : LMPaginationType.both, + initialPage: 1, + onPaginationTriggered: _onPaginationTriggered, + paginationController: pagedListController, + padding: const EdgeInsets.symmetric( + vertical: 10, + ), + reverse: true, + firstPageProgressIndicatorBuilder: (context) => + _screenBuilder.loadingListWidgetBuilder( context, - stateMessage, - _defaultStateBubble(stateMessage), - ); - } - return conversationWithCustomWidget(item) - ? _screenBuilder.customChatBubbleBuilder( - context, item, widget.chatroomId) - : item.memberId == user.id - ? _screenBuilder.sentChatBubbleBuilder( - context, item, _defaultSentChatBubble(item)) - : _screenBuilder.receivedChatBubbleBuilder( - context, item, _defaultReceivedChatBubble(item)); - }, - ); - return Stack( - children: [ - // The list is always in the tree - lmDualSidePagedList, - if (_isPaginatedConversationLoading) - Positioned.fill( - child: Container( - color: LMChatTheme.theme.backgroundColor, - child: _screenBuilder.loadingListWidgetBuilder( + const LMChatSkeletonChatList(), + ), + newPageProgressIndicatorBuilder: (context) => + _screenBuilder.paginatedLoadingWidgetBuilder( + context, + const LMChatLoader(), + ), + noItemsFoundIndicatorBuilder: (context) { + return _defaultEmptyView(); + }, + itemBuilder: (context, item, index) { + if (item.isTimeStamp != null && item.isTimeStamp! || + item.state != 0 && item.state != 10 && item.state != null) { + final stateMessage = + LMChatTaggingHelper.extractStateMessage(item.answer); + return _screenBuilder.stateBubbleBuilder( context, - const LMChatSkeletonChatList(), + stateMessage, + _defaultStateBubble(stateMessage), + ); + } + return conversationWithCustomWidget(item) + ? _screenBuilder.customChatBubbleBuilder( + context, item, widget.chatroomId) + : item.memberId == user.id + ? _screenBuilder.sentChatBubbleBuilder( + context, item, _defaultSentChatBubble(item)) + : _screenBuilder.receivedChatBubbleBuilder( + context, item, _defaultReceivedChatBubble(item)); + }, + ); + return Stack( + children: [ + // The list is always in the tree + lmDualSidePagedList, + if (_isPaginatedConversationLoading) + Positioned.fill( + child: Container( + color: LMChatTheme.theme.backgroundColor, + child: _screenBuilder.loadingListWidgetBuilder( + context, + const LMChatSkeletonChatList(), + ), + ), ), - ), - ), - ], - ); - }, + ], + ); + }, + ), + ), ), ); } diff --git a/lib/packages/ui/lib/src/theme/theme.dart b/lib/packages/ui/lib/src/theme/theme.dart index 3b780095..b3351d06 100644 --- a/lib/packages/ui/lib/src/theme/theme.dart +++ b/lib/packages/ui/lib/src/theme/theme.dart @@ -898,10 +898,10 @@ class LMChatDefaultTheme { } /// Converts a percentage to screen height -extension ScreenHeight on num { - /// Converts a percentage to screen height - double get h => (this / 100) * ScreenSize.height; -} +// extension ScreenHeight on num { +// /// Converts a percentage to screen height +// double get h => (this / 100) * ScreenSize.height; +// } /// Convert integer or double to screen width percentage (w) // extension ScreenWidth on num { @@ -910,61 +910,61 @@ extension ScreenHeight on num { // } /// Extension to convert double to scaled text size -extension ScreenPoints on double { - /// Converts a value to scaled text size - double get sp => ScreenSize.textScale.scale(this); -} +// extension ScreenPoints on double { +// /// Converts a value to scaled text size +// double get sp => ScreenSize.textScale.scale(this); +// } /// Class to initialize the screen size -class ScreenSize { - /// Width of the screen - static late double width; - - /// Height of the screen - static late double height; - - /// Pixel ratio of the screen - static late double pixelRatio; - - /// Text scaler for the screen - static late TextScaler textScale; - - /// Block size for horizontal layout - static late double blockSizeHorizontal; - - /// Block size for vertical layout - static late double blockSizeVertical; - - /// Safe area horizontal padding - static late double _safeAreaHorizontal; - - /// Safe area vertical padding - static late double _safeAreaVertical; - - /// Safe block size for horizontal layout - static late double safeBlockHorizontal; - - /// Safe block size for vertical layout - static late double safeBlockVertical; - - /// Initializes the screen size based on the provided context - static init( - BuildContext context, { - double? setWidth, - }) { - final mediaQuery = MediaQuery.of(context); - pixelRatio = mediaQuery.devicePixelRatio; - textScale = mediaQuery.textScaler; - width = setWidth ?? mediaQuery.size.width; - height = mediaQuery.size.height; - blockSizeHorizontal = width / 100; - blockSizeVertical = height / 100; - _safeAreaHorizontal = mediaQuery.padding.left + mediaQuery.padding.right; - _safeAreaVertical = mediaQuery.padding.top + mediaQuery.padding.bottom; - safeBlockHorizontal = (width - _safeAreaHorizontal) / 100; - safeBlockVertical = (height - _safeAreaVertical) / 100; - } -} +// class ScreenSize { +// /// Width of the screen +// static late double width; + +// /// Height of the screen +// static late double height; + +// /// Pixel ratio of the screen +// static late double pixelRatio; + +// /// Text scaler for the screen +// static late TextScaler textScale; + +// /// Block size for horizontal layout +// static late double blockSizeHorizontal; + +// /// Block size for vertical layout +// static late double blockSizeVertical; + +// /// Safe area horizontal padding +// static late double _safeAreaHorizontal; + +// /// Safe area vertical padding +// static late double _safeAreaVertical; + +// /// Safe block size for horizontal layout +// static late double safeBlockHorizontal; + +// /// Safe block size for vertical layout +// static late double safeBlockVertical; + +// /// Initializes the screen size based on the provided context +// static init( +// BuildContext context, { +// double? setWidth, +// }) { +// final mediaQuery = MediaQuery.of(context); +// pixelRatio = mediaQuery.devicePixelRatio; +// textScale = mediaQuery.textScaler; +// width = setWidth ?? mediaQuery.size.width; +// height = mediaQuery.size.height; +// blockSizeHorizontal = width / 100; +// blockSizeVertical = height / 100; +// _safeAreaHorizontal = mediaQuery.padding.left + mediaQuery.padding.right; +// _safeAreaVertical = mediaQuery.padding.top + mediaQuery.padding.bottom; +// safeBlockHorizontal = (width - _safeAreaHorizontal) / 100; +// safeBlockVertical = (height - _safeAreaVertical) / 100; +// } +// } /// Default dark theme colors and values for the LMChat UI class LMChatDefaultDarkTheme { diff --git a/lib/packages/ui/lib/src/utils/media/media_utils.dart b/lib/packages/ui/lib/src/utils/media/media_utils.dart index 3074ac86..5630ec86 100644 --- a/lib/packages/ui/lib/src/utils/media/media_utils.dart +++ b/lib/packages/ui/lib/src/utils/media/media_utils.dart @@ -456,7 +456,7 @@ Widget getChatBubbleImage( ? Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - SizedBox(height: 2.h), + const SizedBox(height: 8), LMChatIcon( type: LMChatIconType.icon, icon: Icons.play_arrow, diff --git a/lib/packages/ui/lib/src/widgets/conversation/chat_bubble.dart b/lib/packages/ui/lib/src/widgets/conversation/chat_bubble.dart index 6c95bb25..17a8668a 100644 --- a/lib/packages/ui/lib/src/widgets/conversation/chat_bubble.dart +++ b/lib/packages/ui/lib/src/widgets/conversation/chat_bubble.dart @@ -556,7 +556,7 @@ class _LMChatBubbleState extends State { !inStyle.enableClipper ? inStyle.backgroundColor : null, ), constraints: BoxConstraints( - minHeight: 2.h, + minHeight: size.height * 0.02, minWidth: conversation.answer.split('\n').length > 4 ? size.width * 0.4 : size.width * 0.05, @@ -608,14 +608,14 @@ class _LMChatBubbleState extends State { return Padding( padding: isSent ? EdgeInsets.only( - top: _isDeleted ? 0.8.h : 1.h, - bottom: _isDeleted ? 1.2.h : 1.h, + top: _isDeleted ? size.height * 0.008 : size.height * 0.01, + bottom: _isDeleted ? size.height * 0.012 : size.height * 0.01, left: size.width * 0.03, right: size.width * 0.03 + (inStyle.enableClipper ? 10 : 0), ) : EdgeInsets.only( - top: _isDeleted ? 0.8.h : 1.h, - bottom: _isDeleted ? 1.2.h : 1.h, + top: _isDeleted ? size.height * 0.008 : size.height * 0.01, + bottom: _isDeleted ? size.height * 0.012 : size.height * 0.01, left: size.width * 0.033 + (inStyle.enableClipper ? 10 : 0), right: size.width * 0.03, ), @@ -847,7 +847,7 @@ class _LMChatBubbleState extends State { double calculateFinalWidth() { // if the conversation is a poll, return the max width - if (conversation.state == 10) return double.infinity; + if (conversation.state == 10) return size.width; // Get all lines of text final lines = diff --git a/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_reply.dart b/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_reply.dart index 8272df06..75eb13ff 100644 --- a/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_reply.dart +++ b/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_reply.dart @@ -55,7 +55,8 @@ class LMChatBubbleReply extends StatelessWidget { Widget build(BuildContext context) { final theme = LMChatTheme.theme; final inStyle = chatBubbleReplyStyle ?? theme.replyStyle; - final width = MediaQuery.of(context).size.width; + final width = MediaQuery.sizeOf(context).width; + final height = MediaQuery.sizeOf(context).height; return GestureDetector( onTap: onTap, behavior: HitTestBehavior.translucent, @@ -77,7 +78,7 @@ class LMChatBubbleReply extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.start, children: [ Container( - height: 6.h, + height: height * 0.06, width: width * 0.01, decoration: BoxDecoration( color: inStyle.highlightColor ?? theme.primaryColor, diff --git a/lib/packages/ui/lib/src/widgets/media/image.dart b/lib/packages/ui/lib/src/widgets/media/image.dart index 08f605c2..15e6b8df 100644 --- a/lib/packages/ui/lib/src/widgets/media/image.dart +++ b/lib/packages/ui/lib/src/widgets/media/image.dart @@ -150,7 +150,7 @@ class _LMImageState extends State { }) { // Calculate container dimensions final containerWidth = style?.width ?? size.width; - final containerHeight = style?.height ?? 80.h; + final containerHeight = style?.height ?? size.height * 0.8; // Calculate scale to fit final double scaleX = containerWidth / imageWidth; @@ -298,7 +298,7 @@ class _LMImageState extends State { context: context, imageProvider: MemoryImage(widget.imageBytes!), imageWidth: size.width, - imageHeight: 80.h, + imageHeight: size.height * 0.8, ), ); } diff --git a/lib/packages/ui/lib/src/widgets/media/video.dart b/lib/packages/ui/lib/src/widgets/media/video.dart index b95414fa..bb68f300 100644 --- a/lib/packages/ui/lib/src/widgets/media/video.dart +++ b/lib/packages/ui/lib/src/widgets/media/video.dart @@ -128,6 +128,7 @@ class _LMChatVideoState extends State { @override Widget build(BuildContext context) { final width = MediaQuery.sizeOf(context).width; + final height = MediaQuery.sizeOf(context).height; final chatTheme = LMChatTheme.theme; style = widget.style ?? chatTheme.videoStyle; return Container( @@ -144,7 +145,7 @@ class _LMChatVideoState extends State { child: AspectRatio( // aspectRatio: aspectRatio: (style?.width ?? widget.media.width?.toDouble() ?? width) / - (style?.height ?? widget.media.height?.toDouble() ?? 56.h), + (style?.height ?? widget.media.height?.toDouble() ?? height * 0.56), child: MaterialVideoControlsTheme( fullscreen: const MaterialVideoControlsThemeData(), normal: MaterialVideoControlsThemeData( diff --git a/lib/packages/ui/lib/src/widgets/reaction/reaction_bottom_sheet.dart b/lib/packages/ui/lib/src/widgets/reaction/reaction_bottom_sheet.dart index 65b7a8e1..a5d8716e 100644 --- a/lib/packages/ui/lib/src/widgets/reaction/reaction_bottom_sheet.dart +++ b/lib/packages/ui/lib/src/widgets/reaction/reaction_bottom_sheet.dart @@ -84,12 +84,13 @@ class _LMChatReactionBottomSheetState extends State { @override Widget build(BuildContext context) { final width = MediaQuery.of(context).size.width; + final height = MediaQuery.of(context).size.height; initialiseBottomSheetData(); return Container( clipBehavior: Clip.none, padding: style.padding ?? const EdgeInsets.symmetric(horizontal: 18.0), // Use style padding - height: style.height ?? 60.h, // Use style height + height: style.height ?? height * 0.6, // Use style height decoration: BoxDecoration( color: style.backgroundColor ?? LMChatTheme.theme.container, // Use style background color diff --git a/lib/packages/ui/lib/src/widgets/reaction/reaction_emoji_keyboard.dart b/lib/packages/ui/lib/src/widgets/reaction/reaction_emoji_keyboard.dart index 14d9f5e2..6db8f244 100644 --- a/lib/packages/ui/lib/src/widgets/reaction/reaction_emoji_keyboard.dart +++ b/lib/packages/ui/lib/src/widgets/reaction/reaction_emoji_keyboard.dart @@ -30,9 +30,9 @@ class LMChatReactionKeyboard extends StatelessWidget { @override Widget build(BuildContext context) { final effectiveStyle = style ?? LMChatTheme.theme.reactionKeyboardStyle; - + final height = MediaQuery.sizeOf(context).height; return SizedBox( - height: 35.h, + height: height * 0.35, child: EmojiPicker( onEmojiSelected: (category, emoji) async { onEmojiSelected?.call(emoji.emoji); diff --git a/lib/packages/ui/lib/src/widgets/shimmers/chatroom_skeleton.dart b/lib/packages/ui/lib/src/widgets/shimmers/chatroom_skeleton.dart index 50cd9b08..f0c8de67 100644 --- a/lib/packages/ui/lib/src/widgets/shimmers/chatroom_skeleton.dart +++ b/lib/packages/ui/lib/src/widgets/shimmers/chatroom_skeleton.dart @@ -54,8 +54,8 @@ class LMChatSkeletonAppBar extends StatelessWidget { children: [ LMChatSkeletonAnimation( child: Container( - width: 28, - height: 28, + width: 32, + height: 32, decoration: BoxDecoration( color: LMChatTheme.theme.onContainer.withOpacity(0.5), borderRadius: const BorderRadius.all( @@ -147,8 +147,8 @@ class LMChatSkeletonChatBar extends StatelessWidget { LMChatDefaultTheme.kHorizontalPaddingMedium, LMChatSkeletonAnimation( child: Container( - width: 6.h, - height: 6.h, + width: size.height * 0.06, + height: size.height * 0.06, decoration: BoxDecoration( color: LMChatTheme.theme.onContainer.withOpacity(0.5), borderRadius: const BorderRadius.all( @@ -199,7 +199,7 @@ class LMChatSkeletonChatroomList extends StatelessWidget { return Padding( padding: EdgeInsets.symmetric( - vertical: 1.h, + vertical: MediaQuery.sizeOf(context).height * 0.01, ), child: Column( children: list, @@ -220,7 +220,7 @@ class LMChatSkeletonChatroom extends StatelessWidget { padding: EdgeInsets.only( left: 18, right: 18, - bottom: 4.h, + bottom: size.height * 0.04, ), child: Row( children: [ @@ -288,9 +288,10 @@ class LMChatSkeletonChatBubble extends StatelessWidget { final size = MediaQuery.sizeOf(context); return Padding( padding: EdgeInsets.symmetric( - vertical: 1.h, + vertical: size.height * 0.01, ), child: Column( + mainAxisSize: MainAxisSize.min, crossAxisAlignment: isSent ? CrossAxisAlignment.end : CrossAxisAlignment.start, children: [ @@ -301,34 +302,36 @@ class LMChatSkeletonChatBubble extends StatelessWidget { else LMChatSkeletonAnimation( child: Container( - width: 4.5.h, - height: 4.5.h, + width: 32, + height: 32, decoration: BoxDecoration( color: LMChatTheme.theme.onContainer.withOpacity(0.5), - borderRadius: BorderRadius.all( - Radius.circular(3.h), + borderRadius: const BorderRadius.all( + Radius.circular(100), ), ), ), ), LMChatDefaultTheme.kHorizontalPaddingMedium, - Container( - decoration: BoxDecoration( - color: LMChatTheme.theme.container.withOpacity(0.5), - borderRadius: BorderRadius.circular(8), - ), - constraints: BoxConstraints( - maxWidth: size.width * 0.6, - maxHeight: 4.5.h, - minHeight: 4.5.h, - ), - alignment: Alignment.center, - child: LMChatSkeletonAnimation( - child: Container( - width: double.infinity, - decoration: BoxDecoration( - color: LMChatTheme.theme.container.withOpacity(0.5), - borderRadius: BorderRadius.circular(1.h), + Expanded( + child: Container( + decoration: BoxDecoration( + color: LMChatTheme.theme.container.withOpacity(0.5), + borderRadius: BorderRadius.circular(12), + ), + constraints: BoxConstraints( + maxWidth: size.width * 0.6, + maxHeight: size.height * 0.045, + minHeight: size.height * 0.045, + ), + alignment: Alignment.center, + child: LMChatSkeletonAnimation( + child: Container( + width: double.infinity, + decoration: BoxDecoration( + color: LMChatTheme.theme.container.withOpacity(0.5), + borderRadius: BorderRadius.circular(12), + ), ), ), ), @@ -337,12 +340,12 @@ class LMChatSkeletonChatBubble extends StatelessWidget { if (isSent) LMChatSkeletonAnimation( child: Container( - width: 4.5.h, - height: 4.5.h, + width: 32, + height: 32, decoration: BoxDecoration( color: LMChatTheme.theme.onContainer.withOpacity(0.5), - borderRadius: BorderRadius.all( - Radius.circular(3.h), + borderRadius: const BorderRadius.all( + Radius.circular(100), ), ), ), From d9cfc5a22a567d5f49785f6bd058136590aada4b Mon Sep 17 00:00:00 2001 From: Anuj Date: Fri, 6 Jun 2025 16:22:04 +0530 Subject: [PATCH 3/7] fix: fixed overflow for poll --- .../conversation/chat_bubble_footer.dart | 4 ++ .../ui/lib/src/widgets/poll/poll.dart | 65 ++++++++++--------- 2 files changed, 40 insertions(+), 29 deletions(-) diff --git a/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_footer.dart b/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_footer.dart index df89b3f0..68e977bc 100644 --- a/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_footer.dart +++ b/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_footer.dart @@ -89,6 +89,10 @@ class LMChatBubbleFooter extends StatelessWidget { /// Calculates the width of the footer based on its content. double calculateFooterWidth() { + // if the conversation is of poll type, return the max width. + if (conversation.state == 10) { + return 450; + } double? timestamp, edited, result = 0; // Measure the footer text width final footerPainter = TextPainter( diff --git a/lib/packages/ui/lib/src/widgets/poll/poll.dart b/lib/packages/ui/lib/src/widgets/poll/poll.dart index 735fb253..fde96cca 100644 --- a/lib/packages/ui/lib/src/widgets/poll/poll.dart +++ b/lib/packages/ui/lib/src/widgets/poll/poll.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:likeminds_chat_flutter_ui/likeminds_chat_flutter_ui.dart'; import 'package:likeminds_chat_flutter_ui/packages/expandable_text/expandable_text.dart'; @@ -267,38 +266,44 @@ class _LMChatPollState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Row( - children: [ - widget.pollTypeTextBuilder?.call( - context, + SizedBox( + width: 450, + child: Row( + children: [ + widget.pollTypeTextBuilder?.call( + context, + _defPollTypeText(), + ) ?? _defPollTypeText(), - ) ?? - _defPollTypeText(), - widget.pollHeaderSeparatorBuilder?.call(context) ?? - _defHeaderSeparator(), - widget.votingTypeTextBuilder?.call( - context, + widget.pollHeaderSeparatorBuilder?.call(context) ?? + _defHeaderSeparator(), + widget.votingTypeTextBuilder?.call( + context, + _defVotingTypeText(), + ) ?? _defVotingTypeText(), - ) ?? - _defVotingTypeText(), - ], + ], + ), ), LMChatDefaultTheme.kVerticalPaddingMedium, - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - widget.pollIconBuilder?.call( - context, + SizedBox( + width: 450, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + widget.pollIconBuilder?.call( + context, + _defPollIcon(), + ) ?? _defPollIcon(), - ) ?? - _defPollIcon(), - widget.timeLeftTextBuilder?.call( - context, - _defTimeLeftText(), - ) ?? - _defTimeLeftText() ?? - const SizedBox.shrink(), - ], + widget.timeLeftTextBuilder?.call( + context, + _defTimeLeftText(), + ) ?? + _defTimeLeftText() ?? + const SizedBox.shrink(), + ], + ), ), LMChatDefaultTheme.kVerticalPaddingMedium, widget.pollQuestionBuilder?.call(context, _defPollQuestion()) ?? @@ -310,7 +315,9 @@ class _LMChatPollState extends State { ) ?? _defPollSelection(), const SizedBox(height: 8), - _defPollOptionList(), + SizedBox( + width: 450, + child: _defPollOptionList()), //add and option button if (LMChatPollUtils.showAddOption(widget.pollData)) widget.addOptionButtonBuilder?.call(context, From f759814ac9852d1c940eaf220cd3c3950033794a Mon Sep 17 00:00:00 2001 From: Anuj Date: Tue, 10 Jun 2025 14:42:17 +0530 Subject: [PATCH 4/7] feat: added responsiveness --- example/.fvmrc | 2 +- example/lib/onboarding/cred_screen.dart | 6 +- .../views/community_chat/community_chat.dart | 1 + .../core/lib/src/views/explore/explore.dart | 5 +- .../networking_chat/networking_chat.dart | 2 +- .../src/widgets/chatroom/chatroom_bar.dart | 4 +- .../lists/conversation/conversation_list.dart | 16 ++-- .../conversation/dm_conversation_list.dart | 4 +- .../ui/lib/src/utils/media/media_utils.dart | 80 ++++++++++--------- .../src/widgets/conversation/chat_bubble.dart | 2 + .../conversation/chat_bubble_footer.dart | 18 ++++- .../conversation/chat_bubble_reply.dart | 4 +- .../src/widgets/media/document/thumbnail.dart | 5 +- .../lib/src/widgets/media/link_preview.dart | 10 ++- .../ui/lib/src/widgets/poll/poll.dart | 8 +- .../widgets/shimmers/document_shimmer.dart | 7 +- 16 files changed, 105 insertions(+), 69 deletions(-) diff --git a/example/.fvmrc b/example/.fvmrc index 7c3d0b51..4de1bea8 100644 --- a/example/.fvmrc +++ b/example/.fvmrc @@ -1,3 +1,3 @@ { - "flutter": "3.22.0" + "flutter": "3.27.2" } \ No newline at end of file diff --git a/example/lib/onboarding/cred_screen.dart b/example/lib/onboarding/cred_screen.dart index f03907a4..cef96d3e 100644 --- a/example/lib/onboarding/cred_screen.dart +++ b/example/lib/onboarding/cred_screen.dart @@ -274,9 +274,9 @@ class _CredScreenState extends State { Future _onSubmit() async { await LMChatLocalPreference.instance.clearLocalData(); - String apiKey = "b3a5e07d-85c4-4d8d-9ec0-ca07e841b35b"; - String username = "abc"; - String userId = "abc"; + String apiKey = _apiKeyController.text.trim(); + String username = _usernameController.text.trim(); + String userId = _userIdController.text.trim(); // Ensure all data is fetched correctly if (apiKey.isEmpty) { ScaffoldMessenger.of(context).showSnackBar( diff --git a/lib/packages/core/lib/src/views/community_chat/community_chat.dart b/lib/packages/core/lib/src/views/community_chat/community_chat.dart index 4bb6bbe0..d7bcdc99 100644 --- a/lib/packages/core/lib/src/views/community_chat/community_chat.dart +++ b/lib/packages/core/lib/src/views/community_chat/community_chat.dart @@ -394,6 +394,7 @@ class _LMCommunityChatScreenState extends State (chatroom.lastConversation?.state == 10 && chatroom.lastConversation?.deletedByUserId == null) ? getChatItemAttachmentTile( + context, message, prefix: getUserHomePrefixPreviewMessage(chatroom.lastConversation!), diff --git a/lib/packages/core/lib/src/views/explore/explore.dart b/lib/packages/core/lib/src/views/explore/explore.dart index cf067619..c4e91e8e 100644 --- a/lib/packages/core/lib/src/views/explore/explore.dart +++ b/lib/packages/core/lib/src/views/explore/explore.dart @@ -169,7 +169,10 @@ class _LMChatExplorePageState extends State { style: LMChatTheme.theme.appBarStyle.copyWith( height: 76, gap: size.width * 0.04, - padding: EdgeInsets.all(size.width * 0.04), + padding: EdgeInsets.symmetric( + horizontal: size.width * 0.04, + vertical: size.height * 0.01, + ), ), title: LMChatText( 'Explore Chatrooms', diff --git a/lib/packages/core/lib/src/views/networking_chat/networking_chat.dart b/lib/packages/core/lib/src/views/networking_chat/networking_chat.dart index 68887440..c7057eb6 100644 --- a/lib/packages/core/lib/src/views/networking_chat/networking_chat.dart +++ b/lib/packages/core/lib/src/views/networking_chat/networking_chat.dart @@ -302,7 +302,7 @@ class _LMNetworkingChatScreenState extends State subtitle: ((chatroom.lastConversation?.attachmentsUploaded ?? false) && chatroom.lastConversation?.deletedByUserId == null) ? getChatItemAttachmentTile( - message, chatroom.attachments, chatroom.lastConversation!) + context, message, chatroom.attachments, chatroom.lastConversation!) : LMChatText( chatroom.lastConversation!.state != 0 ? LMChatTaggingHelper.extractStateMessage(message) diff --git a/lib/packages/core/lib/src/widgets/chatroom/chatroom_bar.dart b/lib/packages/core/lib/src/widgets/chatroom/chatroom_bar.dart index c6af96d4..00a66a5f 100644 --- a/lib/packages/core/lib/src/widgets/chatroom/chatroom_bar.dart +++ b/lib/packages/core/lib/src/widgets/chatroom/chatroom_bar.dart @@ -1751,8 +1751,8 @@ class _LMChatroomBarState extends State }, subtitle: ((replyToConversation?.attachmentsUploaded ?? false) && replyToConversation?.deletedByUserId == null) - ? getChatItemAttachmentTile( - message, replyConversationAttachments ?? [], replyToConversation!) + ? getChatItemAttachmentTile(context, message, + replyConversationAttachments ?? [], replyToConversation!) : LMChatText( replyToConversation!.state != 0 ? LMChatTaggingHelper.extractStateMessage(message) diff --git a/lib/packages/core/lib/src/widgets/lists/conversation/conversation_list.dart b/lib/packages/core/lib/src/widgets/lists/conversation/conversation_list.dart index 93fee532..f73d9dbf 100644 --- a/lib/packages/core/lib/src/widgets/lists/conversation/conversation_list.dart +++ b/lib/packages/core/lib/src/widgets/lists/conversation/conversation_list.dart @@ -132,7 +132,7 @@ class _LMChatConversationListState extends State { _updateDeletedConversation(conversation); } } - + if (state is LMChatConversationEdited) { _updateEditedConversation(state.conversationViewData); } @@ -143,8 +143,8 @@ class _LMChatConversationListState extends State { _updateReactions(state); } if (state is LMChatSearchConversationInChatroomState) { - _searchWithMessageId( - state.conversation, pagedListController, widget.chatroomId); + _searchWithMessageId(state.conversation, pagedListController, + widget.chatroomId); } }, ), @@ -185,7 +185,9 @@ class _LMChatConversationListState extends State { }, itemBuilder: (context, item, index) { if (item.isTimeStamp != null && item.isTimeStamp! || - item.state != 0 && item.state != 10 && item.state != null) { + item.state != 0 && + item.state != 10 && + item.state != null) { final stateMessage = LMChatTaggingHelper.extractStateMessage(item.answer); return _screenBuilder.stateBubbleBuilder( @@ -398,7 +400,7 @@ class _LMChatConversationListState extends State { return oldWidget.copyWith( subtitle: ((reply.attachmentsUploaded ?? false) && reply.deletedByUserId == null) - ? getChatItemAttachmentTile(message, + ? getChatItemAttachmentTile(context, message, conversationAttachmentsMeta[reply.id.toString()] ?? [], reply) : LMChatText( reply.state != 0 @@ -571,7 +573,7 @@ class _LMChatConversationListState extends State { return oldWidget.copyWith( subtitle: ((reply.attachmentsUploaded ?? false) && reply.deletedByUserId == null) - ? getChatItemAttachmentTile(message, + ? getChatItemAttachmentTile(context, message, conversationAttachmentsMeta[reply.id.toString()] ?? [], reply) : LMChatText( reply.state != 0 @@ -1571,4 +1573,4 @@ class _LMChatConversationListState extends State { bool conversationWithCustomWidget(LMChatConversationViewData conversation) { return conversation.widgetId != null && conversation.widget != null; } -} \ No newline at end of file +} diff --git a/lib/packages/core/lib/src/widgets/lists/conversation/dm_conversation_list.dart b/lib/packages/core/lib/src/widgets/lists/conversation/dm_conversation_list.dart index 7d1d48fc..50628e73 100644 --- a/lib/packages/core/lib/src/widgets/lists/conversation/dm_conversation_list.dart +++ b/lib/packages/core/lib/src/widgets/lists/conversation/dm_conversation_list.dart @@ -351,7 +351,7 @@ class _LMChatDMConversationListState extends State { return oldWidget.copyWith( subtitle: ((reply.attachmentsUploaded ?? false) && reply.deletedByUserId == null) - ? getChatItemAttachmentTile(message, + ? getChatItemAttachmentTile(context, message, conversationAttachmentsMeta[reply.id.toString()] ?? [], reply) : LMChatText( reply.state != 0 @@ -511,7 +511,7 @@ class _LMChatDMConversationListState extends State { return oldWidget.copyWith( subtitle: ((reply.attachmentsUploaded ?? false) && reply.deletedByUserId == null) - ? getChatItemAttachmentTile(message, + ? getChatItemAttachmentTile(context, message, conversationAttachmentsMeta[reply.id.toString()] ?? [], reply) : LMChatText( reply.state != 0 diff --git a/lib/packages/ui/lib/src/utils/media/media_utils.dart b/lib/packages/ui/lib/src/utils/media/media_utils.dart index 5630ec86..007bf13a 100644 --- a/lib/packages/ui/lib/src/utils/media/media_utils.dart +++ b/lib/packages/ui/lib/src/utils/media/media_utils.dart @@ -47,11 +47,14 @@ const List mediaExtentions = [ /// /// Returns a [Widget] that represents the attachment tile. Widget getChatItemAttachmentTile( + BuildContext context, String message, List mediaFiles, LMChatConversationViewData conversation, { String? prefix, }) { + final width = MediaQuery.sizeOf(context).width; + final imageWidth = width < 500 ? width * 0.35 : width * 0.25; String answerText = LMChatTaggingHelper.convertRouteToTag(conversation.answer, withTilde: false) ?? ''; @@ -360,7 +363,8 @@ Widget getChatItemAttachmentTile( ), ), LMChatDefaultTheme.kHorizontalPaddingSmall, - Expanded( + SizedBox( + width: imageWidth, child: Text( text, maxLines: 1, @@ -574,12 +578,12 @@ Widget getImageMessage( return const SizedBox(); } final width = MediaQuery.sizeOf(context).width; - + final imageWidth = width < 500 ? width * 0.45 : width * 0.27; if (conversationAttachments.length == 1) { return getChatBubbleImage( conversationAttachments.first, - height: width * 0.55, - width: width * 0.55, + height: imageWidth, + width: imageWidth, ); } else if (conversationAttachments.length == 2) { return Row( @@ -587,14 +591,14 @@ Widget getImageMessage( children: [ getChatBubbleImage( conversationAttachments[0], - height: width * 0.25, - width: width * 0.25, + height: imageWidth * 0.50, + width: imageWidth * 0.50, ), kHorizontalPaddingSmall, getChatBubbleImage( conversationAttachments[1], - height: width * 0.25, - width: width * 0.25, + height: imageWidth * 0.50, + width: imageWidth * 0.50, ), ], ); @@ -604,13 +608,13 @@ Widget getImageMessage( children: [ getChatBubbleImage( conversationAttachments[0], - height: width * 0.25, - width: width * 0.25, + height: imageWidth * 0.5, + width: imageWidth * 0.5, ), kHorizontalPaddingSmall, Container( - height: width * 0.25, - width: width * 0.25, + height: imageWidth * 0.5, + width: imageWidth * 0.5, clipBehavior: Clip.hardEdge, decoration: BoxDecoration( borderRadius: BorderRadius.circular(6.0), @@ -619,13 +623,13 @@ Widget getImageMessage( children: [ getChatBubbleImage( conversationAttachments[1], - height: width * 0.25, - width: width * 0.25, + height: imageWidth * 0.5, + width: imageWidth * 0.5, ), Positioned( child: Container( - height: width * 0.25, - width: width * 0.25, + height: imageWidth * 0.5, + width: imageWidth * 0.5, alignment: Alignment.center, color: LMChatTheme.theme.container.withOpacity(0.5), child: LMChatText( @@ -653,14 +657,14 @@ Widget getImageMessage( children: [ getChatBubbleImage( conversationAttachments[0], - height: width * 0.25, - width: width * 0.25, + height: imageWidth * 0.5, + width: imageWidth * 0.5, ), kHorizontalPaddingSmall, getChatBubbleImage( conversationAttachments[1], - height: width * 0.25, - width: width * 0.25, + height: imageWidth * 0.5, + width: imageWidth * 0.5, ), ], ), @@ -670,14 +674,14 @@ Widget getImageMessage( children: [ getChatBubbleImage( conversationAttachments[2], - height: width * 0.25, - width: width * 0.25, + height: imageWidth * 0.5, + width: imageWidth * 0.5, ), kHorizontalPaddingSmall, getChatBubbleImage( conversationAttachments[3], - height: width * 0.25, - width: width * 0.25, + height: imageWidth * 0.5, + width: imageWidth * 0.5, ), ], ), @@ -691,14 +695,14 @@ Widget getImageMessage( children: [ getChatBubbleImage( conversationAttachments[0], - height: width * 0.25, - width: width * 0.25, + height: imageWidth * 0.5, + width: imageWidth * 0.5, ), kHorizontalPaddingSmall, getChatBubbleImage( conversationAttachments[1], - height: width * 0.25, - width: width * 0.25, + height: imageWidth * 0.5, + width: imageWidth * 0.5, ), ], ), @@ -708,13 +712,13 @@ Widget getImageMessage( children: [ getChatBubbleImage( conversationAttachments[2], - height: width * 0.25, - width: width * 0.25, + height: imageWidth * 0.5, + width: imageWidth * 0.5, ), kHorizontalPaddingSmall, Container( - height: width * 0.25, - width: width * 0.25, + height: imageWidth * 0.5, + width: imageWidth * 0.5, clipBehavior: Clip.hardEdge, decoration: BoxDecoration(borderRadius: BorderRadius.circular(6.0)), @@ -722,13 +726,13 @@ Widget getImageMessage( children: [ getChatBubbleImage( conversationAttachments[3], - height: width * 0.25, - width: width * 0.25, + height: imageWidth * 0.5, + width: imageWidth * 0.5, ), Positioned( child: Container( - height: width * 0.25, - width: width * 0.25, + height: imageWidth * 0.5, + width: imageWidth * 0.5, alignment: Alignment.center, color: LMChatTheme.theme.container.withOpacity(0.5), child: LMChatText( @@ -774,8 +778,8 @@ Widget getImageFileMessage( children: [ getFileImageTile( mediaFiles[0], - height: width * 0.25, - width: width * 0.25, + height: width * 0.35, + width: width * 0.35, ), LMChatDefaultTheme.kHorizontalPaddingSmall, getFileImageTile( diff --git a/lib/packages/ui/lib/src/widgets/conversation/chat_bubble.dart b/lib/packages/ui/lib/src/widgets/conversation/chat_bubble.dart index 17a8668a..e74b0ae4 100644 --- a/lib/packages/ui/lib/src/widgets/conversation/chat_bubble.dart +++ b/lib/packages/ui/lib/src/widgets/conversation/chat_bubble.dart @@ -1,3 +1,5 @@ +import 'dart:math'; + import 'package:flutter/material.dart'; import 'package:likeminds_chat_flutter_ui/packages/expandable_text/expandable_text.dart'; import 'package:likeminds_chat_flutter_ui/src/models/models.dart'; diff --git a/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_footer.dart b/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_footer.dart index 68e977bc..e25ce68e 100644 --- a/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_footer.dart +++ b/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_footer.dart @@ -20,8 +20,10 @@ class LMChatBubbleFooter extends StatelessWidget { /// Optional timestamp text widget. final Widget? voiceDuration; + late double _screenWidth; + /// Creates an instance of [LMChatBubbleFooter]. - const LMChatBubbleFooter({ + LMChatBubbleFooter({ super.key, required this.conversation, // Required conversation data. this.textWidth, // Accept the width. @@ -33,6 +35,8 @@ class LMChatBubbleFooter extends StatelessWidget { @override Widget build(BuildContext context) { + _screenWidth = MediaQuery.sizeOf(context).width; + // Builds the footer widget. return SizedBox( width: calculateFooterWidth(), @@ -90,8 +94,18 @@ class LMChatBubbleFooter extends StatelessWidget { /// Calculates the width of the footer based on its content. double calculateFooterWidth() { // if the conversation is of poll type, return the max width. + final _relativeWidth = _screenWidth < 500 ? _screenWidth * 0.55 : _screenWidth * 0.35; if (conversation.state == 10) { - return 450; + return _relativeWidth * 0.75; + } + if (conversation.attachmentCount == 1 || conversation.replyConversationObject != null) { + return _relativeWidth * 0.75; + } + if ((conversation.attachmentCount??0) > 1) { + return _relativeWidth * 0.80; + } + if (conversation.ogTags != null) { + return _relativeWidth; } double? timestamp, edited, result = 0; // Measure the footer text width diff --git a/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_reply.dart b/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_reply.dart index 75eb13ff..c88c5803 100644 --- a/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_reply.dart +++ b/lib/packages/ui/lib/src/widgets/conversation/chat_bubble_reply.dart @@ -56,6 +56,7 @@ class LMChatBubbleReply extends StatelessWidget { final theme = LMChatTheme.theme; final inStyle = chatBubbleReplyStyle ?? theme.replyStyle; final width = MediaQuery.sizeOf(context).width; + final relativeWidth = width < 500 ? width * 0.55 : width * 0.35; final height = MediaQuery.sizeOf(context).height; return GestureDetector( onTap: onTap, @@ -85,7 +86,8 @@ class LMChatBubbleReply extends StatelessWidget { ), ), kHorizontalPaddingMedium, - Expanded( + SizedBox( + width: relativeWidth * 0.82, child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start, diff --git a/lib/packages/ui/lib/src/widgets/media/document/thumbnail.dart b/lib/packages/ui/lib/src/widgets/media/document/thumbnail.dart index ddd1beb2..cace8c37 100644 --- a/lib/packages/ui/lib/src/widgets/media/document/thumbnail.dart +++ b/lib/packages/ui/lib/src/widgets/media/document/thumbnail.dart @@ -103,6 +103,7 @@ class _LMChatDocumentThumbnailState extends State { child: Stack( children: [ SizedBox( + width: width < 500 ? width * 0.45 : width * 0.27, child: documentFile!, ), widget.showOverlay @@ -114,7 +115,9 @@ class _LMChatDocumentThumbnailState extends State { style: style?.overlayStyle ?? LMChatDocumentTileStyle( padding: EdgeInsets.zero, - width: width * 0.52, + width: width < 500 + ? width * 0.45 + : width * 0.27, backgroundColor: LMChatTheme.theme.container, ), diff --git a/lib/packages/ui/lib/src/widgets/media/link_preview.dart b/lib/packages/ui/lib/src/widgets/media/link_preview.dart index ee95fbe8..080bdd0d 100644 --- a/lib/packages/ui/lib/src/widgets/media/link_preview.dart +++ b/lib/packages/ui/lib/src/widgets/media/link_preview.dart @@ -60,6 +60,7 @@ class LMChatLinkPreview extends StatelessWidget { @override Widget build(BuildContext context) { + final screenWidth = MediaQuery.sizeOf(context).width; return ClipRRect( borderRadius: style?.decoration?.borderRadius ?? BorderRadius.circular(8), child: GestureDetector( @@ -151,14 +152,15 @@ class LMChatLinkPreview extends StatelessWidget { imageUrl: ogTags.imageUrl, style: style?.imageStyle ?? const LMChatImageStyle( - height: 190, - width: 225, + height: 20, + width: 20, boxFit: BoxFit.fill, errorWidget: LMChatIcon( type: LMChatIconType.icon, icon: Icons.link, style: LMChatIconStyle( size: 32, + boxSize: 20, ), ), ), @@ -271,7 +273,6 @@ class LMChatLinkPreviewStyle { left: 8, right: 30, ), - width: double.infinity, imageStyle: const LMChatImageStyle( height: 190, width: double.infinity, @@ -280,7 +281,8 @@ class LMChatLinkPreviewStyle { type: LMChatIconType.icon, icon: Icons.link, style: LMChatIconStyle( - size: 32, + size: 24, + boxSize: 32, ), ), ), diff --git a/lib/packages/ui/lib/src/widgets/poll/poll.dart b/lib/packages/ui/lib/src/widgets/poll/poll.dart index fde96cca..269ff414 100644 --- a/lib/packages/ui/lib/src/widgets/poll/poll.dart +++ b/lib/packages/ui/lib/src/widgets/poll/poll.dart @@ -251,6 +251,8 @@ class _LMChatPollState extends State { @override Widget build(BuildContext context) { + final width = MediaQuery.sizeOf(context).width; + final relativeWidth = width < 500 ? width * 0.45 : width * 0.27; return ValueListenableBuilder( valueListenable: _rebuildPollWidget, builder: (context, value, __) { @@ -267,7 +269,7 @@ class _LMChatPollState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox( - width: 450, + width: relativeWidth, child: Row( children: [ widget.pollTypeTextBuilder?.call( @@ -287,7 +289,7 @@ class _LMChatPollState extends State { ), LMChatDefaultTheme.kVerticalPaddingMedium, SizedBox( - width: 450, + width: relativeWidth, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ @@ -316,7 +318,7 @@ class _LMChatPollState extends State { _defPollSelection(), const SizedBox(height: 8), SizedBox( - width: 450, + width: relativeWidth, child: _defPollOptionList()), //add and option button if (LMChatPollUtils.showAddOption(widget.pollData)) diff --git a/lib/packages/ui/lib/src/widgets/shimmers/document_shimmer.dart b/lib/packages/ui/lib/src/widgets/shimmers/document_shimmer.dart index 694c8fe4..63985454 100644 --- a/lib/packages/ui/lib/src/widgets/shimmers/document_shimmer.dart +++ b/lib/packages/ui/lib/src/widgets/shimmers/document_shimmer.dart @@ -15,11 +15,12 @@ class LMChatDocumentShimmer extends StatelessWidget { @override Widget build(BuildContext context) { final double width = MediaQuery.of(context).size.width; + final relativeWidth = width < 500 ? width * 0.55 : width * 0.35; final double height = MediaQuery.of(context).size.height; final style = this.style ?? LMChatDocumentShimmerStyle.basic(); return Container( height: style.height ?? 80, // Default height - width: style.width ?? width * 0.55, // Default width + width: style.width ?? relativeWidth , // Default width margin: style.margin, decoration: BoxDecoration( border: Border.all( @@ -50,7 +51,7 @@ class LMChatDocumentShimmer extends StatelessWidget { children: [ Container( height: style.titleHeight ?? 16, // Default title height - width: style.titleWidth ?? width * 0.28, // Default title width + width: style.titleWidth ?? relativeWidth * 0.5, // Default title width color: LMChatTheme.theme.container, ), kVerticalPaddingMedium, @@ -61,7 +62,7 @@ class LMChatDocumentShimmer extends StatelessWidget { height: style.subtitleHeight ?? 12, // Default subtitle height width: - style.subtitleWidth ?? width * 0.16, // Default subtitle width + style.subtitleWidth ?? relativeWidth * 0.25, // Default subtitle width color: LMChatTheme.theme.container, ), kHorizontalPaddingXSmall, From 20882e8dbba11e2b30d61ae5559a8dca069627d6 Mon Sep 17 00:00:00 2001 From: Anuj Date: Tue, 10 Jun 2025 15:56:28 +0530 Subject: [PATCH 5/7] fix: fixed text width --- .../ui/lib/src/utils/media/media_utils.dart | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/lib/packages/ui/lib/src/utils/media/media_utils.dart b/lib/packages/ui/lib/src/utils/media/media_utils.dart index 007bf13a..800fdcbe 100644 --- a/lib/packages/ui/lib/src/utils/media/media_utils.dart +++ b/lib/packages/ui/lib/src/utils/media/media_utils.dart @@ -119,15 +119,18 @@ Widget getChatItemAttachmentTile( ), ), ), - LMChatText( - answerText, - style: LMChatTextStyle( - maxLines: 1, - textStyle: TextStyle( - overflow: TextOverflow.ellipsis, - fontSize: 14, - fontWeight: FontWeight.normal, - color: LMChatTheme.theme.onContainer.withOpacity(0.8), + SizedBox( + width: width * 0.5, + child: LMChatText( + answerText, + style: LMChatTextStyle( + maxLines: 1, + textStyle: TextStyle( + overflow: TextOverflow.ellipsis, + fontSize: 14, + fontWeight: FontWeight.normal, + color: LMChatTheme.theme.onContainer.withOpacity(0.8), + ), ), ), ), From 3ce8865d094e4eaaf1b2947ae173c91b5525945e Mon Sep 17 00:00:00 2001 From: Anuj Date: Tue, 10 Jun 2025 16:10:46 +0530 Subject: [PATCH 6/7] chore: added deprecation notice --- lib/packages/ui/lib/src/theme/theme.dart | 116 ++++++++++------------- 1 file changed, 50 insertions(+), 66 deletions(-) diff --git a/lib/packages/ui/lib/src/theme/theme.dart b/lib/packages/ui/lib/src/theme/theme.dart index b3351d06..11104a75 100644 --- a/lib/packages/ui/lib/src/theme/theme.dart +++ b/lib/packages/ui/lib/src/theme/theme.dart @@ -1,4 +1,3 @@ -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:likeminds_chat_flutter_ui/src/widgets/widgets.dart'; @@ -897,74 +896,59 @@ class LMChatDefaultTheme { SizedBox(height: kPaddingMedium); } -/// Converts a percentage to screen height -// extension ScreenHeight on num { -// /// Converts a percentage to screen height -// double get h => (this / 100) * ScreenSize.height; -// } +@Deprecated('This class is deprecated and will be removed in future versions') -/// Convert integer or double to screen width percentage (w) -// extension ScreenWidth on num { -// /// Converts a percentage to screen width -// double get w => (this / 100) * ScreenSize.width; -// } +/// Class to initialize the screen size +class ScreenSize { + /// Width of the screen + static late double width; -/// Extension to convert double to scaled text size -// extension ScreenPoints on double { -// /// Converts a value to scaled text size -// double get sp => ScreenSize.textScale.scale(this); -// } + /// Height of the screen + static late double height; -/// Class to initialize the screen size -// class ScreenSize { -// /// Width of the screen -// static late double width; - -// /// Height of the screen -// static late double height; - -// /// Pixel ratio of the screen -// static late double pixelRatio; - -// /// Text scaler for the screen -// static late TextScaler textScale; - -// /// Block size for horizontal layout -// static late double blockSizeHorizontal; - -// /// Block size for vertical layout -// static late double blockSizeVertical; - -// /// Safe area horizontal padding -// static late double _safeAreaHorizontal; - -// /// Safe area vertical padding -// static late double _safeAreaVertical; - -// /// Safe block size for horizontal layout -// static late double safeBlockHorizontal; - -// /// Safe block size for vertical layout -// static late double safeBlockVertical; - -// /// Initializes the screen size based on the provided context -// static init( -// BuildContext context, { -// double? setWidth, -// }) { -// final mediaQuery = MediaQuery.of(context); -// pixelRatio = mediaQuery.devicePixelRatio; -// textScale = mediaQuery.textScaler; -// width = setWidth ?? mediaQuery.size.width; -// height = mediaQuery.size.height; -// blockSizeHorizontal = width / 100; -// blockSizeVertical = height / 100; -// _safeAreaHorizontal = mediaQuery.padding.left + mediaQuery.padding.right; -// _safeAreaVertical = mediaQuery.padding.top + mediaQuery.padding.bottom; -// safeBlockHorizontal = (width - _safeAreaHorizontal) / 100; -// safeBlockVertical = (height - _safeAreaVertical) / 100; -// } -// } + /// Pixel ratio of the screen + static late double pixelRatio; + + /// Text scaler for the screen + static late TextScaler textScale; + + /// Block size for horizontal layout + static late double blockSizeHorizontal; + + /// Block size for vertical layout + static late double blockSizeVertical; + + /// Safe area horizontal padding + static late double _safeAreaHorizontal; + + /// Safe area vertical padding + static late double _safeAreaVertical; + + /// Safe block size for horizontal layout + static late double safeBlockHorizontal; + + /// Safe block size for vertical layout + static late double safeBlockVertical; + + @Deprecated('This method is deprecated and will be removed in future versions, currently not being used anywhere') + /// Initializes the screen size based on the provided context + static init( + BuildContext context, { + double? setWidth, + }) { + final mediaQuery = MediaQuery.of(context); + pixelRatio = mediaQuery.devicePixelRatio; + textScale = mediaQuery.textScaler; + width = setWidth ?? mediaQuery.size.width; + height = mediaQuery.size.height; + blockSizeHorizontal = width / 100; + blockSizeVertical = height / 100; + _safeAreaHorizontal = mediaQuery.padding.left + mediaQuery.padding.right; + _safeAreaVertical = mediaQuery.padding.top + mediaQuery.padding.bottom; + safeBlockHorizontal = (width - _safeAreaHorizontal) / 100; + safeBlockVertical = (height - _safeAreaVertical) / 100; + } +} /// Default dark theme colors and values for the LMChat UI class LMChatDefaultDarkTheme { From 5efe50b0ee5434310c3f8c74a0c47be984604827 Mon Sep 17 00:00:00 2001 From: Anuj Date: Tue, 10 Jun 2025 17:11:39 +0530 Subject: [PATCH 7/7] fix: fixed past date issue in poll creation --- .../src/blocs/conversation/handler/post_poll_handler.dart | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/packages/core/lib/src/blocs/conversation/handler/post_poll_handler.dart b/lib/packages/core/lib/src/blocs/conversation/handler/post_poll_handler.dart index c37104ca..9618d3c7 100644 --- a/lib/packages/core/lib/src/blocs/conversation/handler/post_poll_handler.dart +++ b/lib/packages/core/lib/src/blocs/conversation/handler/post_poll_handler.dart @@ -31,13 +31,17 @@ void postPollConversationHandler( final PostPollConversationRequest pollRequest = requestBuilder.build(); final DateTime dateTime = DateTime.now(); + final String date = + DateFormat('dd MMM yyyy').format(dateTime); // create local conversation LMChatConversationViewData conversationViewData = (LMChatConversationViewDataBuilder() ..allowAddOption(event.allowAddOption) ..answer(event.text) ..chatroomId(event.chatroomId) - ..createdAt("") + ..createdAt(dateTime.millisecondsSinceEpoch.toString()) + ..createdEpoch(dateTime.millisecondsSinceEpoch) + ..date(date) ..expiryTime(event.expiryTime) ..memberId(user.id) ..member(user.toUserViewData())