diff --git a/CHANGELOG.md b/CHANGELOG.md
index 737c29b..34b6624 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,28 @@
+## 2.1.3+1
+
+### New Features
+
+* Introduced [a new custom internationalization language scheme](https://www.tencentcloud.com/document/product/1047/52154?from=pub) that supports adding language packs, adding or modifying entries, and makes customizing i18n more accessible. This feature helps your app achieve a more convenient globalization process and easier customer acquisition worldwide.
+* Provided a seamless experience for previewing large images and playing videos within desktop environments (applications and web) by avoiding frequent page transitions. Enhanced the user experience for image previews and video playback. Please note that video playback is currently supported only on the web and not in desktop applications.
+* Supported to integrate with the new online customer service plugin (tencent_cloud_chat_customer_service_plugin).
+* Added two new life cycle hooks, `messageDidSend` and `messageShouldMount` to `ChatLifeCycle`.
+
+### Improvements
+
+* Optimized the usage, interface, and interaction of the sticker panel.
+* Enhanced mobile video playback interaction and UI.
+* Refined the error prompt when sending a 0 KB file fails.
+* Enabled users to close modals on desktop by clicking the bottom gray overlay area.
+* Improved the UI and interaction of image and video messages in the message list.
+* Added the ability to open self-sent file messages without downloading.
+* Optimized the download status animation of file messages on the web.
+
+### Bug Fixes
+
+* Fixed an issue preventing mobile image previews from being dragged after zooming.
+* Resolved an issue that might cause the message selection status not to be removed after canceling a message forward action.
+* Addressed an issue that might cause the microphone usage not to end after sending a voice message, which means the microphone was not released.
+
## 2.1.2
### New Features
diff --git a/README.md b/README.md
index 86273a6..56e2d57 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,41 @@
+
diff --git a/example/linux/flutter/generated_plugin_registrant.cc b/example/linux/flutter/generated_plugin_registrant.cc
index 2e68889..681dc9c 100644
--- a/example/linux/flutter/generated_plugin_registrant.cc
+++ b/example/linux/flutter/generated_plugin_registrant.cc
@@ -8,6 +8,7 @@
#include
#include
+#include
#include
#include
@@ -18,6 +19,9 @@ void fl_register_plugins(FlPluginRegistry* registry) {
g_autoptr(FlPluginRegistrar) desktop_drop_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "DesktopDropPlugin");
desktop_drop_plugin_register_with_registrar(desktop_drop_registrar);
+ g_autoptr(FlPluginRegistrar) file_selector_linux_registrar =
+ fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin");
+ file_selector_plugin_register_with_registrar(file_selector_linux_registrar);
g_autoptr(FlPluginRegistrar) pasteboard_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "PasteboardPlugin");
pasteboard_plugin_register_with_registrar(pasteboard_registrar);
diff --git a/example/linux/flutter/generated_plugins.cmake b/example/linux/flutter/generated_plugins.cmake
index fa2eba0..2c433ef 100644
--- a/example/linux/flutter/generated_plugins.cmake
+++ b/example/linux/flutter/generated_plugins.cmake
@@ -5,6 +5,7 @@
list(APPEND FLUTTER_PLUGIN_LIST
audioplayers_linux
desktop_drop
+ file_selector_linux
pasteboard
url_launcher_linux
)
diff --git a/example/macos/Flutter/GeneratedPluginRegistrant.swift b/example/macos/Flutter/GeneratedPluginRegistrant.swift
index 05deca4..7913e42 100644
--- a/example/macos/Flutter/GeneratedPluginRegistrant.swift
+++ b/example/macos/Flutter/GeneratedPluginRegistrant.swift
@@ -9,6 +9,7 @@ import audioplayers_darwin
import desktop_drop
import device_info_plus
import fc_native_video_thumbnail
+import file_selector_macos
import package_info_plus
import pasteboard
import path_provider_foundation
@@ -22,6 +23,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
DesktopDropPlugin.register(with: registry.registrar(forPlugin: "DesktopDropPlugin"))
DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
FcNativeVideoThumbnailPlugin.register(with: registry.registrar(forPlugin: "FcNativeVideoThumbnailPlugin"))
+ FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin"))
PasteboardPlugin.register(with: registry.registrar(forPlugin: "PasteboardPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
diff --git a/example/pubspec.lock b/example/pubspec.lock
index fcb29e1..88fe6bd 100644
--- a/example/pubspec.lock
+++ b/example/pubspec.lock
@@ -5,10 +5,10 @@ packages:
dependency: transitive
description:
name: _fe_analyzer_shared
- sha256: "0c80aeab9bc807ab10022cd3b2f4cf2ecdf231949dc1ddd9442406a003f19201"
+ sha256: "0816708f5fbcacca324d811297153fe3c8e047beb5c6752e12292d2974c17045"
url: "https://pub.dev"
source: hosted
- version: "52.0.0"
+ version: "62.0.0"
adaptive_action_sheet:
dependency: transitive
description:
@@ -21,26 +21,26 @@ packages:
dependency: transitive
description:
name: analyzer
- sha256: cd8ee83568a77f3ae6b913a36093a1c9b1264e7cb7f834d9ddd2311dade9c1f4
+ sha256: "21862995c9932cd082f89d72ae5f5e2c110d1a0204ad06e4ebaee8307b76b834"
url: "https://pub.dev"
source: hosted
- version: "5.4.0"
+ version: "6.0.0"
archive:
dependency: "direct main"
description:
name: archive
- sha256: d6347d54a2d8028e0437e3c099f66fdb8ae02c4720c1e7534c9f24c10351f85d
+ sha256: "0c8368c9b3f0abbc193b9d6133649a614204b528982bebc7026372d61677ce3a"
url: "https://pub.dev"
source: hosted
- version: "3.3.6"
+ version: "3.3.7"
args:
dependency: transitive
description:
name: args
- sha256: "139d809800a412ebb26a3892da228b2d0ba36f0ef5d9a82166e5e52ec8d61611"
+ sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596
url: "https://pub.dev"
source: hosted
- version: "2.3.2"
+ version: "2.4.2"
async:
dependency: transitive
description:
@@ -125,10 +125,10 @@ packages:
dependency: transitive
description:
name: build
- sha256: "3fbda25365741f8251b39f3917fb3c8e286a96fd068a5a242e11c2012d495777"
+ sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0"
url: "https://pub.dev"
source: hosted
- version: "2.3.1"
+ version: "2.4.1"
cached_network_image:
dependency: transitive
description:
@@ -157,42 +157,42 @@ packages:
dependency: transitive
description:
name: camera
- sha256: e7ac55af24a890d20276821eb3c95857074d03b7de6f9892b99a205ee30bd179
+ sha256: ebebead3d5ec3d148249331d751d462d7e8c98102b8830a9b45ec96a2bd4333f
url: "https://pub.dev"
source: hosted
- version: "0.10.3"
+ version: "0.10.5+2"
camera_android:
dependency: transitive
description:
name: camera_android
- sha256: "4cef01e8e78fe27c809a429bf74352ab94ab76b0c980e3ec708f1414614e3d9f"
+ sha256: f43d07f9d7228ea1ca87d22e30881bd68da4b78484a1fbd1f1408b412a41cefb
url: "https://pub.dev"
source: hosted
- version: "0.10.3"
+ version: "0.10.8+3"
camera_avfoundation:
dependency: transitive
description:
name: camera_avfoundation
- sha256: "6a68c20593d4cd58974d555f74a48b244f9db28cc9156de57781122d11b8754b"
+ sha256: "1a416e452b30955b392f4efbf23291d3f2ba3660a85e1628859eb62d2a2bab26"
url: "https://pub.dev"
source: hosted
- version: "0.9.11"
+ version: "0.9.13+2"
camera_platform_interface:
dependency: transitive
description:
name: camera_platform_interface
- sha256: "0eedd642d905ca24f1c483fe9ea0d0e7287b86a402845c28d24df28cc7b0ee6e"
+ sha256: "60fa0bb62a4f3bf3a7c413e31e4cd01b69c779ccc8e4668904a24581b86c316b"
url: "https://pub.dev"
source: hosted
- version: "2.3.4"
+ version: "2.5.1"
camera_web:
dependency: transitive
description:
name: camera_web
- sha256: "496de93c5d462738ce991dbfe91fb19026f115ed36406700a20a380fb0018299"
+ sha256: bcbd775fb3a9d51cc3ece899d54ad66f6306410556bac5759f78e13f9228841f
url: "https://pub.dev"
source: hosted
- version: "0.3.1+1"
+ version: "0.3.1+4"
characters:
dependency: transitive
description:
@@ -253,10 +253,10 @@ packages:
dependency: transitive
description:
name: crypto
- sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67
+ sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab
url: "https://pub.dev"
source: hosted
- version: "3.0.2"
+ version: "3.0.3"
csslib:
dependency: transitive
description:
@@ -269,10 +269,10 @@ packages:
dependency: transitive
description:
name: csv
- sha256: "18aef53ab72181a0b5384562d18c8cbd57e941e24cb8e54eb41409d3d8abdc6d"
+ sha256: "016b31a51a913744a0a1655c74ff13c9379e1200e246a03d96c81c5d9ed297b5"
url: "https://pub.dev"
source: hosted
- version: "5.0.1"
+ version: "5.0.2"
cupertino_icons:
dependency: "direct main"
description:
@@ -281,6 +281,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.5"
+ dart_internal:
+ dependency: transitive
+ description:
+ name: dart_internal
+ sha256: dae3976f383beddcfcd07ad5291a422df2c8c0a8a03c52cda63ac7b4f26e0f4e
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.2.8"
desktop_drop:
dependency: transitive
description:
@@ -333,34 +341,34 @@ packages:
dependency: transitive
description:
name: extended_image_library
- sha256: b1de389378589e4dffb3564d782373238f19064037458092c49b3043b2791b2b
+ sha256: af3ff1c09c23ca7663f94272313d63499a6bd19121e99378e375e0cf2ac7a3e4
url: "https://pub.dev"
source: hosted
- version: "3.4.1"
+ version: "3.5.2"
extended_text:
dependency: transitive
description:
name: extended_text
- sha256: "75ddf28ce7d5be33a050ff2179b6567b4b98e6225ad3e61e4c3748f7448c25f7"
+ sha256: dec14c9b36d9bbaaf007da5998f5dc72a2dbd5b877601d7b7970bb42524b3ced
url: "https://pub.dev"
source: hosted
- version: "11.0.0"
+ version: "11.0.1"
extended_text_field:
dependency: transitive
description:
name: extended_text_field
- sha256: "6cf8c090de4dc1e309cf3b24cb9448d7463c6c17926b628cf0954631bf4e56db"
+ sha256: e93248bb9b04a3e6c5e88a6a96e1c08cc765097657ab25aabe409e06a4f6760a
url: "https://pub.dev"
source: hosted
- version: "12.0.0"
+ version: "12.0.1"
extended_text_library:
dependency: transitive
description:
name: extended_text_library
- sha256: "308b50cfcc8e3accf46a09cb692715fbd1097333817c15b0f7527de1766bc1ff"
+ sha256: c06fbd8e3b6eedadf50cd6c109bbbd80921a6c43e4422d3b4ec9d4cb36ce4555
url: "https://pub.dev"
source: hosted
- version: "11.0.1"
+ version: "11.0.2"
fake_async:
dependency: transitive
description:
@@ -389,10 +397,10 @@ packages:
dependency: transitive
description:
name: ffi
- sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978
+ sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99
url: "https://pub.dev"
source: hosted
- version: "2.0.1"
+ version: "2.0.2"
file:
dependency: transitive
description:
@@ -405,10 +413,42 @@ packages:
dependency: transitive
description:
name: file_picker
- sha256: "9d6e95ec73abbd31ec54d0e0df8a961017e165aba1395e462e5b31ea0c165daf"
+ sha256: b1729fc96627dd44012d0a901558177418818d6bd428df59dcfeb594e5f66432
url: "https://pub.dev"
source: hosted
- version: "5.3.1"
+ version: "5.3.2"
+ file_selector_linux:
+ dependency: transitive
+ description:
+ name: file_selector_linux
+ sha256: "770eb1ab057b5ae4326d1c24cc57710758b9a46026349d021d6311bd27580046"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.9.2"
+ file_selector_macos:
+ dependency: transitive
+ description:
+ name: file_selector_macos
+ sha256: "7a6f1ae6107265664f3f7f89a66074882c4d506aef1441c9af313c1f7e6f41ce"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.9.3"
+ file_selector_platform_interface:
+ dependency: transitive
+ description:
+ name: file_selector_platform_interface
+ sha256: "412705a646a0ae90f33f37acfae6a0f7cbc02222d6cd34e479421c3e74d3853c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.6.0"
+ file_selector_windows:
+ dependency: transitive
+ description:
+ name: file_selector_windows
+ sha256: "1372760c6b389842b77156203308940558a2817360154084368608413835fc26"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.9.3"
file_utils:
dependency: transitive
description:
@@ -434,10 +474,10 @@ packages:
dependency: transitive
description:
name: flutter_cache_manager
- sha256: "32cd900555219333326a2d0653aaaf8671264c29befa65bbd9856d204a4c9fb3"
+ sha256: "8207f27539deb83732fdda03e259349046a39a4c767269285f449ade355d54ba"
url: "https://pub.dev"
source: hosted
- version: "3.3.0"
+ version: "3.3.1"
flutter_easyrefresh:
dependency: transitive
description:
@@ -466,10 +506,10 @@ packages:
dependency: transitive
description:
name: flutter_markdown
- sha256: dc6d5258653f6857135b32896ccda7f7af0c54dcec832495ad6835154c6c77c0
+ sha256: "4b1bfbb802d76320a1a46d9ce984106135093efd9d969765d07c2125af107bdf"
url: "https://pub.dev"
source: hosted
- version: "0.6.15"
+ version: "0.6.17"
flutter_plugin_android_lifecycle:
dependency: transitive
description:
@@ -498,10 +538,10 @@ packages:
dependency: transitive
description:
name: flutter_svg
- sha256: "6ff8c902c8056af9736de2689f63f81c42e2d642b9f4c79dbf8790ae48b63012"
+ sha256: "8c5d68a82add3ca76d792f058b186a0599414f279f00ece4830b9b231b570338"
url: "https://pub.dev"
source: hosted
- version: "2.0.6"
+ version: "2.0.7"
flutter_test:
dependency: "direct dev"
description: flutter
@@ -516,18 +556,18 @@ packages:
dependency: transitive
description:
name: get_it
- sha256: "290fde3a86072e4b37dbb03c07bec6126f0ecc28dad403c12ffe2e5a2d751ab7"
+ sha256: "529de303c739fca98cd7ece5fca500d8ff89649f1bb4b4e94fb20954abcd7468"
url: "https://pub.dev"
source: hosted
- version: "7.2.0"
+ version: "7.6.0"
glob:
dependency: transitive
description:
name: glob
- sha256: "4515b5b6ddb505ebdd242a5f2cc5d22d3d6a80013789debfbda7777f47ea308c"
+ sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63"
url: "https://pub.dev"
source: hosted
- version: "2.1.1"
+ version: "2.1.2"
globbing:
dependency: transitive
description:
@@ -540,26 +580,26 @@ packages:
dependency: transitive
description:
name: html
- sha256: d9793e10dbe0e6c364f4c59bf3e01fb33a9b2a674bc7a1081693dba0614b6269
+ sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a"
url: "https://pub.dev"
source: hosted
- version: "0.15.1"
+ version: "0.15.4"
http:
dependency: transitive
description:
name: http
- sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482"
+ sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2"
url: "https://pub.dev"
source: hosted
- version: "0.13.5"
+ version: "0.13.6"
http_client_helper:
dependency: transitive
description:
name: http_client_helper
- sha256: "1f32359bd07a064ad256d1f84ae5f973f69bc972e7287223fa198abe1d969c28"
+ sha256: "14c6e756644339f561321dab021215475ba4779aa962466f59ccb3ecf66b36c3"
url: "https://pub.dev"
source: hosted
- version: "2.0.3"
+ version: "2.0.4"
http_parser:
dependency: transitive
description:
@@ -572,50 +612,74 @@ packages:
dependency: transitive
description:
name: image_gallery_saver
- sha256: "009b7722cd8507fd72c7f2cb7cbc46d6e15ad0895469cfcc39a10f86e3556979"
+ sha256: "0aba74216a4d9b0561510cb968015d56b701ba1bd94aace26aacdd8ae5761816"
url: "https://pub.dev"
source: hosted
- version: "2.0.1"
+ version: "2.0.3"
image_picker:
dependency: transitive
description:
name: image_picker
- sha256: f98d76672d309c8b7030c323b3394669e122d52b307d2bbd8d06bd70f5b2aabe
+ sha256: b6951e25b795d053a6ba03af5f710069c99349de9341af95155d52665cb4607c
url: "https://pub.dev"
source: hosted
- version: "0.8.6+1"
+ version: "0.8.9"
image_picker_android:
dependency: transitive
description:
name: image_picker_android
- sha256: b1cbfec0f5aef427a18eb573f5445af8c9c568626bf3388553e40c263d3f7368
+ sha256: d2bab152deb2547ea6f53d82ebca9b7e77386bb706e5789e815d37e08ea475bb
url: "https://pub.dev"
source: hosted
- version: "0.8.5+5"
+ version: "0.8.7+3"
image_picker_for_web:
dependency: transitive
description:
name: image_picker_for_web
- sha256: "7d319fb74955ca46d9bf7011497860e3923bb67feebcf068f489311065863899"
+ sha256: "869fe8a64771b7afbc99fc433a5f7be2fea4d1cb3d7c11a48b6b579eb9c797f0"
url: "https://pub.dev"
source: hosted
- version: "2.1.10"
+ version: "2.2.0"
image_picker_ios:
dependency: transitive
description:
name: image_picker_ios
- sha256: "39c013200046d14c58b71dc4fa3d00e425fc9c699d589136cd3ca018727c0493"
+ sha256: b3e2f21feb28b24dd73a35d7ad6e83f568337c70afab5eabac876e23803f264b
url: "https://pub.dev"
source: hosted
- version: "0.8.6+6"
+ version: "0.8.8"
+ image_picker_linux:
+ dependency: transitive
+ description:
+ name: image_picker_linux
+ sha256: "02cbc21fe1706b97942b575966e5fbbeaac535e76deef70d3a242e4afb857831"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.2.1"
+ image_picker_macos:
+ dependency: transitive
+ description:
+ name: image_picker_macos
+ sha256: cee2aa86c56780c13af2c77b5f2f72973464db204569e1ba2dd744459a065af4
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.2.1"
image_picker_platform_interface:
dependency: transitive
description:
name: image_picker_platform_interface
- sha256: "7cef2f28f4f2fef99180f636c3d446b4ccbafd6ba0fad2adc9a80c4040f656b8"
+ sha256: "7c7b96bb9413a9c28229e717e6fd1e3edd1cc5569c1778fcca060ecf729b65ee"
url: "https://pub.dev"
source: hosted
- version: "2.6.2"
+ version: "2.8.0"
+ image_picker_windows:
+ dependency: transitive
+ description:
+ name: image_picker_windows
+ sha256: c3066601ea42113922232c7b7b3330a2d86f029f685bba99d82c30e799914952
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.2.1"
intl:
dependency: transitive
description:
@@ -636,10 +700,10 @@ packages:
dependency: transitive
description:
name: json_annotation
- sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317
+ sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467
url: "https://pub.dev"
source: hosted
- version: "4.8.0"
+ version: "4.8.1"
link_preview_generator:
dependency: transitive
description:
@@ -668,10 +732,10 @@ packages:
dependency: transitive
description:
name: logging
- sha256: "04094f2eb032cbb06c6f6e8d3607edcfcb0455e2bb6cbc010cb01171dcb64e6d"
+ sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340"
url: "https://pub.dev"
source: hosted
- version: "1.1.1"
+ version: "1.2.0"
lpinyin:
dependency: transitive
description:
@@ -712,6 +776,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.9.1"
+ mime:
+ dependency: transitive
+ description:
+ name: mime
+ sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.4"
mime_type:
dependency: transitive
description:
@@ -796,98 +868,90 @@ packages:
dependency: transitive
description:
name: path_provider
- sha256: dcea5feb97d8abf90cab9e9030b497fb7c3cbf26b7a1fe9e3ef7dcb0a1ddec95
+ sha256: "3087813781ab814e4157b172f1a11c46be20179fcc9bea043e0fba36bc0acaa2"
url: "https://pub.dev"
source: hosted
- version: "2.0.12"
+ version: "2.0.15"
path_provider_android:
dependency: transitive
description:
name: path_provider_android
- sha256: a776c088d671b27f6e3aa8881d64b87b3e80201c64e8869b811325de7a76c15e
+ sha256: "2cec049d282c7f13c594b4a73976b0b4f2d7a1838a6dd5aaf7bd9719196bee86"
url: "https://pub.dev"
source: hosted
- version: "2.0.22"
+ version: "2.0.27"
path_provider_foundation:
dependency: transitive
description:
name: path_provider_foundation
- sha256: "62a68e7e1c6c459f9289859e2fae58290c981ce21d1697faf54910fe1faa4c74"
+ sha256: "1995d88ec2948dac43edf8fe58eb434d35d22a2940ecee1a9fefcd62beee6eb3"
url: "https://pub.dev"
source: hosted
- version: "2.1.1"
+ version: "2.2.3"
path_provider_linux:
dependency: transitive
description:
name: path_provider_linux
- sha256: ab0987bf95bc591da42dffb38c77398fc43309f0b9b894dcc5d6f40c4b26c379
+ sha256: ffbb8cc9ed2c9ec0e4b7a541e56fd79b138e8f47d2fb86815f15358a349b3b57
url: "https://pub.dev"
source: hosted
- version: "2.1.7"
+ version: "2.1.11"
path_provider_platform_interface:
dependency: transitive
description:
name: path_provider_platform_interface
- sha256: f0abc8ebd7253741f05488b4813d936b4d07c6bae3e86148a09e342ee4b08e76
+ sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec"
url: "https://pub.dev"
source: hosted
- version: "2.0.5"
+ version: "2.0.6"
path_provider_windows:
dependency: transitive
description:
name: path_provider_windows
- sha256: d3f80b32e83ec208ac95253e0cd4d298e104fbc63cb29c5c69edaed43b0c69d6
+ sha256: "1cb68ba4cd3a795033de62ba1b7b4564dace301f952de6bfb3cd91b202b6ee96"
url: "https://pub.dev"
source: hosted
- version: "2.1.6"
- pedantic:
- dependency: transitive
- description:
- name: pedantic
- sha256: "67fc27ed9639506c856c840ccce7594d0bdcd91bc8d53d6e52359449a1d50602"
- url: "https://pub.dev"
- source: hosted
- version: "1.11.1"
+ version: "2.1.7"
permission_handler:
dependency: transitive
description:
name: permission_handler
- sha256: "33c6a1253d1f95fd06fa74b65b7ba907ae9811f9d5c1d3150e51417d04b8d6a8"
+ sha256: "415af30ba76a84faccfe1eb251fe1e4fdc790f876924c65ad7d6ed7a1404bcd6"
url: "https://pub.dev"
source: hosted
- version: "10.2.0"
+ version: "10.4.2"
permission_handler_android:
dependency: transitive
description:
name: permission_handler_android
- sha256: "8028362b40c4a45298f1cbfccd227c8dd6caf0e27088a69f2ba2ab15464159e2"
+ sha256: "3b61f3da3b1c83bc3fb6a2b431e8dab01d0e5b45f6a3d9c7609770ec88b2a89e"
url: "https://pub.dev"
source: hosted
- version: "10.2.0"
+ version: "10.3.0"
permission_handler_apple:
dependency: transitive
description:
name: permission_handler_apple
- sha256: "9c370ef6a18b1c4b2f7f35944d644a56aa23576f23abee654cf73968de93f163"
+ sha256: "7a187b671a39919462af2b5e813148365b71a615979165a119868d667fe90c03"
url: "https://pub.dev"
source: hosted
- version: "9.0.7"
+ version: "9.1.3"
permission_handler_platform_interface:
dependency: transitive
description:
name: permission_handler_platform_interface
- sha256: "68abbc472002b5e6dfce47fe9898c6b7d8328d58b5d2524f75e277c07a97eb84"
+ sha256: "463a07cb7cc6c758a7a1c7da36ce666bb80a0b4b5e92df0fa36872e0ed456993"
url: "https://pub.dev"
source: hosted
- version: "3.9.0"
+ version: "3.11.1"
permission_handler_windows:
dependency: transitive
description:
name: permission_handler_windows
- sha256: f67cab14b4328574938ecea2db3475dad7af7ead6afab6338772c5f88963e38b
+ sha256: cc074aace208760f1eee6aa4fae766b45d947df85bc831cde77009cdb4720098
url: "https://pub.dev"
source: hosted
- version: "0.1.2"
+ version: "0.1.3"
petitparser:
dependency: transitive
description:
@@ -924,10 +988,10 @@ packages:
dependency: transitive
description:
name: pointycastle
- sha256: db7306cf0249f838d1a24af52b5a5887c5bf7f31d8bb4e827d071dc0939ad346
+ sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c"
url: "https://pub.dev"
source: hosted
- version: "3.6.2"
+ version: "3.7.3"
process:
dependency: transitive
description:
@@ -948,10 +1012,10 @@ packages:
dependency: transitive
description:
name: pub_semver
- sha256: "307de764d305289ff24ad257ad5c5793ce56d04947599ad68b3baa124105fc17"
+ sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c"
url: "https://pub.dev"
source: hosted
- version: "2.1.3"
+ version: "2.1.4"
quiver:
dependency: transitive
description:
@@ -988,58 +1052,58 @@ packages:
dependency: transitive
description:
name: shared_preferences
- sha256: "5949029e70abe87f75cfe59d17bf5c397619c4b74a099b10116baeb34786fad9"
+ sha256: "0344316c947ffeb3a529eac929e1978fcd37c26be4e8468628bac399365a3ca1"
url: "https://pub.dev"
source: hosted
- version: "2.0.17"
+ version: "2.2.0"
shared_preferences_android:
dependency: transitive
description:
name: shared_preferences_android
- sha256: "955e9736a12ba776bdd261cf030232b30eadfcd9c79b32a3250dd4a494e8c8f7"
+ sha256: fe8401ec5b6dcd739a0fe9588802069e608c3fdbfd3c3c93e546cf2f90438076
url: "https://pub.dev"
source: hosted
- version: "2.0.15"
+ version: "2.2.0"
shared_preferences_foundation:
dependency: transitive
description:
name: shared_preferences_foundation
- sha256: "2b55c18636a4edc529fa5cd44c03d3f3100c00513f518c5127c951978efcccd0"
+ sha256: b046999bf0ff58f04c364491bb803dcfa8f42e47b19c75478f53d323684a8cc1
url: "https://pub.dev"
source: hosted
- version: "2.1.3"
+ version: "2.3.1"
shared_preferences_linux:
dependency: transitive
description:
name: shared_preferences_linux
- sha256: f8ea038aa6da37090093974ebdcf4397010605fd2ff65c37a66f9d28394cb874
+ sha256: "71d6806d1449b0a9d4e85e0c7a917771e672a3d5dc61149cc9fac871115018e1"
url: "https://pub.dev"
source: hosted
- version: "2.1.3"
+ version: "2.3.0"
shared_preferences_platform_interface:
dependency: transitive
description:
name: shared_preferences_platform_interface
- sha256: da9431745ede5ece47bc26d5d73a9d3c6936ef6945c101a5aca46f62e52c1cf3
+ sha256: "23b052f17a25b90ff2b61aad4cc962154da76fb62848a9ce088efe30d7c50ab1"
url: "https://pub.dev"
source: hosted
- version: "2.1.0"
+ version: "2.3.0"
shared_preferences_web:
dependency: transitive
description:
name: shared_preferences_web
- sha256: a4b5bc37fe1b368bbc81f953197d55e12f49d0296e7e412dfe2d2d77d6929958
+ sha256: "7347b194fb0bbeb4058e6a4e87ee70350b6b2b90f8ac5f8bd5b3a01548f6d33a"
url: "https://pub.dev"
source: hosted
- version: "2.0.4"
+ version: "2.2.0"
shared_preferences_windows:
dependency: transitive
description:
name: shared_preferences_windows
- sha256: "5eaf05ae77658d3521d0e993ede1af962d4b326cd2153d312df716dc250f00c9"
+ sha256: f95e6a43162bce43c9c3405f3eb6f39e5b5d11f65fab19196cf8225e2777624d
url: "https://pub.dev"
source: hosted
- version: "2.1.3"
+ version: "2.3.0"
shell:
dependency: transitive
description:
@@ -1065,18 +1129,18 @@ packages:
dependency: transitive
description:
name: sqflite
- sha256: "78324387dc81df14f78df06019175a86a2ee0437624166c382e145d0a7fd9a4f"
+ sha256: b4d6710e1200e96845747e37338ea8a819a12b51689a3bcf31eff0003b37a0b9
url: "https://pub.dev"
source: hosted
- version: "2.2.4+1"
+ version: "2.2.8+4"
sqflite_common:
dependency: transitive
description:
name: sqflite_common
- sha256: bfd6973aaeeb93475bc0d875ac9aefddf7965ef22ce09790eb963992ffc5183f
+ sha256: "8f7603f3f8f126740bc55c4ca2d1027aab4b74a1267a3e31ce51fe40e3b65b8f"
url: "https://pub.dev"
source: hosted
- version: "2.4.2+2"
+ version: "2.4.5+1"
stack_trace:
dependency: transitive
description:
@@ -1113,10 +1177,10 @@ packages:
dependency: transitive
description:
name: synchronized
- sha256: "33b31b6beb98100bf9add464a36a8dd03eb10c7a8cf15aeec535e9b054aaf04b"
+ sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60"
url: "https://pub.dev"
source: hosted
- version: "3.0.1"
+ version: "3.1.0"
system_info2:
dependency: transitive
description:
@@ -1125,6 +1189,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.0.4"
+ tencent_chat_i18n_tool:
+ dependency: transitive
+ description:
+ name: tencent_chat_i18n_tool
+ sha256: ac8171d2574ed18babedd0cb67e937e255bf02fcb72f55408d033f74d4b11949
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.3+2"
tencent_cloud_chat_sdk:
dependency: transitive
description:
@@ -1139,23 +1211,23 @@ packages:
path: ".."
relative: true
source: path
- version: "2.1.2"
+ version: "2.1.3-preview.16"
tencent_cloud_uikit_core:
dependency: transitive
description:
name: tencent_cloud_uikit_core
- sha256: "517d760b0d497ea291d70fe6a021508e5b66f0754c72679f19ee16c0bb354e91"
+ sha256: "0a0f43e4c4241b25d12a9e9f0ee91922ac800a42229d97e3d21d16041ace3104"
url: "https://pub.dev"
source: hosted
- version: "1.0.3"
+ version: "1.0.8"
tencent_im_base:
dependency: transitive
description:
name: tencent_im_base
- sha256: "9b8e712bf27ffae9b686ec532ee8417b8263eba8bab04f105e28a95de1807322"
+ sha256: "0db83050452486571ee4ac07280a2fb4bbc07d297a54235b5cf12e46e79267d0"
url: "https://pub.dev"
source: hosted
- version: "1.0.57"
+ version: "2.0.1"
tencent_im_sdk_plugin_desktop:
dependency: "direct main"
description:
@@ -1168,18 +1240,18 @@ packages:
dependency: transitive
description:
name: tencent_im_sdk_plugin_platform_interface
- sha256: "53263e4acd7179871aad2a67ec4964bc8fae861f54384fba2c60bd2c16d2867c"
+ sha256: "6a1f053567246148ad40667f2ab71d82bcee0d5d0c12e587340d2796c342b87e"
url: "https://pub.dev"
source: hosted
- version: "0.3.20"
+ version: "0.3.21"
tencent_im_sdk_plugin_web:
dependency: "direct main"
description:
name: tencent_im_sdk_plugin_web
- sha256: "6ddf543c6fb4a2c220c5cec3b9247b4353c3dc0f276e76b81c800ad4c92f9bb5"
+ sha256: "291082df8b447191dc2dcafca3e1dbcb5385e02a3936e1f108b9434356481832"
url: "https://pub.dev"
source: hosted
- version: "0.3.9"
+ version: "0.3.11"
tencent_keyboard_visibility:
dependency: transitive
description:
@@ -1192,10 +1264,10 @@ packages:
dependency: transitive
description:
name: tencent_open_file
- sha256: "01f94f618da42e5593bbad0657fcd13cfc1c2360cca805d8cdfefe898cbe5429"
+ sha256: bb92d2f052c150a45942c564fba13d150a1b7b47525e6fdd74ccc58058ba5dcf
url: "https://pub.dev"
source: hosted
- version: "4.0.10"
+ version: "4.0.11"
tencent_super_tooltip:
dependency: transitive
description:
@@ -1224,34 +1296,34 @@ packages:
dependency: transitive
description:
name: tim_ui_kit_sticker_plugin
- sha256: "2a825d33076f319f6c1c87d58e2b0d650c9284ae4afd8efdc206f3e6f3582e64"
+ sha256: c9b0c1261bb51a5dee54bb50c6a106061b1bb10731b9c815fc5175afa60175e2
url: "https://pub.dev"
source: hosted
- version: "2.0.1"
+ version: "2.2.1"
transparent_image:
dependency: transitive
description:
name: transparent_image
- sha256: e566a616922a781489f4d91cc939b1b3203b6e4a093317805f2f82f0bb0f8dec
+ sha256: e8991d955a2094e197ca24c645efec2faf4285772a4746126ca12875e54ca02f
url: "https://pub.dev"
source: hosted
- version: "2.0.0"
+ version: "2.0.1"
tuple:
dependency: transitive
description:
name: tuple
- sha256: "0ea99cd2f9352b2586583ab2ce6489d1f95a5f6de6fb9492faaf97ae2060f0aa"
+ sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151
url: "https://pub.dev"
source: hosted
- version: "2.0.1"
+ version: "2.0.2"
typed_data:
dependency: transitive
description:
name: typed_data
- sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5"
+ sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
url: "https://pub.dev"
source: hosted
- version: "1.3.1"
+ version: "1.3.2"
universal_html:
dependency: transitive
description:
@@ -1264,74 +1336,74 @@ packages:
dependency: transitive
description:
name: universal_io
- sha256: "06866290206d196064fd61df4c7aea1ffe9a4e7c4ccaa8fcded42dd41948005d"
+ sha256: "1722b2dcc462b4b2f3ee7d188dad008b6eb4c40bbd03a3de451d82c78bba9aad"
url: "https://pub.dev"
source: hosted
- version: "2.2.0"
+ version: "2.2.2"
url_launcher:
dependency: transitive
description:
name: url_launcher
- sha256: "698fa0b4392effdc73e9e184403b627362eb5fbf904483ac9defbb1c2191d809"
+ sha256: "781bd58a1eb16069412365c98597726cd8810ae27435f04b3b4d3a470bacd61e"
url: "https://pub.dev"
source: hosted
- version: "6.1.8"
+ version: "6.1.12"
url_launcher_android:
dependency: transitive
description:
name: url_launcher_android
- sha256: "3e2f6dfd2c7d9cd123296cab8ef66cfc2c1a13f5845f42c7a0f365690a8a7dd1"
+ sha256: "15f5acbf0dce90146a0f5a2c4a002b1814a6303c4c5c075aa2623b2d16156f03"
url: "https://pub.dev"
source: hosted
- version: "6.0.23"
+ version: "6.0.36"
url_launcher_ios:
dependency: transitive
description:
name: url_launcher_ios
- sha256: bb328b24d3bccc20bdf1024a0990ac4f869d57663660de9c936fb8c043edefe3
+ sha256: "9af7ea73259886b92199f9e42c116072f05ff9bea2dcb339ab935dfc957392c2"
url: "https://pub.dev"
source: hosted
- version: "6.0.18"
+ version: "6.1.4"
url_launcher_linux:
dependency: transitive
description:
name: url_launcher_linux
- sha256: "318c42cba924e18180c029be69caf0a1a710191b9ec49bb42b5998fdcccee3cc"
+ sha256: "207f4ddda99b95b4d4868320a352d374b0b7e05eefad95a4a26f57da413443f5"
url: "https://pub.dev"
source: hosted
- version: "3.0.2"
+ version: "3.0.5"
url_launcher_macos:
dependency: transitive
description:
name: url_launcher_macos
- sha256: "41988b55570df53b3dd2a7fc90c76756a963de6a8c5f8e113330cb35992e2094"
+ sha256: "91ee3e75ea9dadf38036200c5d3743518f4a5eb77a8d13fda1ee5764373f185e"
url: "https://pub.dev"
source: hosted
- version: "3.0.2"
+ version: "3.0.5"
url_launcher_platform_interface:
dependency: transitive
description:
name: url_launcher_platform_interface
- sha256: "4eae912628763eb48fc214522e58e942fd16ce195407dbf45638239523c759a6"
+ sha256: bfdfa402f1f3298637d71ca8ecfe840b4696698213d5346e9d12d4ab647ee2ea
url: "https://pub.dev"
source: hosted
- version: "2.1.1"
+ version: "2.1.3"
url_launcher_web:
dependency: transitive
description:
name: url_launcher_web
- sha256: "44d79408ce9f07052095ef1f9a693c258d6373dc3944249374e30eff7219ccb0"
+ sha256: cc26720eefe98c1b71d85f9dc7ef0cada5132617046369d9dc296b3ecaa5cbb4
url: "https://pub.dev"
source: hosted
- version: "2.0.14"
+ version: "2.0.18"
url_launcher_windows:
dependency: transitive
description:
name: url_launcher_windows
- sha256: b6217370f8eb1fd85c8890c539f5a639a01ab209a36db82c921ebeacefc7a615
+ sha256: "7967065dd2b5fccc18c653b97958fdf839c5478c28e767c61ee879f4e7882422"
url: "https://pub.dev"
source: hosted
- version: "3.0.3"
+ version: "3.0.7"
uuid:
dependency: transitive
description:
@@ -1344,26 +1416,26 @@ packages:
dependency: transitive
description:
name: vector_graphics
- sha256: b96f10cbdfcbd03a65758633a43e7d04574438f059b1043104b5d61b23d38a4f
+ sha256: "670f6e07aca990b4a2bcdc08a784193c4ccdd1932620244c3a86bb72a0eac67f"
url: "https://pub.dev"
source: hosted
- version: "1.1.6"
+ version: "1.1.7"
vector_graphics_codec:
dependency: transitive
description:
name: vector_graphics_codec
- sha256: "57a8e6e24662a3bdfe3b3d61257db91768700c0b8f844e235877b56480f31c69"
+ sha256: "7451721781d967db9933b63f5733b1c4533022c0ba373a01bdd79d1a5457f69f"
url: "https://pub.dev"
source: hosted
- version: "1.1.6"
+ version: "1.1.7"
vector_graphics_compiler:
dependency: transitive
description:
name: vector_graphics_compiler
- sha256: "7430f5d834d0db4560d7b19863362cd892f1e52b43838553a3c5cdfc9ab28e5b"
+ sha256: "80a13c613c8bde758b1464a1755a7b3a8f2b6cec61fbf0f5a53c94c30f03ba2e"
url: "https://pub.dev"
source: hosted
- version: "1.1.6"
+ version: "1.1.7"
vector_math:
dependency: transitive
description:
@@ -1376,50 +1448,50 @@ packages:
dependency: transitive
description:
name: video_player
- sha256: "868a139229acb5018d22aded3eb9cb4767ff43a8216573c086b6c535a4957481"
+ sha256: "3fd106c74da32f336dc7feb65021da9b0207cb3124392935f1552834f7cce822"
url: "https://pub.dev"
source: hosted
- version: "2.6.0"
+ version: "2.7.0"
video_player_android:
dependency: transitive
description:
name: video_player_android
- sha256: "984388511230bac63feb53b2911a70e829fe0976b6b2213f5c579c4e0a882db3"
+ sha256: f338a5a396c845f4632959511cad3542cdf3167e1b2a1a948ef07f7123c03608
url: "https://pub.dev"
source: hosted
- version: "2.3.10"
+ version: "2.4.9"
video_player_avfoundation:
dependency: transitive
description:
name: video_player_avfoundation
- sha256: d9f7a46d6a77680adb03ec05a381025d6e890ebe636637c6c3014cc3926b97e9
+ sha256: "4c274e439f349a0ee5cb3c42978393ede173a443b98f50de6ffe6900eaa19216"
url: "https://pub.dev"
source: hosted
- version: "2.3.8"
+ version: "2.4.6"
video_player_platform_interface:
dependency: transitive
description:
name: video_player_platform_interface
- sha256: "42bb75de5e9b79e1f20f1d95f688fac0f95beac4d89c6eb2cd421724d4432dae"
+ sha256: a8c4dcae2a7a6e7cc1d7f9808294d968eca1993af34a98e95b9bdfa959bec684
url: "https://pub.dev"
source: hosted
- version: "6.0.1"
+ version: "6.1.0"
video_player_web:
dependency: transitive
description:
name: video_player_web
- sha256: b649b07b8f8f553bee4a97a0a53d0fe78a70b115eafaf0105b612b32b05ddb99
+ sha256: "44ce41424d104dfb7cf6982cc6b84af2b007a24d126406025bf40de5d481c74c"
url: "https://pub.dev"
source: hosted
- version: "2.0.13"
+ version: "2.0.16"
wakelock_for_us:
dependency: transitive
description:
name: wakelock_for_us
- sha256: b73bfa90e5e764f41155063ae92fbd1e3a04ee6372e65ff7d288d2c3057f9498
+ sha256: a5bdd445e51a617f7c24be8165230391447301f622aacd050038cee7b41989b4
url: "https://pub.dev"
source: hosted
- version: "0.6.3"
+ version: "0.6.3+1"
wakelock_platform_interface:
dependency: transitive
description:
@@ -1432,10 +1504,10 @@ packages:
dependency: transitive
description:
name: watcher
- sha256: "6a7f46926b01ce81bfc339da6a7f20afbe7733eff9846f6d6a5466aa4c6667c0"
+ sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8"
url: "https://pub.dev"
source: hosted
- version: "1.0.2"
+ version: "1.1.0"
wechat_assets_picker:
dependency: transitive
description:
@@ -1456,26 +1528,26 @@ packages:
dependency: transitive
description:
name: win32
- sha256: "5a751eddf9db89b3e5f9d50c20ab8612296e4e8db69009788d6c8b060a84191c"
+ sha256: dfdf0136e0aa7a1b474ea133e67cb0154a0acd2599c4f3ada3b49d38d38793ee
url: "https://pub.dev"
source: hosted
- version: "4.1.4"
+ version: "5.0.5"
win32_registry:
dependency: transitive
description:
name: win32_registry
- sha256: "1c52f994bdccb77103a6231ad4ea331a244dbcef5d1f37d8462f713143b0bfae"
+ sha256: e4506d60b7244251bc59df15656a3093501c37fb5af02105a944d73eb95be4c9
url: "https://pub.dev"
source: hosted
- version: "1.1.0"
+ version: "1.1.1"
xdg_directories:
dependency: transitive
description:
name: xdg_directories
- sha256: bd512f03919aac5f1313eb8249f223bacf4927031bf60b02601f81f687689e86
+ sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1
url: "https://pub.dev"
source: hosted
- version: "0.2.0+3"
+ version: "1.0.0"
xml:
dependency: transitive
description:
@@ -1488,10 +1560,10 @@ packages:
dependency: transitive
description:
name: yaml
- sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370"
+ sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5"
url: "https://pub.dev"
source: hosted
- version: "3.1.1"
+ version: "3.1.2"
sdks:
- dart: ">=3.0.0 <4.0.0"
+ dart: ">=3.0.0 <3.2.0"
flutter: ">=3.10.0"
diff --git a/example/windows/flutter/generated_plugin_registrant.cc b/example/windows/flutter/generated_plugin_registrant.cc
index 18fd67a..f81340b 100644
--- a/example/windows/flutter/generated_plugin_registrant.cc
+++ b/example/windows/flutter/generated_plugin_registrant.cc
@@ -9,6 +9,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -20,6 +21,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
registry->GetRegistrarForPlugin("DesktopDropPlugin"));
FcNativeVideoThumbnailPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FcNativeVideoThumbnailPluginCApi"));
+ FileSelectorWindowsRegisterWithRegistrar(
+ registry->GetRegistrarForPlugin("FileSelectorWindows"));
PasteboardPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("PasteboardPlugin"));
PermissionHandlerWindowsPluginRegisterWithRegistrar(
diff --git a/example/windows/flutter/generated_plugins.cmake b/example/windows/flutter/generated_plugins.cmake
index f381b9a..c350c7b 100644
--- a/example/windows/flutter/generated_plugins.cmake
+++ b/example/windows/flutter/generated_plugins.cmake
@@ -6,6 +6,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
audioplayers_windows
desktop_drop
fc_native_video_thumbnail
+ file_selector_windows
pasteboard
permission_handler_windows
url_launcher_windows
diff --git a/lib/business_logic/life_cycle/base_life_cycle.dart b/lib/business_logic/life_cycle/base_life_cycle.dart
index 47bb87b..ef1f7f4 100644
--- a/lib/business_logic/life_cycle/base_life_cycle.dart
+++ b/lib/business_logic/life_cycle/base_life_cycle.dart
@@ -4,6 +4,8 @@ import 'package:tencent_cloud_chat_uikit/base_widgets/tim_ui_kit_class.dart';
typedef MessageFunction = Future Function(V2TimMessage message);
+typedef MessageFunctionNullCallback = Function(V2TimValueCallback res);
+
typedef MessageFunctionOptional = Future Function(
V2TimMessage message);
@@ -46,10 +48,17 @@ abstract class DefaultLifeCycle {
return list;
}
- static Future defaultBooleanSolution(dynamic) async {
+ static Future defaultAsyncBooleanSolution(dynamic) async {
return true;
}
+ static bool defaultBooleanSolution(dynamic) {
+ return true;
+ }
+
+ static defaultNullCallbackSolution(dynamic) {
+ }
+
static Future defaultAddFriend(
String userID, String? remark, String? friendGroup, String? addWording,
[BuildContext? context]) async {
diff --git a/lib/business_logic/life_cycle/block_list_life_cycle.dart b/lib/business_logic/life_cycle/block_list_life_cycle.dart
index 44029e4..6c2baa5 100644
--- a/lib/business_logic/life_cycle/block_list_life_cycle.dart
+++ b/lib/business_logic/life_cycle/block_list_life_cycle.dart
@@ -7,6 +7,6 @@ class BlockListLifeCycle {
FutureBool Function(List userIDList) shouldDeleteFromBlockList;
BlockListLifeCycle({
- this.shouldDeleteFromBlockList = DefaultLifeCycle.defaultBooleanSolution,
+ this.shouldDeleteFromBlockList = DefaultLifeCycle.defaultAsyncBooleanSolution,
});
}
diff --git a/lib/business_logic/life_cycle/chat_life_cycle.dart b/lib/business_logic/life_cycle/chat_life_cycle.dart
index 90a0c9b..1a2d1d0 100644
--- a/lib/business_logic/life_cycle/chat_life_cycle.dart
+++ b/lib/business_logic/life_cycle/chat_life_cycle.dart
@@ -1,4 +1,5 @@
import 'package:tencent_cloud_chat_uikit/business_logic/life_cycle/base_life_cycle.dart';
+import 'package:tencent_cloud_chat_uikit/tencent_cloud_chat_uikit.dart';
class ChatLifeCycle {
/// Before a new message will be added to historical message list from long connection.
@@ -12,6 +13,9 @@ class ChatLifeCycle {
/// Returns null can block the message from sending.
MessageFunction messageWillSend;
+ /// After a new message been sent.
+ MessageFunctionNullCallback messageDidSend;
+
/// After getting the latest message list from API,
/// and before historical message list will be rendered.
/// You may add or delete some messages here.
@@ -27,14 +31,20 @@ class ChatLifeCycle {
/// You can make a second confirmation here by a modal, etc.
FutureBool Function(String conversationID) shouldClearHistoricalMessageList;
+
+ /// Before rendering a message to message list.
+ bool Function(V2TimMessage msgID) messageShouldMount;
+
ChatLifeCycle({
this.shouldClearHistoricalMessageList =
- DefaultLifeCycle.defaultBooleanSolution,
- this.shouldDeleteMessage = DefaultLifeCycle.defaultBooleanSolution,
+ DefaultLifeCycle.defaultAsyncBooleanSolution,
+ this.shouldDeleteMessage = DefaultLifeCycle.defaultAsyncBooleanSolution,
+ this.messageDidSend = DefaultLifeCycle.defaultNullCallbackSolution,
this.didGetHistoricalMessageList =
DefaultLifeCycle.defaultMessageListSolution,
this.messageWillSend = DefaultLifeCycle.defaultMessageSolution,
this.modifiedMessageWillMount = DefaultLifeCycle.defaultMessageSolution,
this.newMessageWillMount = DefaultLifeCycle.defaultMessageSolution,
+ this.messageShouldMount = DefaultLifeCycle.defaultBooleanSolution,
});
}
diff --git a/lib/business_logic/life_cycle/conversation_life_cycle.dart b/lib/business_logic/life_cycle/conversation_life_cycle.dart
index 289d5c3..4f8612b 100644
--- a/lib/business_logic/life_cycle/conversation_life_cycle.dart
+++ b/lib/business_logic/life_cycle/conversation_life_cycle.dart
@@ -19,7 +19,7 @@ class ConversationLifeCycle {
this.conversationListWillMount =
DefaultLifeCycle.defaultConversationListSolution,
this.shouldClearHistoricalMessageForConversation =
- DefaultLifeCycle.defaultBooleanSolution,
- this.shouldDeleteConversation = DefaultLifeCycle.defaultBooleanSolution,
+ DefaultLifeCycle.defaultAsyncBooleanSolution,
+ this.shouldDeleteConversation = DefaultLifeCycle.defaultAsyncBooleanSolution,
});
}
diff --git a/lib/business_logic/life_cycle/new_contact_life_cycle.dart b/lib/business_logic/life_cycle/new_contact_life_cycle.dart
index b754a37..34d4714 100644
--- a/lib/business_logic/life_cycle/new_contact_life_cycle.dart
+++ b/lib/business_logic/life_cycle/new_contact_life_cycle.dart
@@ -13,8 +13,8 @@ class NewContactLifeCycle {
NewContactLifeCycle({
this.shouldAcceptContactApplication =
- DefaultLifeCycle.defaultBooleanSolution,
+ DefaultLifeCycle.defaultAsyncBooleanSolution,
this.shouldRefuseContactApplication =
- DefaultLifeCycle.defaultBooleanSolution,
+ DefaultLifeCycle.defaultAsyncBooleanSolution,
});
}
diff --git a/lib/business_logic/life_cycle/profile_life_cycle.dart b/lib/business_logic/life_cycle/profile_life_cycle.dart
index b46fa2c..80b6850 100644
--- a/lib/business_logic/life_cycle/profile_life_cycle.dart
+++ b/lib/business_logic/life_cycle/profile_life_cycle.dart
@@ -24,10 +24,10 @@ class ProfileLifeCycle {
FutureBool Function(String userID) didRemarkUpdated;
ProfileLifeCycle({
- this.didRemarkUpdated = DefaultLifeCycle.defaultBooleanSolution,
+ this.didRemarkUpdated = DefaultLifeCycle.defaultAsyncBooleanSolution,
this.didGetFriendInfo = DefaultLifeCycle.defaultFriendInfoSolution,
- this.shouldAddToBlockList = DefaultLifeCycle.defaultBooleanSolution,
- this.shouldAddFriend = DefaultLifeCycle.defaultBooleanSolution,
- this.shouldDeleteFriend = DefaultLifeCycle.defaultBooleanSolution,
+ this.shouldAddToBlockList = DefaultLifeCycle.defaultAsyncBooleanSolution,
+ this.shouldAddFriend = DefaultLifeCycle.defaultAsyncBooleanSolution,
+ this.shouldDeleteFriend = DefaultLifeCycle.defaultAsyncBooleanSolution,
});
}
diff --git a/lib/business_logic/separate_models/tui_chat_model_tools.dart b/lib/business_logic/separate_models/tui_chat_model_tools.dart
index 624b8ab..97040e8 100644
--- a/lib/business_logic/separate_models/tui_chat_model_tools.dart
+++ b/lib/business_logic/separate_models/tui_chat_model_tools.dart
@@ -1,4 +1,5 @@
import 'dart:convert';
+import 'dart:io';
import 'package:tencent_cloud_chat_uikit/ui/views/TIMUIKitChat/tim_uikit_cloud_custom_data.dart';
import 'package:tencent_im_base/tencent_im_base.dart';
@@ -173,4 +174,14 @@ class TUIChatModelTools {
return null;
}
}
+
+ Future hasZeroSize(String filePath) async {
+ try {
+ final file = File(filePath);
+ final fileSize = await file.length();
+ return fileSize == 0;
+ } catch (e) {
+ return false;
+ }
+ }
}
diff --git a/lib/business_logic/separate_models/tui_chat_separate_view_model.dart b/lib/business_logic/separate_models/tui_chat_separate_view_model.dart
index 6cfeeae..040df7c 100644
--- a/lib/business_logic/separate_models/tui_chat_separate_view_model.dart
+++ b/lib/business_logic/separate_models/tui_chat_separate_view_model.dart
@@ -3,6 +3,7 @@ import 'dart:convert';
import 'dart:io';
import 'dart:math';
+import 'package:collection/collection.dart';
import 'package:flutter/cupertino.dart';
// ignore: unnecessary_import
@@ -177,16 +178,18 @@ class TUIChatSeparateViewModel extends ChangeNotifier {
setInputField = onChangeInputField;
conversationType = convType;
conversationID = convID;
+
+ _groupType = null;
+ isGroupExist = true;
+ _groupInfo = null;
+ groupMemberList?.clear();
+ selfMemberInfo = null;
+
if (conversationType == ConvType.group) {
globalModel.refreshGroupApplicationList();
- getGroupInfo(groupID ?? convID);
+ loadGroupInfo(groupID ?? convID);
loadGroupMemberList(groupID: groupID ?? convID);
} else {
- _groupType = null;
- isGroupExist = true;
- _groupInfo = null;
- groupMemberList?.clear();
- selfMemberInfo = null;
notifyListeners();
}
if (conversationType == ConvType.c2c) {
@@ -482,18 +485,6 @@ class TUIChatSeparateViewModel extends ChangeNotifier {
}
}
- loadGroupInfo(String groupID) async {
- final groupInfo =
- await _groupServices.getGroupsInfo(groupIDList: [groupID]);
- if (groupInfo != null) {
- final groupRes = groupInfo.first;
- if (groupRes.resultCode == 0) {
- _groupInfo = groupRes.groupInfo;
- }
- }
- notifyListeners();
- }
-
Future loadGroupMemberList(
{required String groupID, int count = 100, String? seq}) async {
final String? nextSeq = await _loadGroupMemberListFunction(
@@ -503,7 +494,7 @@ class TUIChatSeparateViewModel extends ChangeNotifier {
groupID: groupID, count: count, seq: nextSeq);
} else {
selfMemberInfo = groupMemberList
- ?.firstWhere((e) => e?.userID == selfModel.loginInfo?.userID);
+ ?.firstWhereOrNull((e) => e?.userID == selfModel.loginInfo?.userID);
notifyListeners();
}
}
@@ -513,38 +504,49 @@ class TUIChatSeparateViewModel extends ChangeNotifier {
if (seq == null || seq == "" || seq == "0") {
groupMemberList?.clear();
}
- final res = await _groupServices.getGroupMemberList(
- groupID: groupID,
- filter: GroupMemberFilterTypeEnum.V2TIM_GROUP_MEMBER_FILTER_ALL,
- count: count,
- nextSeq: seq ?? groupMemberListSeq);
- final groupMemberListRes = res.data;
- if (res.code == 0 && groupMemberListRes != null) {
- final groupMemberListTemp = groupMemberListRes.memberInfoList ?? [];
- groupMemberList = [...?groupMemberList, ...groupMemberListTemp];
- groupMemberListSeq = groupMemberListRes.nextSeq ?? "0";
- } else if (res.code == 10010) {
- isGroupExist = false;
- } else if (res.code == 10007) {
- isNotAMember = true;
+ try {
+ final res = await _groupServices.getGroupMemberList(
+ groupID: groupID,
+ filter: GroupMemberFilterTypeEnum.V2TIM_GROUP_MEMBER_FILTER_ALL,
+ count: count,
+ nextSeq: seq ?? groupMemberListSeq);
+ final groupMemberListRes = res.data;
+ if (res.code == 0 && groupMemberListRes != null) {
+ final groupMemberListTemp = groupMemberListRes.memberInfoList ?? [];
+ groupMemberList = [...?groupMemberList, ...groupMemberListTemp];
+ groupMemberListSeq = groupMemberListRes.nextSeq ?? "0";
+ } else if (res.code == 10010) {
+ isGroupExist = false;
+ } else if (res.code == 10007) {
+ isNotAMember = true;
+ }
+ return groupMemberListRes?.nextSeq;
+ } catch (e) {
+ return "";
}
- return groupMemberListRes?.nextSeq;
}
- getGroupInfo(String groupID) async {
- final res = await _groupServices.getGroupsInfo(groupIDList: [groupID]);
- if (res != null) {
- final groupRes = res.first;
+ Future<(V2TimGroupInfo?, GroupReceiptAllowType?)> loadGroupInfo(
+ String groupID) async {
+ final groupInfoList =
+ await _groupServices.getGroupsInfo(groupIDList: [groupID]);
+ if (groupInfoList != null && groupInfoList.isNotEmpty) {
+ final groupRes = groupInfoList.first;
if (groupRes.resultCode == 0) {
+ _groupInfo = groupRes.groupInfo;
+
const groupTypeMap = {
"Meeting": GroupReceiptAllowType.meeting,
"Public": GroupReceiptAllowType.public,
"Work": GroupReceiptAllowType.work
};
- _groupInfo = groupRes.groupInfo;
_groupType = groupTypeMap[groupRes.groupInfo?.groupType];
+
+ notifyListeners();
+ return (_groupInfo, _groupType);
}
}
+ return (null, null);
}
Future updateMessageFromController(
@@ -584,6 +586,9 @@ class TUIChatSeparateViewModel extends ChangeNotifier {
}) async {
String receiver = convType == ConvType.c2c ? convID : '';
String groupID = convType == ConvType.group ? convID : '';
+ if (convType == ConvType.group && _groupType == null) {
+ await loadGroupInfo(groupID);
+ }
final oldGroupType = _groupType != null
? GroupReceptAllowType.values[_groupType!.index]
: null;
@@ -624,6 +629,9 @@ class TUIChatSeparateViewModel extends ChangeNotifier {
globalModel.updateMessage(
sendMsgRes, convID, id, convType, groupType, setInputField);
}
+ if(lifeCycle?.messageDidSend != null){
+ lifeCycle!.messageDidSend(sendMsgRes);
+ }
return sendMsgRes;
}
@@ -875,6 +883,9 @@ class TUIChatSeparateViewModel extends ChangeNotifier {
notifyListeners();
globalModel.updateMessage(sendMsgRes, convID,
messageInfoWithSender.id ?? "", convType, groupType, setInputField);
+ if(lifeCycle?.messageDidSend != null){
+ lifeCycle!.messageDidSend(sendMsgRes);
+ }
return sendMsgRes;
}
}
@@ -1017,6 +1028,14 @@ class TUIChatSeparateViewModel extends ChangeNotifier {
dynamic inputElement,
required String convID,
required ConvType convType}) async {
+ if (await tools.hasZeroSize(filePath ?? "")) {
+ final CoreServicesImpl _coreServices = serviceLocator();
+ _coreServices.callOnCallback(TIMCallback(
+ type: TIMCallbackType.INFO,
+ infoRecommendText: "不支持 0KB 文件的传输",
+ infoCode: 6660417));
+ return null;
+ }
final fileMessageInfo = await _messageService.createFileMessage(
inputElement: inputElement,
fileName: fileName ?? filePath?.split('/').last ?? "",
diff --git a/lib/business_logic/view_models/tui_chat_global_model.dart b/lib/business_logic/view_models/tui_chat_global_model.dart
index 006a67c..f0d5766 100644
--- a/lib/business_logic/view_models/tui_chat_global_model.dart
+++ b/lib/business_logic/view_models/tui_chat_global_model.dart
@@ -48,7 +48,7 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass {
ChatLifeCycle? _lifeCycle;
bool _isDownloading = false;
final List