diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json
new file mode 100644
index 0000000..46c35be
--- /dev/null
+++ b/.dart_tool/package_config.json
@@ -0,0 +1,140 @@
+{
+ "configVersion": 2,
+ "packages": [
+ {
+ "name": "async",
+ "rootUri": "file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/async-2.6.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "boolean_selector",
+ "rootUri": "file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/boolean_selector-2.1.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "characters",
+ "rootUri": "file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/characters-1.1.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "charcode",
+ "rootUri": "file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/charcode-1.2.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "clock",
+ "rootUri": "file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/clock-1.1.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "collection",
+ "rootUri": "file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/collection-1.15.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "fake_async",
+ "rootUri": "file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/fake_async-1.2.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "flutter",
+ "rootUri": "file:///Users/xianghairui/Development/flutter/packages/flutter",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "flutter_test",
+ "rootUri": "file:///Users/xianghairui/Development/flutter/packages/flutter_test",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "matcher",
+ "rootUri": "file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/matcher-0.12.10",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "meta",
+ "rootUri": "file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/meta-1.3.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "path",
+ "rootUri": "file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/path-1.8.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "sky_engine",
+ "rootUri": "file:///Users/xianghairui/Development/flutter/bin/cache/pkg/sky_engine",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "source_span",
+ "rootUri": "file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/source_span-1.8.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "stack_trace",
+ "rootUri": "file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/stack_trace-1.10.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "stream_channel",
+ "rootUri": "file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/stream_channel-2.1.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "string_scanner",
+ "rootUri": "file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/string_scanner-1.1.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "term_glyph",
+ "rootUri": "file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/term_glyph-1.2.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "test_api",
+ "rootUri": "file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/test_api-0.3.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "typed_data",
+ "rootUri": "file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/typed_data-1.3.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "vector_math",
+ "rootUri": "file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/vector_math-2.1.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "flutter_openim_sdk",
+ "rootUri": "../",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ }
+ ],
+ "generated": "2021-06-29T10:21:00.926273Z",
+ "generator": "pub",
+ "generatorVersion": "2.13.0"
+}
diff --git a/.dart_tool/package_config_subset b/.dart_tool/package_config_subset
new file mode 100644
index 0000000..52920bc
--- /dev/null
+++ b/.dart_tool/package_config_subset
@@ -0,0 +1,89 @@
+flutter_openim_sdk
+2.12
+file:///Users/xianghairui/AndroidStudioProjects/Open-IM-SDK-Flutter/
+file:///Users/xianghairui/AndroidStudioProjects/Open-IM-SDK-Flutter/lib/
+async
+2.12
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/async-2.6.1/
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/async-2.6.1/lib/
+boolean_selector
+2.12
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/boolean_selector-2.1.0/
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/boolean_selector-2.1.0/lib/
+characters
+2.12
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/characters-1.1.0/
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/characters-1.1.0/lib/
+charcode
+2.12
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/charcode-1.2.0/
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/charcode-1.2.0/lib/
+clock
+2.12
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/clock-1.1.0/
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/clock-1.1.0/lib/
+collection
+2.12
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/collection-1.15.0/
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/collection-1.15.0/lib/
+fake_async
+2.12
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/fake_async-1.2.0/
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/fake_async-1.2.0/lib/
+matcher
+2.12
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/matcher-0.12.10/
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/matcher-0.12.10/lib/
+meta
+2.12
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/meta-1.3.0/
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/meta-1.3.0/lib/
+path
+2.12
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/path-1.8.0/
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/path-1.8.0/lib/
+source_span
+2.12
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/source_span-1.8.1/
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/source_span-1.8.1/lib/
+stack_trace
+2.12
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/stack_trace-1.10.0/
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/stack_trace-1.10.0/lib/
+stream_channel
+2.12
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/stream_channel-2.1.0/
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/stream_channel-2.1.0/lib/
+string_scanner
+2.12
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/string_scanner-1.1.0/
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/string_scanner-1.1.0/lib/
+term_glyph
+2.12
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/term_glyph-1.2.0/
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/term_glyph-1.2.0/lib/
+test_api
+2.12
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/test_api-0.3.0/
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/test_api-0.3.0/lib/
+typed_data
+2.12
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/typed_data-1.3.0/
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/typed_data-1.3.0/lib/
+vector_math
+2.12
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/vector_math-2.1.0/
+file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/vector_math-2.1.0/lib/
+sky_engine
+2.12
+file:///Users/xianghairui/Development/flutter/bin/cache/pkg/sky_engine/
+file:///Users/xianghairui/Development/flutter/bin/cache/pkg/sky_engine/lib/
+flutter
+2.12
+file:///Users/xianghairui/Development/flutter/packages/flutter/
+file:///Users/xianghairui/Development/flutter/packages/flutter/lib/
+flutter_test
+2.12
+file:///Users/xianghairui/Development/flutter/packages/flutter_test/
+file:///Users/xianghairui/Development/flutter/packages/flutter_test/lib/
+2
diff --git a/.dart_tool/version b/.dart_tool/version
new file mode 100644
index 0000000..e3a4f19
--- /dev/null
+++ b/.dart_tool/version
@@ -0,0 +1 @@
+2.2.0
\ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/Open-IM-SDK-Flutter.iml b/.idea/Open-IM-SDK-Flutter.iml
new file mode 100644
index 0000000..55d90fc
--- /dev/null
+++ b/.idea/Open-IM-SDK-Flutter.iml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Dart_SDK.xml b/.idea/libraries/Dart_SDK.xml
new file mode 100644
index 0000000..a54d004
--- /dev/null
+++ b/.idea/libraries/Dart_SDK.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Flutter_Plugins.xml b/.idea/libraries/Flutter_Plugins.xml
new file mode 100644
index 0000000..53449da
--- /dev/null
+++ b/.idea/libraries/Flutter_Plugins.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..f8c5fc9
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..4652e3f
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml
new file mode 100644
index 0000000..797acea
--- /dev/null
+++ b/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.packages b/.packages
new file mode 100644
index 0000000..759fa85
--- /dev/null
+++ b/.packages
@@ -0,0 +1,28 @@
+# This file is deprecated. Tools should instead consume
+# `.dart_tools/package_config.json`.
+#
+# For more info see: https://dart.dev/go/dot-packages-deprecation
+#
+# Generated by pub on 2021-06-29 18:21:00.912978.
+async:file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/async-2.6.1/lib/
+boolean_selector:file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/boolean_selector-2.1.0/lib/
+characters:file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/characters-1.1.0/lib/
+charcode:file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/charcode-1.2.0/lib/
+clock:file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/clock-1.1.0/lib/
+collection:file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/collection-1.15.0/lib/
+fake_async:file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/fake_async-1.2.0/lib/
+flutter:file:///Users/xianghairui/Development/flutter/packages/flutter/lib/
+flutter_test:file:///Users/xianghairui/Development/flutter/packages/flutter_test/lib/
+matcher:file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/matcher-0.12.10/lib/
+meta:file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/meta-1.3.0/lib/
+path:file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/path-1.8.0/lib/
+sky_engine:file:///Users/xianghairui/Development/flutter/bin/cache/pkg/sky_engine/lib/
+source_span:file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/source_span-1.8.1/lib/
+stack_trace:file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/stack_trace-1.10.0/lib/
+stream_channel:file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/stream_channel-2.1.0/lib/
+string_scanner:file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/string_scanner-1.1.0/lib/
+term_glyph:file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/term_glyph-1.2.0/lib/
+test_api:file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/test_api-0.3.0/lib/
+typed_data:file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/typed_data-1.3.0/lib/
+vector_math:file:///Users/xianghairui/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/vector_math-2.1.0/lib/
+flutter_openim_sdk:lib/
diff --git a/build/test_cache/build/c075001b96339384a97db4862b8ab8db.cache.dill.track.dill b/build/test_cache/build/c075001b96339384a97db4862b8ab8db.cache.dill.track.dill
deleted file mode 100644
index cb72e47..0000000
Binary files a/build/test_cache/build/c075001b96339384a97db4862b8ab8db.cache.dill.track.dill and /dev/null differ