@@ -1 +0,0 @@ | |||||
{"sdk":"2.7.2 (Mon Mar 23 22:11:27 2020 +0100) on \"macos_x64\"","analyzer":"/Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/analyzer-0.39.14","build_resolvers":"/Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/build_resolvers-1.3.11"} |
@@ -1,620 +0,0 @@ | |||||
{ | |||||
"configVersion": 2, | |||||
"packages": [ | |||||
{ | |||||
"name": "archive", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/archive-2.0.13", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "args", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/args-1.6.0", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.3" | |||||
}, | |||||
{ | |||||
"name": "async", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/async-2.4.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.2" | |||||
}, | |||||
{ | |||||
"name": "bloc", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/bloc-4.0.0", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.6" | |||||
}, | |||||
{ | |||||
"name": "boolean_selector", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/boolean_selector-2.0.0", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.4" | |||||
}, | |||||
{ | |||||
"name": "cached_network_image", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/cached_network_image-2.2.0+1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "charcode", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/charcode-1.1.3", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "clock", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/clock-1.0.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "collection", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/collection-1.14.12", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "connectivity", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/connectivity-0.4.9+3", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "connectivity_for_web", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/connectivity_for_web-0.3.1+2", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.6" | |||||
}, | |||||
{ | |||||
"name": "connectivity_macos", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/connectivity_macos-0.1.0+5", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "connectivity_platform_interface", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/connectivity_platform_interface-1.0.6", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "convert", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/convert-2.1.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "1.17" | |||||
}, | |||||
{ | |||||
"name": "crypto", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/crypto-2.1.4", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "device_info", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/device_info-0.4.2+8", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "device_info_platform_interface", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/device_info_platform_interface-1.0.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.7" | |||||
}, | |||||
{ | |||||
"name": "dio", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/dio-3.0.10", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.4" | |||||
}, | |||||
{ | |||||
"name": "equatable", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/equatable-1.2.5", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "event_bus", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/event_bus-1.1.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "ffi", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/ffi-0.1.3", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.6" | |||||
}, | |||||
{ | |||||
"name": "file", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/file-5.2.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.2" | |||||
}, | |||||
{ | |||||
"name": "flutter", | |||||
"rootUri": "file:///Users/fnuser/Documents/flutter-sdk/packages/flutter", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.2" | |||||
}, | |||||
{ | |||||
"name": "flutter_alibc", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/flutter_alibc-0.0.15", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "flutter_bloc", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/flutter_bloc-4.0.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.6" | |||||
}, | |||||
{ | |||||
"name": "flutter_cache_manager", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/flutter_cache_manager-1.4.2", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.6" | |||||
}, | |||||
{ | |||||
"name": "flutter_cupertino_date_picker", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/flutter_cupertino_date_picker-1.0.26+2", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "1.19" | |||||
}, | |||||
{ | |||||
"name": "flutter_native_image", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/flutter_native_image-0.0.5+2", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "1.19" | |||||
}, | |||||
{ | |||||
"name": "flutter_page_indicator", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/flutter_page_indicator-0.0.3", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "flutter_plugin_android_lifecycle", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/flutter_plugin_android_lifecycle-1.0.11", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "flutter_screenutil", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/flutter_screenutil-1.1.0", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.6" | |||||
}, | |||||
{ | |||||
"name": "flutter_swiper", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/flutter_swiper-1.1.6", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "flutter_test", | |||||
"rootUri": "file:///Users/fnuser/Documents/flutter-sdk/packages/flutter_test", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.2" | |||||
}, | |||||
{ | |||||
"name": "flutter_web_plugins", | |||||
"rootUri": "file:///Users/fnuser/Documents/flutter-sdk/packages/flutter_web_plugins", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "fluttertoast", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/fluttertoast-4.0.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "http", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/http-0.12.2", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.4" | |||||
}, | |||||
{ | |||||
"name": "http_parser", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/http_parser-3.1.4", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.3" | |||||
}, | |||||
{ | |||||
"name": "image", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/image-2.1.12", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "image_cropper", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/git/Image_Cropper-e32f2264f86a27a2f5d7a7a5e26c6154eaf5798e/", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "1.20" | |||||
}, | |||||
{ | |||||
"name": "image_picker", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/image_picker-0.6.7+11", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "image_picker_platform_interface", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/image_picker_platform_interface-1.1.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.5" | |||||
}, | |||||
{ | |||||
"name": "intl", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/intl-0.16.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.5" | |||||
}, | |||||
{ | |||||
"name": "jdsdk", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/jdsdk-0.0.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "matcher", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/matcher-0.12.6", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.2" | |||||
}, | |||||
{ | |||||
"name": "meta", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/meta-1.1.8", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "1.12" | |||||
}, | |||||
{ | |||||
"name": "nested", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/nested-0.0.4", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.2" | |||||
}, | |||||
{ | |||||
"name": "package_info", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/package_info-0.4.3", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "path", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/path-1.6.4", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "path_provider", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/path_provider-1.6.18", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "path_provider_linux", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/path_provider_linux-0.0.1+2", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "path_provider_macos", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/path_provider_macos-0.0.4+4", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "path_provider_platform_interface", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/path_provider_platform_interface-1.0.3", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "path_provider_windows", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/path_provider_windows-0.0.4+1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "pedantic", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/pedantic-1.9.0", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "permission_handler", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/git/permission_handler-b8c45c4c20221ac39fe083113fc360cc632f33a4/", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.7" | |||||
}, | |||||
{ | |||||
"name": "permission_handler_platform_interface", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/permission_handler_platform_interface-2.0.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.6" | |||||
}, | |||||
{ | |||||
"name": "petitparser", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/petitparser-2.4.0", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.4" | |||||
}, | |||||
{ | |||||
"name": "platform", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/platform-2.2.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "1.24" | |||||
}, | |||||
{ | |||||
"name": "plugin_platform_interface", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/plugin_platform_interface-1.0.3", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "process", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/process-3.0.13", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "provider", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/provider-4.3.2+2", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.7" | |||||
}, | |||||
{ | |||||
"name": "pull_to_refresh", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/pull_to_refresh-1.6.2", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "quiver", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/quiver-2.1.3", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "rxdart", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/rxdart-0.24.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.6" | |||||
}, | |||||
{ | |||||
"name": "save_image", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/save_image-1.0.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "share_extend", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/share_extend-1.1.9", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "shared_preferences", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences-0.5.12", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "shared_preferences_linux", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences_linux-0.0.2+2", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "shared_preferences_macos", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences_macos-0.0.1+10", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "shared_preferences_platform_interface", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences_platform_interface-1.0.4", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "shared_preferences_web", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences_web-0.1.2+7", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "shared_preferences_windows", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences_windows-0.0.1+1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "sharesdk_plugin", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/sharesdk_plugin-1.2.8", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "shimmer", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shimmer-1.1.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "1.20" | |||||
}, | |||||
{ | |||||
"name": "sky_engine", | |||||
"rootUri": "file:///Users/fnuser/Documents/flutter-sdk/bin/cache/pkg/sky_engine", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "1.11" | |||||
}, | |||||
{ | |||||
"name": "source_span", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/source_span-1.7.0", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.6" | |||||
}, | |||||
{ | |||||
"name": "sqflite", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/sqflite-1.3.1+1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.7" | |||||
}, | |||||
{ | |||||
"name": "sqflite_common", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/sqflite_common-1.0.2+1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.7" | |||||
}, | |||||
{ | |||||
"name": "stack_trace", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/stack_trace-1.9.3", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "1.23" | |||||
}, | |||||
{ | |||||
"name": "stream_channel", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/stream_channel-2.0.0", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "string_scanner", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/string_scanner-1.0.5", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "string_validator", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/string_validator-0.1.4", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "synchronized", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/synchronized-2.2.0+2", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.8" | |||||
}, | |||||
{ | |||||
"name": "tab_indicator_styler", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/tab_indicator_styler-1.0.0", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.7" | |||||
}, | |||||
{ | |||||
"name": "term_glyph", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/term_glyph-1.1.0", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "1.8" | |||||
}, | |||||
{ | |||||
"name": "test_api", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/test_api-0.2.15", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.4" | |||||
}, | |||||
{ | |||||
"name": "transformer_page_view", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/transformer_page_view-0.1.6", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "typed_data", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/typed_data-1.1.6", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "url_launcher", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher-5.7.2", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "url_launcher_linux", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher_linux-0.0.1+1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "url_launcher_macos", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher_macos-0.0.1+8", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "url_launcher_platform_interface", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher_platform_interface-1.0.8", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "url_launcher_web", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher_web-0.1.4+1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.2" | |||||
}, | |||||
{ | |||||
"name": "url_launcher_windows", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher_windows-0.0.1+1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "uuid", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/uuid-2.2.2", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.2" | |||||
}, | |||||
{ | |||||
"name": "vector_math", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/vector_math-2.0.8", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "webview_flutter", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/webview_flutter-0.3.24", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.7" | |||||
}, | |||||
{ | |||||
"name": "win32", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/win32-1.7.3", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.7" | |||||
}, | |||||
{ | |||||
"name": "xdg_directories", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/xdg_directories-0.1.0", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.3" | |||||
}, | |||||
{ | |||||
"name": "xml", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/xml-3.6.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.6" | |||||
}, | |||||
{ | |||||
"name": "zhiying_comm", | |||||
"rootUri": "../../zhiying_comm", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "zhiying_base_widget", | |||||
"rootUri": "../", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
} | |||||
], | |||||
"generated": "2020-10-09T05:51:18.485612Z", | |||||
"generator": "pub", | |||||
"generatorVersion": "2.8.2" | |||||
} |
@@ -0,0 +1,58 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<DevInfor> | |||||
<SinaWeibo Enable="false" /> | |||||
<TencentWeibo Enable="false" /> | |||||
<Douban Enable="false" /> | |||||
<QZone Enable="false" /> | |||||
<Renren Enable="false" /> | |||||
<KaiXin Enable="false" /> | |||||
<Facebook Enable="false" /> | |||||
<Twitter Enable="false" /> | |||||
<Evernote Enable="false" /> | |||||
<FourSquare Enable="false" /> | |||||
<GooglePlus Enable="false" /> | |||||
<Instagram Enable="false" /> | |||||
<LinkedIn Enable="false" /> | |||||
<Tumblr Enable="false" /> | |||||
<Email Enable="false" /> | |||||
<ShortMessage Enable="false" /> | |||||
<Wechat Enable="false" /> | |||||
<WechatMoments Enable="false" /> | |||||
<QQ AppId="1111030588" AppKey="XoHKlrBybXy7ORBt" ShareByAppClient="true" BypassApproval="false" Enable="true" /> | |||||
<Instapaper Enable="false" /> | |||||
<Pocket Enable="false" /> | |||||
<YouDao Enable="false" /> | |||||
<Pinterest Enable="false" /> | |||||
<Flickr Enable="false" /> | |||||
<Dropbox Enable="false" /> | |||||
<VKontakte Enable="false" /> | |||||
<WechatFavorite Enable="false" /> | |||||
<Yixin Enable="false" /> | |||||
<YixinMoments Enable="false" /> | |||||
<Mingdao Enable="false" /> | |||||
<Line Enable="false" /> | |||||
<WhatsApp Enable="false" /> | |||||
<KakaoTalk Enable="false" /> | |||||
<KakaoStory Enable="false" /> | |||||
<FacebookMessenger Enable="false" /> | |||||
<Alipay Enable="false" /> | |||||
<AlipayMoments Enable="false" /> | |||||
<Dingding Enable="false" /> | |||||
<Youtube Enable="false" /> | |||||
<Meipai Enable="false" /> | |||||
<Telegram Enable="false" /> | |||||
<Cmcc Enable="false" /> | |||||
<Reddit Enable="false" /> | |||||
<Telecom Enable="false" /> | |||||
<Accountkit Enable="false" /> | |||||
<Douyin Enable="false" /> | |||||
<Wework Enable="false" /> | |||||
<HWAccount Enable="false" /> | |||||
<Oasis Enable="false" /> | |||||
<XMAccount Enable="false" /> | |||||
<SnapChat Enable="false" /> | |||||
<Kuaishou Enable="false" /> | |||||
<Littleredbook Enable="false" /> | |||||
<Watermelonvideo Enable="false" /> | |||||
<Tiktok Enable="false" /> | |||||
</DevInfor> |
@@ -32,6 +32,7 @@ class _FavoritePageState extends State<FavoritePage> { | |||||
child: Transform.scale( | child: Transform.scale( | ||||
scale: 0.2, | scale: 0.2, | ||||
child: GoodsShareTemplate( | child: GoodsShareTemplate( | ||||
null, | |||||
contentKey: _globalKey, | contentKey: _globalKey, | ||||
), | ), | ||||
), | ), | ||||
@@ -1,5 +1,6 @@ | |||||
import 'dart:async'; | import 'dart:async'; | ||||
import 'package:zhiying_base_widget/pages/goods_share_page/models/goods_share_poster_model.dart'; | |||||
import 'package:zhiying_base_widget/pages/goods_share_page/models/goods_share_temp_add_model.dart'; | import 'package:zhiying_base_widget/pages/goods_share_page/models/goods_share_temp_add_model.dart'; | ||||
import 'package:zhiying_comm/util/base_bloc.dart'; | import 'package:zhiying_comm/util/base_bloc.dart'; | ||||
import 'package:zhiying_comm/zhiying_comm.dart'; | import 'package:zhiying_comm/zhiying_comm.dart'; | ||||
@@ -7,6 +8,7 @@ import 'package:zhiying_comm/zhiying_comm.dart'; | |||||
class GoodsShareData { | class GoodsShareData { | ||||
List<Map<String, dynamic>> tabs; | List<Map<String, dynamic>> tabs; | ||||
List<GoodsShareTempDataModel> datas; | List<GoodsShareTempDataModel> datas; | ||||
GoodsSharePosterModel poster; | |||||
} | } | ||||
class GoodsShareBloc extends BlocBase { | class GoodsShareBloc extends BlocBase { | ||||
@@ -31,6 +33,8 @@ class GoodsShareBloc extends BlocBase { | |||||
return GoodsShareTempDataModel.fromJson(Map<String, dynamic>.from(item)); | return GoodsShareTempDataModel.fromJson(Map<String, dynamic>.from(item)); | ||||
}).toList(); | }).toList(); | ||||
_data.poster = await _loadPoster(params); | |||||
NetUtil.request( | NetUtil.request( | ||||
'/api/v1/mod/pub.flutter.share?share_type=${shopType.toString()}', | '/api/v1/mod/pub.flutter.share?share_type=${shopType.toString()}', | ||||
method: NetMethod.GET, | method: NetMethod.GET, | ||||
@@ -54,4 +58,12 @@ class GoodsShareBloc extends BlocBase { | |||||
Logger.error(err); | Logger.error(err); | ||||
} | } | ||||
} | } | ||||
// 请求分享海报 | |||||
Future<GoodsSharePosterModel> _loadPoster(Map<String, dynamic> params) async { | |||||
var json = await NetUtil.post('/api/v1/share/poster', params: params); | |||||
Map<String, dynamic> data = Map<String, dynamic>.from(json['data']); | |||||
return GoodsSharePosterModel.fromJson(data); | |||||
} | |||||
} | } |
@@ -49,6 +49,7 @@ class _GoodsSharePreviewState extends State<GoodsSharePreview> { | |||||
GoodsShareItem( | GoodsShareItem( | ||||
child: GoodsShareEdit( | child: GoodsShareEdit( | ||||
'至高减600【24期免息】xiaomi/小米10Pro 5G手机骁龙865智能游戏拍照手机官方旗舰店小米10青春正品k305g现货\n\n原价】3999元\n券后价】3989元\n【用智莺生活再省】19.74元\n-------------\n復製(FRH51Lu9hYF),\n用【Tao·寳】下单\n-------------\n商品链接】\nhttp://hsrj3.cn/ps/FRH51Lu9hYF.html)\n', | '至高减600【24期免息】xiaomi/小米10Pro 5G手机骁龙865智能游戏拍照手机官方旗舰店小米10青春正品k305g现货\n\n原价】3999元\n券后价】3989元\n【用智莺生活再省】19.74元\n-------------\n復製(FRH51Lu9hYF),\n用【Tao·寳】下单\n-------------\n商品链接】\nhttp://hsrj3.cn/ps/FRH51Lu9hYF.html)\n', | ||||
null, | |||||
), | ), | ||||
), | ), | ||||
Padding( | Padding( | ||||
@@ -1,19 +1,23 @@ | |||||
import 'dart:convert' as convert; | import 'dart:convert' as convert; | ||||
import 'dart:io'; | import 'dart:io'; | ||||
import 'dart:typed_data'; | import 'dart:typed_data'; | ||||
import 'dart:ui' as ui; | |||||
import 'package:flutter/cupertino.dart'; | import 'package:flutter/cupertino.dart'; | ||||
import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
import 'package:flutter/rendering.dart'; | |||||
import 'package:flutter/services.dart'; | import 'package:flutter/services.dart'; | ||||
import 'package:fluttertoast/fluttertoast.dart'; | import 'package:fluttertoast/fluttertoast.dart'; | ||||
import 'package:save_image/save_image.dart'; | import 'package:save_image/save_image.dart'; | ||||
import 'package:zhiying_base_widget/pages/goods_share_page/goods_share_editor/goods_share_editor.dart'; | import 'package:zhiying_base_widget/pages/goods_share_page/goods_share_editor/goods_share_editor.dart'; | ||||
import 'package:zhiying_base_widget/pages/goods_share_page/goods_share_image/goods_share_image_model.dart'; | import 'package:zhiying_base_widget/pages/goods_share_page/goods_share_image/goods_share_image_model.dart'; | ||||
import 'package:zhiying_base_widget/pages/goods_share_page/models/goods_share_poster_model.dart'; | |||||
import 'package:zhiying_base_widget/pages/goods_share_page/models/goods_share_temp_add_model.dart'; | import 'package:zhiying_base_widget/pages/goods_share_page/models/goods_share_temp_add_model.dart'; | ||||
import 'package:zhiying_base_widget/pages/goods_share_page/widgets/good_share_msg.dart'; | import 'package:zhiying_base_widget/pages/goods_share_page/widgets/good_share_msg.dart'; | ||||
import 'package:zhiying_base_widget/pages/goods_share_page/widgets/goods_share_edit.dart'; | import 'package:zhiying_base_widget/pages/goods_share_page/widgets/goods_share_edit.dart'; | ||||
import 'package:zhiying_base_widget/pages/goods_share_page/widgets/goods_share_image.dart'; | import 'package:zhiying_base_widget/pages/goods_share_page/widgets/goods_share_image.dart'; | ||||
import 'package:zhiying_base_widget/pages/goods_share_page/widgets/goods_share_item.dart'; | import 'package:zhiying_base_widget/pages/goods_share_page/widgets/goods_share_item.dart'; | ||||
import 'package:zhiying_base_widget/template/goods_share_template/goods_share_template.dart'; | |||||
import 'package:zhiying_base_widget/utils/image_download_util/image_download_util.dart'; | import 'package:zhiying_base_widget/utils/image_download_util/image_download_util.dart'; | ||||
import 'package:zhiying_base_widget/widgets/public/custom_button/custom_bottom.dart'; | import 'package:zhiying_base_widget/widgets/public/custom_button/custom_bottom.dart'; | ||||
import 'package:zhiying_base_widget/widgets/public/custom_button/custom_button_model.dart'; | import 'package:zhiying_base_widget/widgets/public/custom_button/custom_button_model.dart'; | ||||
@@ -23,22 +27,32 @@ import 'package:zhiying_base_widget/widgets/share/share_alert.dart'; | |||||
class GoodsShareImage extends StatefulWidget { | class GoodsShareImage extends StatefulWidget { | ||||
final Map<String, dynamic> model; | final Map<String, dynamic> model; | ||||
final GoodsShareTempDataModel datas; | final GoodsShareTempDataModel datas; | ||||
final GoodsSharePosterModel poster; | |||||
const GoodsShareImage(this.model, this.datas, {Key key}) : super(key: key); | const GoodsShareImage(this.model, this.datas, {Key key, this.poster}) | ||||
: super(key: key); | |||||
@override | @override | ||||
_GoodsShareImageState createState() => _GoodsShareImageState(); | _GoodsShareImageState createState() => _GoodsShareImageState(); | ||||
} | } | ||||
class _GoodsShareImageState extends State<GoodsShareImage> { | class _GoodsShareImageState extends State<GoodsShareImage> | ||||
with AutomaticKeepAliveClientMixin { | |||||
GlobalKey _globalKey = GlobalKey(); | |||||
GoodsShareImageModel _style; | GoodsShareImageModel _style; | ||||
Map<int, String> _images = Map(); | Map<int, String> _images = Map(); | ||||
List<Widget> widgets = List(); | List<Widget> widgets = List(); | ||||
String _content = ''; | String _content = ''; | ||||
bool _isContentSelected = false; | |||||
bool _isPosterSelected = false; | |||||
// 分享数据 | // 分享数据 | ||||
final ShareDataModel _shareModel = ShareDataModel(); | final ShareDataModel _shareModel = ShareDataModel(); | ||||
@override | |||||
// 切换Tab导航栏保持页面状态 | |||||
bool get wantKeepAlive => true; | |||||
@override | @override | ||||
void initState() { | void initState() { | ||||
String data = widget.model['data']; | String data = widget.model['data']; | ||||
@@ -57,6 +71,7 @@ class _GoodsShareImageState extends State<GoodsShareImage> { | |||||
imgCheckSelected: _style.cssList.chooseImage, | imgCheckSelected: _style.cssList.chooseImage, | ||||
child: GoodsShareEdit( | child: GoodsShareEdit( | ||||
_content, | _content, | ||||
widget.datas, | |||||
imgCheck: _style.cssList.unChooseImage, | imgCheck: _style.cssList.unChooseImage, | ||||
imgCheckSelected: _style.cssList.chooseImage, | imgCheckSelected: _style.cssList.chooseImage, | ||||
onCopyClick: () { | onCopyClick: () { | ||||
@@ -69,9 +84,15 @@ class _GoodsShareImageState extends State<GoodsShareImage> { | |||||
Navigator.push(context, | Navigator.push(context, | ||||
MaterialPageRoute(builder: (context) => GoodsShareEditor())); | MaterialPageRoute(builder: (context) => GoodsShareEditor())); | ||||
}, | }, | ||||
onTempChange: (temp) { | |||||
setState(() { | |||||
_content = widget.datas.shareContent + temp; | |||||
}); | |||||
}, | |||||
), | ), | ||||
onSelected: (isSelected) { | onSelected: (isSelected) { | ||||
_shareModel.content = isSelected ? _content : ''; | _isContentSelected = isSelected; | ||||
// _shareModel.content = isSelected ? _content : ''; | |||||
}, | }, | ||||
)); | )); | ||||
for (String message in _style.customContent) { | for (String message in _style.customContent) { | ||||
@@ -85,6 +106,31 @@ class _GoodsShareImageState extends State<GoodsShareImage> { | |||||
), | ), | ||||
); | ); | ||||
} | } | ||||
widgets.add( | |||||
GoodsShareItem( | |||||
imgHeader: _style.cssList.headerImage, | |||||
imgCheck: _style.cssList.unChooseImage, | |||||
imgCheckSelected: _style.cssList.chooseImage, | |||||
enabled: true, | |||||
child: Container( | |||||
// color: Colors.redAccent, | |||||
width: 100, | |||||
height: 140, | |||||
padding: EdgeInsets.only(left: 25), | |||||
child: Transform.scale( | |||||
alignment: Alignment.centerLeft, | |||||
scale: 0.2, | |||||
child: GoodsShareTemplate( | |||||
widget.poster, | |||||
contentKey: _globalKey, | |||||
), | |||||
), | |||||
), | |||||
onSelected: (isSelected) { | |||||
_isPosterSelected = isSelected; | |||||
}, | |||||
), | |||||
); | |||||
for (int index = 0; index < _style.customImage.length; index++) { | for (int index = 0; index < _style.customImage.length; index++) { | ||||
String image = _style.customImage[index]; | String image = _style.customImage[index]; | ||||
// 分享图片 | // 分享图片 | ||||
@@ -201,6 +247,8 @@ class _GoodsShareImageState extends State<GoodsShareImage> { | |||||
} | } | ||||
void _saveImages() async { | void _saveImages() async { | ||||
_updateModel(); | |||||
List<String> images = List(); | List<String> images = List(); | ||||
for (int index = 0; index < _style.customImage.length; index++) { | for (int index = 0; index < _style.customImage.length; index++) { | ||||
if (_images.containsKey(index)) { | if (_images.containsKey(index)) { | ||||
@@ -213,25 +261,48 @@ class _GoodsShareImageState extends State<GoodsShareImage> { | |||||
_shareModel.image = null; | _shareModel.image = null; | ||||
} | } | ||||
if ((_shareModel.image == null || _shareModel.image.length == 0)) { | if ((_shareModel.image == null || _shareModel.image.length == 0) && | ||||
_shareModel.poster == null) { | |||||
Fluttertoast.showToast(msg: '请选择要保存的图片'); | Fluttertoast.showToast(msg: '请选择要保存的图片'); | ||||
return; | return; | ||||
} | } | ||||
bool isSaveSuccess = false; | |||||
if (_shareModel.poster != null) { | |||||
isSaveSuccess = await SaveImage.save(imageBytes: _shareModel.poster); | |||||
} | |||||
List<String> paths = await ImageDownloadUtil.download(images); | List<String> paths = await ImageDownloadUtil.download(images); | ||||
paths.forEach((path) async { | paths.forEach((path) async { | ||||
Uint8List data = File(path).readAsBytesSync(); | Uint8List data = File(path).readAsBytesSync(); | ||||
bool isSaveSuccess = await SaveImage.save(imageBytes: data); | isSaveSuccess = await SaveImage.save(imageBytes: data); | ||||
if (!isSaveSuccess) { | |||||
Fluttertoast.showToast(msg: '保存失败'); | |||||
return; | |||||
} | |||||
}); | }); | ||||
Fluttertoast.showToast(msg: '保存成功'); | if (isSaveSuccess) | ||||
Fluttertoast.showToast(msg: '保存成功'); | |||||
else | |||||
Fluttertoast.showToast(msg: '保存失败'); | |||||
} | |||||
void _updateModel() async { | |||||
if (_isPosterSelected) { | |||||
BuildContext buildContext = _globalKey.currentContext; | |||||
if (null != buildContext) { | |||||
RenderRepaintBoundary boundary = buildContext.findRenderObject(); | |||||
ui.Image image = await boundary.toImage(pixelRatio: 2.0); | |||||
// 注意:png是压缩后格式,如果需要图片的原始像素数据,请使用rawRgba | |||||
ByteData byteData = | |||||
await image.toByteData(format: ui.ImageByteFormat.png); | |||||
Uint8List pngBytes = byteData.buffer.asUint8List(); | |||||
_shareModel.poster = pngBytes; | |||||
} | |||||
} else { | |||||
_shareModel.poster = null; | |||||
} | |||||
_shareModel.content = _isContentSelected ? _content : ''; | |||||
} | } | ||||
// 弹出分享框 | // 弹出分享框 | ||||
void _showShareAlert() async { | void _showShareAlert() async { | ||||
_updateModel(); | |||||
List<String> images = List(); | List<String> images = List(); | ||||
for (int index = 0; index < _style.customImage.length; index++) { | for (int index = 0; index < _style.customImage.length; index++) { | ||||
if (_images.containsKey(index)) { | if (_images.containsKey(index)) { | ||||
@@ -247,7 +318,8 @@ class _GoodsShareImageState extends State<GoodsShareImage> { | |||||
if ((_shareModel.title == null || _shareModel.title == '') && | if ((_shareModel.title == null || _shareModel.title == '') && | ||||
(_shareModel.image == null || _shareModel.image.length == 0) && | (_shareModel.image == null || _shareModel.image.length == 0) && | ||||
(_shareModel.content == null || _shareModel.content == '') && | (_shareModel.content == null || _shareModel.content == '') && | ||||
(_shareModel.url == null || _shareModel.url == '')) { | (_shareModel.url == null || _shareModel.url == '') && | ||||
(_shareModel.poster == null)) { | |||||
Fluttertoast.showToast(msg: '请选择要分享的内容'); | Fluttertoast.showToast(msg: '请选择要分享的内容'); | ||||
return; | return; | ||||
} | } | ||||
@@ -27,7 +27,8 @@ class GoodsShareLink extends StatefulWidget { | |||||
_GoodsShareLinkState createState() => _GoodsShareLinkState(); | _GoodsShareLinkState createState() => _GoodsShareLinkState(); | ||||
} | } | ||||
class _GoodsShareLinkState extends State<GoodsShareLink> { | class _GoodsShareLinkState extends State<GoodsShareLink> | ||||
with AutomaticKeepAliveClientMixin { | |||||
GoodsShareImageModel _style; | GoodsShareImageModel _style; | ||||
Map<int, String> _images = Map(); | Map<int, String> _images = Map(); | ||||
List<Widget> widgets = List(); | List<Widget> widgets = List(); | ||||
@@ -35,6 +36,10 @@ class _GoodsShareLinkState extends State<GoodsShareLink> { | |||||
// 分享数据 | // 分享数据 | ||||
final ShareDataModel _shareModel = ShareDataModel(); | final ShareDataModel _shareModel = ShareDataModel(); | ||||
@override | |||||
// 切换Tab导航栏保持页面状态 | |||||
bool get wantKeepAlive => true; | |||||
@override | @override | ||||
void initState() { | void initState() { | ||||
String data = widget.model['data']; | String data = widget.model['data']; | ||||
@@ -66,6 +71,7 @@ class _GoodsShareLinkState extends State<GoodsShareLink> { | |||||
enabled: false, | enabled: false, | ||||
child: GoodsShareEdit( | child: GoodsShareEdit( | ||||
_style.content, | _style.content, | ||||
widget.datas, | |||||
onCopyClick: () { | onCopyClick: () { | ||||
Fluttertoast.showToast(msg: '复制成功'); | Fluttertoast.showToast(msg: '复制成功'); | ||||
}, | }, | ||||
@@ -15,7 +15,12 @@ class GoodsShareMiniprogram extends StatefulWidget { | |||||
_GoodsShareMiniprogramState createState() => _GoodsShareMiniprogramState(); | _GoodsShareMiniprogramState createState() => _GoodsShareMiniprogramState(); | ||||
} | } | ||||
class _GoodsShareMiniprogramState extends State<GoodsShareMiniprogram> { | class _GoodsShareMiniprogramState extends State<GoodsShareMiniprogram> | ||||
with AutomaticKeepAliveClientMixin { | |||||
@override | |||||
// 切换Tab导航栏保持页面状态 | |||||
bool get wantKeepAlive => true; | |||||
@override | @override | ||||
Widget build(BuildContext context) { | Widget build(BuildContext context) { | ||||
return Container( | return Container( | ||||
@@ -83,7 +83,11 @@ class _GoodsShareContainerState extends State<_GoodsShareContainer> | |||||
_tabs.add(_createTabItem(item['title'])); | _tabs.add(_createTabItem(item['title'])); | ||||
String mod_name = item['mod_name']; | String mod_name = item['mod_name']; | ||||
if (mod_name == 'share_goods_image.taobao') { | if (mod_name == 'share_goods_image.taobao') { | ||||
_contents.add(GoodsShareImage(item, model)); | _contents.add(GoodsShareImage( | ||||
item, | |||||
model, | |||||
poster: data.poster, | |||||
)); | |||||
} else if (mod_name == 'share_goods_link.taobao') { | } else if (mod_name == 'share_goods_link.taobao') { | ||||
_contents.add(GoodsShareLink(item, model)); | _contents.add(GoodsShareLink(item, model)); | ||||
} else if (mod_name == 'share_goods_mini.taobao') { | } else if (mod_name == 'share_goods_mini.taobao') { | ||||
@@ -0,0 +1,52 @@ | |||||
class GoodsSharePosterModel { | |||||
String qrcode; | |||||
String avatar; | |||||
String title; | |||||
String provider; | |||||
String posterImage; | |||||
String inviteCode; | |||||
String couponPrice; | |||||
String coupon; | |||||
String marketPrice; | |||||
String style; | |||||
GoodsSharePosterModel( | |||||
{this.qrcode, | |||||
this.avatar, | |||||
this.title, | |||||
this.provider, | |||||
this.posterImage, | |||||
this.inviteCode, | |||||
this.couponPrice, | |||||
this.coupon, | |||||
this.marketPrice, | |||||
this.style}); | |||||
GoodsSharePosterModel.fromJson(Map<String, dynamic> json) { | |||||
qrcode = json['qrcode']; | |||||
avatar = json['avatar']; | |||||
title = json['title']; | |||||
provider = json['provider']; | |||||
posterImage = json['poster_image']; | |||||
inviteCode = json['invite_code']; | |||||
couponPrice = json['coupon_price']; | |||||
coupon = json['coupon']; | |||||
marketPrice = json['market_price']; | |||||
style = json['style']; | |||||
} | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
data['qrcode'] = this.qrcode; | |||||
data['avatar'] = this.avatar; | |||||
data['title'] = this.title; | |||||
data['provider'] = this.provider; | |||||
data['poster_image'] = this.posterImage; | |||||
data['invite_code'] = this.inviteCode; | |||||
data['coupon_price'] = this.couponPrice; | |||||
data['coupon'] = this.coupon; | |||||
data['market_price'] = this.marketPrice; | |||||
data['style'] = this.style; | |||||
return data; | |||||
} | |||||
} |
@@ -0,0 +1,68 @@ | |||||
class GoodsSharePosterStyleModel { | |||||
String inviteCodeFontColor; | |||||
String inviteCodeBgColor; | |||||
String providerNameColor; | |||||
String providerBgColor; | |||||
String titleColor; | |||||
String couponpriceColor; | |||||
String couponpriceBgColor; | |||||
String couponColor; | |||||
String couponBgColor; | |||||
String marketPriceColor; | |||||
String fingerprintImg; | |||||
String fingerprintText; | |||||
String fingerprintTextColor; | |||||
String applogImg; | |||||
GoodsSharePosterStyleModel( | |||||
{this.inviteCodeFontColor, | |||||
this.inviteCodeBgColor, | |||||
this.providerNameColor, | |||||
this.providerBgColor, | |||||
this.titleColor, | |||||
this.couponpriceColor, | |||||
this.couponpriceBgColor, | |||||
this.couponColor, | |||||
this.couponBgColor, | |||||
this.marketPriceColor, | |||||
this.fingerprintImg, | |||||
this.fingerprintText, | |||||
this.fingerprintTextColor, | |||||
this.applogImg}); | |||||
GoodsSharePosterStyleModel.fromJson(Map<String, dynamic> json) { | |||||
inviteCodeFontColor = json['invite_code_font_color']; | |||||
inviteCodeBgColor = json['invite_code_bg_color']; | |||||
providerNameColor = json['provider_name_color']; | |||||
providerBgColor = json['provider_bg_color']; | |||||
titleColor = json['title_color']; | |||||
couponpriceColor = json['couponprice_color']; | |||||
couponpriceBgColor = json['couponprice_bg_color']; | |||||
couponColor = json['coupon_color']; | |||||
couponBgColor = json['coupon_bg_color']; | |||||
marketPriceColor = json['market_price_color']; | |||||
fingerprintImg = json['fingerprint_img']; | |||||
fingerprintText = json['fingerprint_text']; | |||||
fingerprintTextColor = json['fingerprint_text_color']; | |||||
applogImg = json['applog_img']; | |||||
} | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
data['invite_code_font_color'] = this.inviteCodeFontColor; | |||||
data['invite_code_bg_color'] = this.inviteCodeBgColor; | |||||
data['provider_name_color'] = this.providerNameColor; | |||||
data['provider_bg_color'] = this.providerBgColor; | |||||
data['title_color'] = this.titleColor; | |||||
data['couponprice_color'] = this.couponpriceColor; | |||||
data['couponprice_bg_color'] = this.couponpriceBgColor; | |||||
data['coupon_color'] = this.couponColor; | |||||
data['coupon_bg_color'] = this.couponBgColor; | |||||
data['market_price_color'] = this.marketPriceColor; | |||||
data['fingerprint_img'] = this.fingerprintImg; | |||||
data['fingerprint_text'] = this.fingerprintText; | |||||
data['fingerprint_text_color'] = this.fingerprintTextColor; | |||||
data['applog_img'] = this.applogImg; | |||||
return data; | |||||
} | |||||
} |
@@ -1,28 +1,80 @@ | |||||
import 'package:cached_network_image/cached_network_image.dart'; | import 'package:cached_network_image/cached_network_image.dart'; | ||||
import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
import 'package:zhiying_base_widget/pages/goods_share_page/models/goods_share_temp_add_model.dart'; | |||||
class GoodsShareEdit extends StatelessWidget { | class GoodsShareEdit extends StatefulWidget { | ||||
final String message; | final String message; | ||||
final GoodsShareTempDataModel model; | |||||
final VoidCallback onEditorClick; | final VoidCallback onEditorClick; | ||||
final VoidCallback onCopyClick; | final VoidCallback onCopyClick; | ||||
final ValueChanged<String> onTempChange; | |||||
final String imgCheck; | final String imgCheck; | ||||
final String imgCheckSelected; | final String imgCheckSelected; | ||||
final String imgEdit; | final String imgEdit; | ||||
final String imgCopy; | final String imgCopy; | ||||
const GoodsShareEdit(this.message, | const GoodsShareEdit(this.message, this.model, | ||||
{Key key, | {Key key, | ||||
this.onEditorClick, | this.onEditorClick, | ||||
this.onCopyClick, | this.onCopyClick, | ||||
this.onTempChange, | |||||
this.imgCheck, | this.imgCheck, | ||||
this.imgCheckSelected, | this.imgCheckSelected, | ||||
this.imgEdit, | this.imgEdit, | ||||
this.imgCopy}) | this.imgCopy}) | ||||
: super(key: key); | : super(key: key); | ||||
@override | |||||
_GoodsShareEditState createState() => _GoodsShareEditState(); | |||||
} | |||||
class _GoodsShareEditState extends State<GoodsShareEdit> { | |||||
List<bool> _isItemSelected; | |||||
@override | |||||
void initState() { | |||||
_isItemSelected = List.generate( | |||||
widget.model?.shareTemplate?.length ?? 0, (index) => false); | |||||
super.initState(); | |||||
} | |||||
void _checkSelected() { | |||||
String result = ''; | |||||
for (int index = 0; | |||||
index < widget.model.shareTemplate.length && | |||||
index < _isItemSelected.length; | |||||
index++) { | |||||
if (_isItemSelected[index]) { | |||||
result += '\n' + widget.model.shareTemplate[index].temp; | |||||
} | |||||
} | |||||
if (widget.onTempChange != null) { | |||||
widget.onTempChange(result); | |||||
} | |||||
} | |||||
@override | @override | ||||
Widget build(BuildContext context) { | Widget build(BuildContext context) { | ||||
List<Widget> widgets = List.generate( | |||||
widget.model?.shareTemplate?.length ?? 0, | |||||
(index) => GestureDetector( | |||||
behavior: HitTestBehavior.opaque, | |||||
child: GoodsShareCheckButton( | |||||
widget.model.shareTemplate[index].name, | |||||
imgIcon: widget.imgCheck, | |||||
imgIconSelected: widget.imgCheckSelected, | |||||
isSelected: _isItemSelected[index], | |||||
), | |||||
onTap: () { | |||||
setState(() { | |||||
_isItemSelected[index] = !_isItemSelected[index]; | |||||
}); | |||||
_checkSelected(); | |||||
}, | |||||
)).toList(); | |||||
return Container( | return Container( | ||||
margin: EdgeInsets.only(left: 10, right: 10), | margin: EdgeInsets.only(left: 10, right: 10), | ||||
// padding: EdgeInsets.only(left: 16, top: 10, right: 16, bottom: 10), | // padding: EdgeInsets.only(left: 16, top: 10, right: 16, bottom: 10), | ||||
@@ -35,89 +87,64 @@ class GoodsShareEdit extends StatelessWidget { | |||||
padding: | padding: | ||||
const EdgeInsets.only(left: 16, top: 10, right: 16, bottom: 10), | const EdgeInsets.only(left: 16, top: 10, right: 16, bottom: 10), | ||||
child: Text( | child: Text( | ||||
message, | widget.message, | ||||
style: TextStyle( | style: TextStyle( | ||||
fontSize: 11, | fontSize: 11, | ||||
fontWeight: FontWeight.bold, | fontWeight: FontWeight.bold, | ||||
), | ), | ||||
), | ), | ||||
), | ), | ||||
// Container( | Container( | ||||
// padding: | padding: | ||||
// const EdgeInsets.only(left: 16, top: 6, bottom: 6, right: 16), | const EdgeInsets.only(left: 16, top: 6, bottom: 6, right: 16), | ||||
// width: double.infinity, | width: double.infinity, | ||||
// child: Wrap( | child: Wrap( | ||||
// spacing: 10, | spacing: 10, | ||||
// runSpacing: 6, | runSpacing: 6, | ||||
// children: <Widget>[ | children: widgets, | ||||
// GoodsShareCheckButton( | ), | ||||
// '标题', | ), | ||||
// imgIcon: this.imgCheck, | Container( | ||||
// imgIconSelected: this.imgCheckSelected, | width: double.infinity, | ||||
// isSelected: false, | height: 0.5, | ||||
// ), | color: Color(0xffececec), | ||||
// GoodsShareCheckButton( | ), | ||||
// '收益', | Container( | ||||
// imgIcon: this.imgCheck, | height: 44, | ||||
// imgIconSelected: this.imgCheckSelected, | child: Row( | ||||
// isSelected: false, | children: <Widget>[ | ||||
// ), | Expanded( | ||||
// GoodsShareCheckButton( | child: GestureDetector( | ||||
// '邀请码', | child: Container( | ||||
// imgIcon: this.imgCheck, | color: Colors.transparent, | ||||
// imgIconSelected: this.imgCheckSelected, | child: GoodsShareCheckButton( | ||||
// isSelected: false, | '编辑模版', | ||||
// ), | isSelected: true, | ||||
// GoodsShareCheckButton( | ), | ||||
// '链接', | ), | ||||
// imgIcon: this.imgCheck, | onTap: widget.onEditorClick, | ||||
// imgIconSelected: this.imgCheckSelected, | ), | ||||
// isSelected: false, | ), | ||||
// ), | Container( | ||||
// ], | width: 0.5, | ||||
// ), | height: 20, | ||||
// ), | color: Color(0xffececec), | ||||
// Container( | ), | ||||
// width: double.infinity, | Expanded( | ||||
// height: 0.5, | child: GestureDetector( | ||||
// color: Color(0xffececec), | child: Container( | ||||
// ), | color: Colors.transparent, | ||||
// Container( | child: GoodsShareCheckButton( | ||||
// height: 44, | '复制文案', | ||||
// child: Row( | isSelected: false, | ||||
// children: <Widget>[ | ), | ||||
// Expanded( | ), | ||||
// child: GestureDetector( | onTap: widget.onCopyClick, | ||||
// child: Container( | ), | ||||
// color: Colors.transparent, | ), | ||||
// child: GoodsShareCheckButton( | ], | ||||
// '编辑模版', | ), | ||||
// isSelected: true, | ) | ||||
// ), | |||||
// ), | |||||
// onTap: onEditorClick, | |||||
// ), | |||||
// ), | |||||
// Container( | |||||
// width: 0.5, | |||||
// height: 20, | |||||
// color: Color(0xffececec), | |||||
// ), | |||||
// Expanded( | |||||
// child: GestureDetector( | |||||
// child: Container( | |||||
// color: Colors.transparent, | |||||
// child: GoodsShareCheckButton( | |||||
// '复制文案', | |||||
// isSelected: false, | |||||
// ), | |||||
// ), | |||||
// onTap: onCopyClick, | |||||
// ), | |||||
// ), | |||||
// ], | |||||
// ), | |||||
// ) | |||||
], | ], | ||||
), | ), | ||||
); | ); | ||||
@@ -1,12 +1,24 @@ | |||||
import 'dart:convert' as convert; | |||||
import 'package:cached_network_image/cached_network_image.dart'; | import 'package:cached_network_image/cached_network_image.dart'; | ||||
import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
import 'package:zhiying_base_widget/pages/goods_share_page/models/goods_share_poster_model.dart'; | |||||
import 'package:zhiying_base_widget/pages/goods_share_page/models/goods_share_poster_style_model.dart'; | |||||
import 'package:zhiying_base_widget/widgets/home/home_quick_entry/cached_network_image_util.dart'; | |||||
import 'package:zhiying_comm/zhiying_comm.dart'; | import 'package:zhiying_comm/zhiying_comm.dart'; | ||||
// 商品详情分享,合成模板 | // 商品详情分享,合成模板 | ||||
class GoodsShareTemplate extends StatelessWidget { | class GoodsShareTemplate extends StatelessWidget { | ||||
final GlobalKey contentKey; | final GlobalKey contentKey; | ||||
final GoodsSharePosterModel model; | |||||
GoodsSharePosterStyleModel _style; | |||||
const GoodsShareTemplate({Key key, this.contentKey}) : super(key: key); | GoodsShareTemplate(this.model, {Key key, this.contentKey}) : super(key: key) { | ||||
String data = model.style; | |||||
Map<String, dynamic> json = | |||||
Map<String, dynamic>.from(convert.jsonDecode(data)); | |||||
_style = GoodsSharePosterStyleModel.fromJson(json); | |||||
} | |||||
@override | @override | ||||
Widget build(BuildContext context) { | Widget build(BuildContext context) { | ||||
@@ -35,18 +47,16 @@ class GoodsShareTemplate extends StatelessWidget { | |||||
Widget _createHeader() { | Widget _createHeader() { | ||||
return Row( | return Row( | ||||
children: <Widget>[ | children: <Widget>[ | ||||
Container( | |||||
width: 30, | |||||
height: 30, | |||||
decoration: BoxDecoration( | |||||
color: Colors.redAccent, borderRadius: BorderRadius.circular(15)), | |||||
), | |||||
Expanded( | Expanded( | ||||
child: Container( | child: Container( | ||||
margin: EdgeInsets.only(left: 10, right: 10), | margin: EdgeInsets.only(left: 10, right: 10), | ||||
height: 30, | height: 30, | ||||
width: 80, | width: 80, | ||||
color: Colors.redAccent, | child: CachedNetworkImage( | ||||
alignment: Alignment.centerLeft, | |||||
fit: BoxFit.fitHeight, | |||||
imageUrl: _style?.applogImg ?? '', | |||||
), | |||||
), | ), | ||||
), | ), | ||||
Container( | Container( | ||||
@@ -55,7 +65,7 @@ class GoodsShareTemplate extends StatelessWidget { | |||||
color: Color(0xfff7f7f7), | color: Color(0xfff7f7f7), | ||||
borderRadius: BorderRadius.circular(30)), | borderRadius: BorderRadius.circular(30)), | ||||
child: Text( | child: Text( | ||||
'邀请码 SDWE45', | '邀请码 ' + (model?.inviteCode ?? ''), | ||||
style: TextStyle(fontSize: 11, fontWeight: FontWeight.bold), | style: TextStyle(fontSize: 11, fontWeight: FontWeight.bold), | ||||
), | ), | ||||
) | ) | ||||
@@ -71,10 +81,12 @@ class GoodsShareTemplate extends StatelessWidget { | |||||
aspectRatio: 1, | aspectRatio: 1, | ||||
child: Container( | child: Container( | ||||
width: double.infinity, | width: double.infinity, | ||||
child: CachedNetworkImage( | child: ClipRRect( | ||||
imageUrl: | borderRadius: BorderRadius.circular(12), | ||||
'https://img.alicdn.com/bao/uploaded/i1/2200818126974/O1CN01HvqWcg21O8mq9EPwf_!!0-item_pic.jpg_500x500.jpg', | child: CachedNetworkImage( | ||||
fit: BoxFit.fitWidth, | imageUrl: model.posterImage, | ||||
fit: BoxFit.fitWidth, | |||||
), | |||||
), | ), | ||||
// color: Colors.redAccent, | // color: Colors.redAccent, | ||||
), | ), | ||||
@@ -109,10 +121,7 @@ class GoodsShareTemplate extends StatelessWidget { | |||||
width: 124, | width: 124, | ||||
height: 124, | height: 124, | ||||
// color: Colors.redAccent, | // color: Colors.redAccent, | ||||
child: CachedNetworkImage( | child: Image.memory(convert.base64Decode(model.qrcode)), | ||||
imageUrl: | |||||
'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1410436569,3239963707&fm=26&gp=0.jpg', | |||||
), | |||||
), | ), | ||||
Container( | Container( | ||||
child: Row( | child: Row( | ||||
@@ -120,8 +129,9 @@ class GoodsShareTemplate extends StatelessWidget { | |||||
Container( | Container( | ||||
width: 14, | width: 14, | ||||
height: 16, | height: 16, | ||||
color: Colors.redAccent, | child: CachedNetworkImage( | ||||
margin: EdgeInsets.only(right: 4), | imageUrl: _style?.fingerprintImg ?? '', | ||||
), | |||||
), | ), | ||||
Text( | Text( | ||||
'长按识别领取优惠', | '长按识别领取优惠', | ||||
@@ -146,7 +156,7 @@ class GoodsShareTemplate extends StatelessWidget { | |||||
padding: EdgeInsets.only(left: 2, right: 2, top: 3, bottom: 3), | padding: EdgeInsets.only(left: 2, right: 2, top: 3, bottom: 3), | ||||
margin: EdgeInsets.only(right: 4), | margin: EdgeInsets.only(right: 4), | ||||
child: Text( | child: Text( | ||||
'淘宝', | model?.provider ?? '', | ||||
style: TextStyle( | style: TextStyle( | ||||
fontSize: 9, | fontSize: 9, | ||||
height: 1, | height: 1, | ||||
@@ -158,7 +168,7 @@ class GoodsShareTemplate extends StatelessWidget { | |||||
), | ), | ||||
)); | )); | ||||
list.add(TextSpan( | list.add(TextSpan( | ||||
text: '小米10至尊纪念版5g手机120X变焦骁龙865小米官方旗舰店小米手机', | text: model?.title ?? '', | ||||
style: TextStyle( | style: TextStyle( | ||||
fontSize: 14, | fontSize: 14, | ||||
color: HexColor.fromHex('#333333'), | color: HexColor.fromHex('#333333'), | ||||
@@ -210,7 +220,7 @@ class GoodsShareTemplate extends StatelessWidget { | |||||
borderRadius: BorderRadius.circular(2.5), | borderRadius: BorderRadius.circular(2.5), | ||||
), | ), | ||||
child: Text( | child: Text( | ||||
'700元券', | model.coupon + '元券', | ||||
textAlign: TextAlign.center, | textAlign: TextAlign.center, | ||||
maxLines: 1, | maxLines: 1, | ||||
style: TextStyle( | style: TextStyle( | ||||
@@ -231,7 +241,7 @@ class GoodsShareTemplate extends StatelessWidget { | |||||
return Padding( | return Padding( | ||||
padding: EdgeInsets.only(bottom: 2), | padding: EdgeInsets.only(bottom: 2), | ||||
child: Text( | child: Text( | ||||
'¥5999', | '¥' + (model?.marketPrice ?? ''), | ||||
style: TextStyle( | style: TextStyle( | ||||
fontSize: 11, | fontSize: 11, | ||||
height: 1, | height: 1, | ||||
@@ -260,7 +270,7 @@ class GoodsShareTemplate extends StatelessWidget { | |||||
), | ), | ||||
), | ), | ||||
TextSpan( | TextSpan( | ||||
text: '5299', | text: model.couponPrice, | ||||
style: TextStyle( | style: TextStyle( | ||||
fontSize: 20, | fontSize: 20, | ||||
color: HexColor.fromHex('#ff4242'), | color: HexColor.fromHex('#ff4242'), | ||||
@@ -1,7 +1,10 @@ | |||||
import 'dart:typed_data'; | |||||
class ShareDataModel { | class ShareDataModel { | ||||
String title; | String title; | ||||
String content; | String content; | ||||
List image; | Uint8List poster; // 海报 | ||||
List image; // 图片地址列表 | |||||
String url; | String url; | ||||
ShareDataModel({ | ShareDataModel({ | ||||
@@ -9,5 +12,6 @@ class ShareDataModel { | |||||
this.content, | this.content, | ||||
this.image, | this.image, | ||||
this.url, | this.url, | ||||
this.poster, | |||||
}); | }); | ||||
} | } |
@@ -63,10 +63,10 @@ class _ShareAlertContentState extends State<_ShareAlertContent> { | |||||
void initState() { | void initState() { | ||||
NetUtil.request('/api/v1/mod/${widget.skipIdentifier}', | NetUtil.request('/api/v1/mod/${widget.skipIdentifier}', | ||||
method: NetMethod.GET, onCache: (data) { | method: NetMethod.GET, onCache: (data) { | ||||
_parseData(data); | _parseData(data); | ||||
}, onSuccess: (data) { | }, onSuccess: (data) { | ||||
_parseData(data); | _parseData(data); | ||||
}, onError: (err) {}); | }, onError: (err) {}); | ||||
super.initState(); | super.initState(); | ||||
} | } | ||||
@@ -118,7 +118,7 @@ class _ShareAlertContentState extends State<_ShareAlertContent> { | |||||
), | ), | ||||
Container( | Container( | ||||
margin: | margin: | ||||
EdgeInsets.only(left: 12, right: 12, top: 10, bottom: 10), | EdgeInsets.only(left: 12, right: 12, top: 10, bottom: 10), | ||||
child: _createIcons(), | child: _createIcons(), | ||||
), | ), | ||||
GestureDetector( | GestureDetector( | ||||
@@ -213,27 +213,70 @@ class _ShareAlertContentState extends State<_ShareAlertContent> { | |||||
} | } | ||||
void _shareByMob(ShareSDKPlatform plateform) async { | void _shareByMob(ShareSDKPlatform plateform) async { | ||||
// dynamic image; | int count = 0; | ||||
if (widget.model.image != null && widget.model.image.length > 1) { | if (widget.model.poster != null) { | ||||
count++; | |||||
} | |||||
count += (widget.model?.image?.length ?? 0); | |||||
// 多图分享 | |||||
if (count > 1) { | |||||
_shareMultipleImages(); | _shareMultipleImages(); | ||||
return; | return; | ||||
} | } | ||||
SSDKMap params; | |||||
if (widget.model.poster != null) { | |||||
// 检查并请求权限 | |||||
// PermissionStatus status = await PermissionHandler().checkPermissionStatus( | |||||
// PermissionGroup.storage); | |||||
// if (PermissionStatus.granted != status) { | |||||
// PermissionHandler().requestPermissions(<PermissionGroup>[ | |||||
// PermissionGroup.storage, | |||||
// ]); | |||||
// } | |||||
// final result = await ImageGallerySaver.saveImage(widget.model.poster); | |||||
//单独公共分享 | // var appDocDir = await getTemporaryDirectory(); | ||||
SSDKMap params = SSDKMap() | // String savePath = appDocDir.path + "/temp.mp4"; | ||||
..setGeneral( | // await Dio().download( | ||||
widget.model.title, | // "http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4", savePath); | ||||
widget.model.content, | // final result = await ImageGallerySaver.saveFile(savePath); | ||||
widget.model.image, | // print(result); | ||||
null, | // List<String> paths = await ImageDownloadUtil.download([ | ||||
null, | // 'https://upload-images.jianshu.io/upload_images/19714621-fe7d422703eb7e70.jpeg?imageMogr2/auto-orient/strip|imageView2/1/w/360/h/240' | ||||
widget.model.url, | // ]); | ||||
null, | // params = SSDKMap() | ||||
null, | // ..setGeneral( | ||||
null, | // widget.model.title, | ||||
null, | // widget.model.content, | ||||
SSDKContentTypes.auto, | // [ | ||||
); | // 'https://upload-images.jianshu.io/upload_images/19714621-fe7d422703eb7e70.jpeg?imageMogr2/auto-orient/strip|imageView2/1/w/360/h/240' | ||||
// ], | |||||
// null, | |||||
// null, | |||||
// widget.model.url, | |||||
// null, | |||||
// null, | |||||
// null, | |||||
// null, | |||||
// SSDKContentTypes.auto, | |||||
// ); | |||||
} else { | |||||
params = SSDKMap() | |||||
..setGeneral( | |||||
widget.model.title, | |||||
widget.model.content, | |||||
widget.model.image, | |||||
null, | |||||
null, | |||||
widget.model.url, | |||||
null, | |||||
null, | |||||
null, | |||||
null, | |||||
SSDKContentTypes.auto, | |||||
); | |||||
} | |||||
SharesdkPlugin.share(plateform, params, (SSDKResponseState state, | SharesdkPlugin.share(plateform, params, (SSDKResponseState state, | ||||
Map userdata, Map contentEntity, SSDKError error) { | Map userdata, Map contentEntity, SSDKError error) { | ||||