diff --git a/.dart_tool/build_resolvers/sdk.sum b/.dart_tool/build_resolvers/sdk.sum deleted file mode 100644 index a788675..0000000 Binary files a/.dart_tool/build_resolvers/sdk.sum and /dev/null differ diff --git a/.dart_tool/build_resolvers/sdk.sum.deps b/.dart_tool/build_resolvers/sdk.sum.deps deleted file mode 100644 index 1c10e44..0000000 --- a/.dart_tool/build_resolvers/sdk.sum.deps +++ /dev/null @@ -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"} \ No newline at end of file diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json index ba1dc1f..133b4d7 100644 --- a/.dart_tool/package_config.json +++ b/.dart_tool/package_config.json @@ -1,531 +1,567 @@ { "configVersion": 2, "packages": [ + { + "name": "ali_auth_wbq", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/git/zhiying_ali_auth_wbq-f6421fe5735eab13738946da8fa7405e7aa952c6/", + "packageUri": "lib/", + "languageVersion": "2.1" + }, { "name": "archive", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/archive-2.0.13", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/archive-2.0.13", "packageUri": "lib/", "languageVersion": "2.0" }, { "name": "args", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/args-1.6.0", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/args-1.6.0", "packageUri": "lib/", "languageVersion": "2.3" }, { "name": "async", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/async-2.4.1", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/async-2.4.1", "packageUri": "lib/", "languageVersion": "2.2" }, { "name": "bloc", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/bloc-4.0.0", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/bloc-4.0.0", "packageUri": "lib/", "languageVersion": "2.6" }, { "name": "boolean_selector", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/boolean_selector-2.0.0", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/boolean_selector-2.0.0", "packageUri": "lib/", "languageVersion": "2.4" }, { "name": "cached_network_image", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/cached_network_image-2.2.0+1", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/cached_network_image-2.2.0+1", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "charcode", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/charcode-1.1.3", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/charcode-1.1.3", "packageUri": "lib/", "languageVersion": "2.0" }, { "name": "clock", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/clock-1.0.1", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/clock-1.0.1", "packageUri": "lib/", "languageVersion": "2.0" }, { "name": "collection", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/collection-1.14.12", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/collection-1.14.12", "packageUri": "lib/", "languageVersion": "2.0" }, { "name": "convert", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/convert-2.1.1", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/convert-2.1.1", "packageUri": "lib/", "languageVersion": "1.17" }, + { + "name": "cookie_jar", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/cookie_jar-1.0.1", + "packageUri": "lib/", + "languageVersion": "1.20" + }, { "name": "crypto", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/crypto-2.1.4", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/crypto-2.1.4", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "device_info", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/device_info-0.4.2+10", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/device_info-0.4.2+10", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "device_info_platform_interface", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/device_info_platform_interface-1.0.1", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/device_info_platform_interface-1.0.1", "packageUri": "lib/", "languageVersion": "2.7" }, { "name": "dio", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/dio-3.0.10", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/dio-3.0.10", + "packageUri": "lib/", + "languageVersion": "2.4" + }, + { + "name": "dio_cookie_manager", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/dio_cookie_manager-1.0.0", "packageUri": "lib/", "languageVersion": "2.4" }, { "name": "equatable", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/equatable-1.2.5", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/equatable-1.2.5", "packageUri": "lib/", "languageVersion": "2.0" }, { "name": "ffi", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/ffi-0.1.3", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/ffi-0.1.3", "packageUri": "lib/", "languageVersion": "2.6" }, { "name": "file", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/file-5.2.1", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/file-5.2.1", "packageUri": "lib/", "languageVersion": "2.2" }, { "name": "flutter", - "rootUri": "file:///Users/fnuouser/Documents/code/flutter/packages/flutter", + "rootUri": "file:///D:/flutter/flutter/packages/flutter", "packageUri": "lib/", "languageVersion": "2.2" }, { "name": "flutter_alibc", - "rootUri": "file:///Users/fnuouser/.pub-cache/git/zhiying_flutter_alibc-ba413f84090cd58b8b769ca43ff3ef65a0e53274/", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/git/zhiying_flutter_alibc-ba413f84090cd58b8b769ca43ff3ef65a0e53274/", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "flutter_bloc", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/flutter_bloc-4.0.1", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_bloc-4.0.1", "packageUri": "lib/", "languageVersion": "2.6" }, { "name": "flutter_cache_manager", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/flutter_cache_manager-1.4.2", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_cache_manager-1.4.2", "packageUri": "lib/", "languageVersion": "2.6" }, { "name": "flutter_native_image", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/flutter_native_image-0.0.5+3", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_native_image-0.0.5+3", "packageUri": "lib/", "languageVersion": "1.19" }, { "name": "flutter_screenutil", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/flutter_screenutil-1.1.0", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_screenutil-1.1.0", "packageUri": "lib/", "languageVersion": "2.6" }, { "name": "flutter_test", - "rootUri": "file:///Users/fnuouser/Documents/code/flutter/packages/flutter_test", + "rootUri": "file:///D:/flutter/flutter/packages/flutter_test", "packageUri": "lib/", "languageVersion": "2.2" }, { "name": "flutter_update_dialog", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/flutter_update_dialog-1.0.0", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_update_dialog-1.0.0", "packageUri": "lib/", "languageVersion": "2.7" }, { "name": "flutter_web_plugins", - "rootUri": "file:///Users/fnuouser/Documents/code/flutter/packages/flutter_web_plugins", + "rootUri": "file:///D:/flutter/flutter/packages/flutter_web_plugins", "packageUri": "lib/", "languageVersion": "2.0" }, { "name": "flutter_xupdate", - "rootUri": "file:///Users/fnuouser/.pub-cache/git/flutter_xupdate-d17c695461ee4588dec990533d7467c11884cd0f/", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/git/flutter_xupdate-d17c695461ee4588dec990533d7467c11884cd0f/", "packageUri": "lib/", "languageVersion": "2.7" }, { "name": "fluttertoast", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/fluttertoast-4.0.1", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/fluttertoast-4.0.1", "packageUri": "lib/", "languageVersion": "2.0" }, { "name": "http", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/http-0.12.2", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/http-0.12.2", "packageUri": "lib/", "languageVersion": "2.4" }, { "name": "http_parser", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/http_parser-3.1.4", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/http_parser-3.1.4", "packageUri": "lib/", "languageVersion": "2.3" }, { "name": "image", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/image-2.1.12", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/image-2.1.12", "packageUri": "lib/", "languageVersion": "2.0" }, { "name": "imei_plugin", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/imei_plugin-1.2.0", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/imei_plugin-1.2.0", "packageUri": "lib/", "languageVersion": "2.7" }, { "name": "intl", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/intl-0.16.1", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/intl-0.16.1", "packageUri": "lib/", "languageVersion": "2.5" }, { "name": "jdsdk", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/jdsdk-0.0.1", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/jdsdk-0.0.1", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "loading_indicator", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/loading_indicator-1.2.0", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/loading_indicator-1.2.0", "packageUri": "lib/", "languageVersion": "2.7" }, { "name": "matcher", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/matcher-0.12.6", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/matcher-0.12.6", "packageUri": "lib/", "languageVersion": "2.2" }, { "name": "meta", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/meta-1.1.8", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/meta-1.1.8", "packageUri": "lib/", "languageVersion": "1.12" }, { "name": "moblink", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/moblink-3.4.1", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/moblink-3.4.1", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "mobsms", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/mobsms-1.1.0", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/mobsms-1.1.2", "packageUri": "lib/", "languageVersion": "2.0" }, { "name": "nested", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/nested-0.0.4", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/nested-0.0.4", "packageUri": "lib/", "languageVersion": "2.2" }, { "name": "package_info", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/package_info-0.4.3+2", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/package_info-0.4.3+2", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "path", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/path-1.6.4", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/path-1.6.4", "packageUri": "lib/", "languageVersion": "2.0" }, { "name": "path_provider", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/path_provider-1.6.24", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/path_provider-1.6.24", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "path_provider_linux", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/path_provider_linux-0.0.1+2", + "rootUri": "file:///D:/flutter/flutter/.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/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/path_provider_macos-0.0.4+6", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/path_provider_macos-0.0.4+6", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "path_provider_platform_interface", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/path_provider_platform_interface-1.0.4", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/path_provider_platform_interface-1.0.4", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "path_provider_windows", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/path_provider_windows-0.0.4+3", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/path_provider_windows-0.0.4+3", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "pedantic", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/pedantic-1.9.0", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/pedantic-1.9.0", "packageUri": "lib/", "languageVersion": "2.1" }, + { + "name": "permission_handler", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/git/permission_handler-b8c45c4c20221ac39fe083113fc360cc632f33a4/", + "packageUri": "lib/", + "languageVersion": "2.7" + }, + { + "name": "permission_handler_platform_interface", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/permission_handler_platform_interface-2.0.1", + "packageUri": "lib/", + "languageVersion": "2.6" + }, { "name": "petitparser", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/petitparser-2.4.0", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/petitparser-2.4.0", "packageUri": "lib/", "languageVersion": "2.4" }, { "name": "photo_view", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/photo_view-0.10.3", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/photo_view-0.10.3", "packageUri": "lib/", "languageVersion": "2.6" }, { "name": "platform", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/platform-2.2.1", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/platform-2.2.1", "packageUri": "lib/", "languageVersion": "1.24" }, { "name": "plugin_platform_interface", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/plugin_platform_interface-1.0.3", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/plugin_platform_interface-1.0.3", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "process", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/process-3.0.13", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/process-3.0.13", "packageUri": "lib/", "languageVersion": "2.0" }, { "name": "provider", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/provider-4.3.2+2", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/provider-4.3.2+2", "packageUri": "lib/", "languageVersion": "2.7" }, { "name": "quiver", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/quiver-2.1.3", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/quiver-2.1.3", "packageUri": "lib/", "languageVersion": "2.0" }, { "name": "rxdart", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/rxdart-0.24.1", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/rxdart-0.24.1", "packageUri": "lib/", "languageVersion": "2.6" }, + { + "name": "save_image", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/save_image-1.0.1", + "packageUri": "lib/", + "languageVersion": "2.1" + }, { "name": "secverify", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/secverify-1.0.2", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/secverify-1.0.2", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "shared_preferences", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences-0.5.12+4", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences-0.5.12+4", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "shared_preferences_linux", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences_linux-0.0.2+4", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences_linux-0.0.2+4", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "shared_preferences_macos", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences_macos-0.0.1+11", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences_macos-0.0.1+11", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "shared_preferences_platform_interface", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences_platform_interface-1.0.4", + "rootUri": "file:///D:/flutter/flutter/.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/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences_web-0.1.2+7", + "rootUri": "file:///D:/flutter/flutter/.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/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences_windows-0.0.1+3", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences_windows-0.0.1+3", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "sharesdk_plugin", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/sharesdk_plugin-1.2.8", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/sharesdk_plugin-1.2.8", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "shimmer", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/shimmer-1.1.2", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/shimmer-1.1.2", "packageUri": "lib/", "languageVersion": "1.20" }, { "name": "sky_engine", - "rootUri": "file:///Users/fnuouser/Documents/code/flutter/bin/cache/pkg/sky_engine", + "rootUri": "file:///D:/flutter/flutter/bin/cache/pkg/sky_engine", "packageUri": "lib/", "languageVersion": "1.11" }, { "name": "source_span", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/source_span-1.7.0", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/source_span-1.7.0", "packageUri": "lib/", "languageVersion": "2.6" }, { "name": "sqflite", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/sqflite-1.3.1+2", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/sqflite-1.3.1+2", "packageUri": "lib/", "languageVersion": "2.7" }, { "name": "sqflite_common", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/sqflite_common-1.0.2+1", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/sqflite_common-1.0.2+1", "packageUri": "lib/", "languageVersion": "2.7" }, { "name": "stack_trace", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/stack_trace-1.9.3", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/stack_trace-1.9.3", "packageUri": "lib/", "languageVersion": "1.23" }, { "name": "stream_channel", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/stream_channel-2.0.0", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/stream_channel-2.0.0", "packageUri": "lib/", "languageVersion": "2.0" }, { "name": "string_scanner", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/string_scanner-1.0.5", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/string_scanner-1.0.5", "packageUri": "lib/", "languageVersion": "2.0" }, { "name": "synchronized", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/synchronized-2.2.0+2", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/synchronized-2.2.0+2", "packageUri": "lib/", "languageVersion": "2.8" }, { "name": "term_glyph", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/term_glyph-1.1.0", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/term_glyph-1.1.0", "packageUri": "lib/", "languageVersion": "1.8" }, { "name": "test_api", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/test_api-0.2.15", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/test_api-0.2.15", "packageUri": "lib/", "languageVersion": "2.4" }, { "name": "typed_data", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/typed_data-1.1.6", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/typed_data-1.1.6", "packageUri": "lib/", "languageVersion": "2.0" }, { "name": "url_launcher", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher-5.7.6", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/url_launcher-5.7.6", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "url_launcher_linux", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher_linux-0.0.1+4", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/url_launcher_linux-0.0.1+4", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "url_launcher_macos", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher_macos-0.0.1+9", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/url_launcher_macos-0.0.1+9", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "url_launcher_platform_interface", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher_platform_interface-1.0.8", + "rootUri": "file:///D:/flutter/flutter/.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/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher_web-0.1.4+1", + "rootUri": "file:///D:/flutter/flutter/.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/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher_windows-0.0.1+3", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/url_launcher_windows-0.0.1+3", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "uuid", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/uuid-2.2.2", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/uuid-2.2.2", "packageUri": "lib/", "languageVersion": "2.2" }, { "name": "vector_math", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/vector_math-2.0.8", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/vector_math-2.0.8", "packageUri": "lib/", "languageVersion": "2.0" }, { "name": "webview_flutter", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/webview_flutter-0.3.24", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/webview_flutter-0.3.24", "packageUri": "lib/", "languageVersion": "2.7" }, { "name": "win32", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/win32-1.7.4", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/win32-1.7.4", "packageUri": "lib/", "languageVersion": "2.7" }, { "name": "xdg_directories", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/xdg_directories-0.1.0", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/xdg_directories-0.1.0", "packageUri": "lib/", "languageVersion": "2.3" }, { "name": "xml", - "rootUri": "file:///Users/fnuouser/.pub-cache/hosted/pub.flutter-io.cn/xml-3.6.1", + "rootUri": "file:///D:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/xml-3.6.1", "packageUri": "lib/", "languageVersion": "2.6" }, @@ -536,7 +572,7 @@ "languageVersion": "2.1" } ], - "generated": "2020-11-25T06:25:45.550781Z", + "generated": "2020-12-23T06:30:03.819951Z", "generator": "pub", "generatorVersion": "2.8.2" } diff --git a/lib/models/base/base_setting_model.dart b/lib/models/base/base_setting_model.dart index 2fe3a3b..3586463 100644 --- a/lib/models/base/base_setting_model.dart +++ b/lib/models/base/base_setting_model.dart @@ -1,10 +1,14 @@ +import 'dart:io'; + import 'package:zhiying_comm/util/net_util.dart'; +import 'package:zhiying_comm/util/shared_prefe_util.dart'; import 'package:zhiying_comm/zhiying_comm.dart'; class BaseSettingModel { String fileProvider; String fileBucketHost; String fileBucketHostProtocol; + String isIosReview; Map tab; static BaseSettingModel _setting; @@ -23,6 +27,7 @@ class BaseSettingModel { fileProvider = json['file_provider']; fileBucketHost = json['file_bucket_host']; fileBucketHostProtocol = json['file_bucket_host_protocol']; + isIosReview = json['is_ios_review']?.toString(); tab = Map.from(json['bottom_nav']); } @@ -32,6 +37,7 @@ class BaseSettingModel { data['file_bucket_host'] = this.fileBucketHost; data['file_bucket_host_protocol'] = this.fileBucketHostProtocol; data['bottom_nav'] = this.tab; + data['is_ios_review'] = this.isIosReview; return data; } @@ -41,6 +47,13 @@ class BaseSettingModel { try { var data = result['data']; _setting = BaseSettingModel.fromJson(Map.from(data)); + if(Platform.isIOS) { + if (null != _setting && _setting.isIosReview == '1') { + SharedPreferencesUtil.setStringValue(GlobalConfig.IS_IOS_REVIEW, '1'); + } else { + SharedPreferencesUtil.setStringValue(GlobalConfig.IS_IOS_REVIEW, '0'); + } + } Logger.debug('基础设置初始化'); return _setting; } catch (err) { diff --git a/lib/pages/login_page/account/login_account_page.dart b/lib/pages/login_page/account/login_account_page.dart index 96bff8a..bd22eef 100644 --- a/lib/pages/login_page/account/login_account_page.dart +++ b/lib/pages/login_page/account/login_account_page.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:flutter/cupertino.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; @@ -6,6 +8,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:provider/provider.dart'; import 'package:zhiying_comm/pages/login_page/invite/login_invite_page.dart'; import 'package:zhiying_comm/pages/login_page/model/login_style_model.dart'; +import 'package:zhiying_comm/util/shared_prefe_util.dart'; import 'package:zhiying_comm/zhiying_comm.dart'; import 'bloc/bloc.dart'; import 'bloc/login_account_repository.dart'; @@ -53,9 +56,29 @@ class _LoginAccountPageContianerState extends State i FocusNode _passFN; FocusNode _vcodeFN; - // 是否登录中 + /// 是否使用验证码登陆 默认使用 + bool _useVcode = true; + + /// 是否可以登陆 + bool _canSubmit = false; + + /// 是否同意协议 + bool _acceptAgreement = true; + + /// 是否显示第三方验证码 + bool _showOtherVcode = false; + + /// 是否登录中 bool _isLogging = false; + /// 设置苹果审核UI + void _settingIosReviewUI() async{ + String is_ios_review = await SharedPreferencesUtil.getStringValue(GlobalConfig.IS_IOS_REVIEW, defaultVal: '0'); + if(Platform.isIOS && is_ios_review == '1' ){ + _useVcode = false; + } + } + /// 跳转到邀请码页面 void _openInvitePage(String mobile) { print('跳转到邀请码页面'); @@ -74,13 +97,6 @@ class _LoginAccountPageContianerState extends State i // Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (BuildContext context) => PageFactory.create('homePage', null)), (Route route) => false,); } - /// 返回上一页 - void _openPop() { - if (Navigator.canPop(context)) { - Navigator.pop(context); - } - } - /// 登陆 void _submitOnClick() { print('登陆'); @@ -211,18 +227,6 @@ class _LoginAccountPageContianerState extends State i return true; } - /// 是否使用验证码登陆 默认使用 - bool _useVcode = true; - - /// 是否可以登陆 - bool _canSubmit = false; - - /// 是否同意协议 - bool _acceptAgreement = true; - - /// 是否显示第三方验证码 - bool _showOtherVcode = false; - @override void initState() { _phoneEdController = TextEditingController(); @@ -231,6 +235,8 @@ class _LoginAccountPageContianerState extends State i _vcodeFN = FocusNode(); _passFN = FocusNode(); _phoneFN = FocusNode(); + // 设置苹果审核UI + _settingIosReviewUI(); super.initState(); } @@ -369,7 +375,7 @@ class _LoginAccountPageContianerState extends State i size: 22, color: HexColor.fromHex('#333333'), ), - onPressed: () => _openPop(), + onPressed: () => Navigator.maybePop(context), ), ); } diff --git a/lib/util/download/download.dart b/lib/util/download/download.dart index b8f8818..a59d3ce 100644 --- a/lib/util/download/download.dart +++ b/lib/util/download/download.dart @@ -1,4 +1,3 @@ - import 'dart:collection'; import 'dart:io'; @@ -13,10 +12,10 @@ class Download { static HashMap hashMap = HashMap(); Future fileToGallery( - String url, { - String postfix, - Function(int, int) progress, - }) async { + String url, { + String postfix, + Function(int, int) progress, + }) async { // 检查是否已有读写内存的权限 bool status = await Permission.storage.isGranted; @@ -33,7 +32,10 @@ class Download { return "文件链接错误"; } var appDocDir = await getTemporaryDirectory(); - String savePath = appDocDir.path + "/" + DateTime.now().toIso8601String().toString() + (strs[strs.length - 1].length > 4 ? (postfix ?? "") : strs[strs.length - 1]); + String savePath = appDocDir.path + + "/" + + DateTime.now().toIso8601String().toString() + + (strs[strs.length - 1].length > 4 ? (postfix ?? "") : ('.' + strs[strs.length - 1])); await Dio().download(url, savePath, onReceiveProgress: (count, toal) { if (progress != null) { progress(count, toal); diff --git a/lib/util/global_config.dart b/lib/util/global_config.dart index 73089eb..840379e 100644 --- a/lib/util/global_config.dart +++ b/lib/util/global_config.dart @@ -41,4 +41,7 @@ class GlobalConfig { /// 货币类型 static final String MONEY_TYPE = "¥ "; + /// 苹果审核 + static final String IS_IOS_REVIEW = 'is_ios_review'; + } diff --git a/lib/util/net_util.dart b/lib/util/net_util.dart index a0f76a1..d7a8b90 100644 --- a/lib/util/net_util.dart +++ b/lib/util/net_util.dart @@ -55,7 +55,7 @@ class NetUtil { if (_dio == null) { var setting = await NativeUtil.getSetting(); String domain = setting['domain']; //'http://www.hairuyi.com/'; - _config(domain, proxyUrl: '192.168.0.102:8866'); + _config(domain, proxyUrl: '');// 192.168.0.66:8866 } return _dio; } diff --git a/lib/util/router_util.dart b/lib/util/router_util.dart index 6b569a0..fd76f90 100644 --- a/lib/util/router_util.dart +++ b/lib/util/router_util.dart @@ -1,7 +1,11 @@ +import 'dart:io'; + import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import 'package:zhiying_comm/pages/login_page/account/login_account_page.dart'; import 'package:zhiying_comm/pages/login_page/login_page.dart'; +import 'package:zhiying_comm/util/shared_prefe_util.dart'; import 'package:zhiying_comm/zhiying_comm.dart'; class RouterUtil { @@ -45,9 +49,14 @@ class RouterUtil { } // 跳转登录 - static Future goLogin(BuildContext context) { + static Future goLogin(BuildContext context) async{ + String isIosReview = await SharedPreferencesUtil.getStringValue(GlobalConfig.IS_IOS_REVIEW, defaultVal: '0'); return Navigator.of(context) .push(CupertinoPageRoute(builder: (BuildContext context) { + // 苹果审核登录样式 + if(Platform.isIOS && isIosReview == '1'){ + return LoginAccountPage(null); + } return LoginPage(); })); } diff --git a/lib/util/taobao/goods_pic_model.dart b/lib/util/taobao/goods_pic_model.dart new file mode 100644 index 0000000..b6ec13c --- /dev/null +++ b/lib/util/taobao/goods_pic_model.dart @@ -0,0 +1,45 @@ +class GoodsPicModel { + String api; + Data data; + List ret; + String v; + + GoodsPicModel({this.api, this.data, this.ret, this.v}); + + GoodsPicModel.fromJson(Map json) { + api = json['api']; + data = json['data'] != null ? new Data.fromJson(json['data']) : null; + ret = json['ret'].cast(); + v = json['v']; + } + + Map toJson() { + final Map data = new Map(); + data['api'] = this.api; + if (this.data != null) { + data['data'] = this.data.toJson(); + } + data['ret'] = this.ret; + data['v'] = this.v; + return data; + } +} + +class Data { + List pages; + List images; + + Data({this.pages, this.images}); + + Data.fromJson(Map json) { + pages = json['pages'].cast(); + images = json['images'].cast(); + } + + Map toJson() { + final Map data = new Map(); + data['pages'] = this.pages; + data['images'] = this.images; + return data; + } +} \ No newline at end of file diff --git a/lib/util/taobao/taobao_loader.dart b/lib/util/taobao/taobao_loader.dart index c30c8f9..33e5dc7 100644 --- a/lib/util/taobao/taobao_loader.dart +++ b/lib/util/taobao/taobao_loader.dart @@ -1,9 +1,22 @@ +import 'dart:convert'; +import 'dart:io'; + import 'package:dio/dio.dart'; +import 'package:dio_cookie_manager/dio_cookie_manager.dart'; +import 'package:zhiying_comm/util/taobao/goods_pic_model.dart'; import 'package:zhiying_comm/zhiying_comm.dart'; +import 'package:cookie_jar/cookie_jar.dart'; +import 'package:convert/convert.dart'; +import 'package:crypto/crypto.dart'; + // 淘宝详情图抓取 class TaobaoLoader { static Future> loadImages(String id) async { + return _loadImagesNew(id); + } + + static Future> _loadImages1(String id) async { String url = 'http://h5api.m.taobao.com/h5/mtop.taobao.detail.getdesc/6.0/?api=mtop.taobao.detail.getdesc&appkey=12574478&data={"type":"0","f":"TB1AsvbfnqWBKNjSZFx8qwpLpla","id":"${id.toString()}"}&dataType=json&jsv=2.4.11&sign=e93a97b7e9a9a459297f4e689051c895&t=1538180732308&type=json'; Dio dio = Dio(); @@ -21,8 +34,7 @@ class TaobaoLoader { if (image != null && image != '') { if (image.startsWith('//')) { images.add('http:' + image); - } else - if (image.startsWith('https://') || image.startsWith('http://')) { + } else if (image.startsWith('https://') || image.startsWith('http://')) { images.add(image); } } @@ -31,7 +43,138 @@ class TaobaoLoader { Logger.error(err); } + return images; + } + + ///方法说明:通过破解淘宝签名接口获取商品详情图片 + ///流程:第一次请求接口拿到cookie数据,拼接签名数据,第二次请求接口拿到图片连接数据 + ///方法地址 + ///https://darktiantian.github.io/%E8%AE%B0%E4%B8%80%E6%AC%A1%E6%B7%98%E5%AE%9D%E6%8E%A5%E5%8F%A3sign%E7%AD%BE%E5%90%8D%E7%A0%B4%E8%A7%A3/ + static Future> _loadImagesNew(String id) async { + String data = "{\"item_num_id\":\"" + id + "\"}"; + String time = DateTime.now().millisecondsSinceEpoch.toString(); + String appkey = "12574478"; //文章中使用的appkey + String url = "https://h5api.m.taobao.com/h5/mtop.wdetail.getitemdescx/4.9/?jsv=2.4.11&appKey=$appkey&t=$time" + "&sign=FAKE_SIGN_WITH_ANYTHING&api=mtop.wdetail.getItemDescx&v=4.9&type=jsonp&dataType=jsonp&callback=mtopjsonp2&data=" + "$data"; + Logger.log("url: " + url); + Dio dio = Dio(BaseOptions(responseType: ResponseType.plain)); + var cookieJar = CookieJar(); + //dio绑定cookie管理器,以便第一次请求后获取cookie数据 + dio.interceptors.add(CookieManager(cookieJar)); + Map headers = new Map(); + headers['User-Agent'] = + "Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_4 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13G35 Safari/601.1"; + Options options = new Options(headers: headers); + //首次请求获取cookie + await dio.get(url, options: options); + + String token = ""; + String _m_h5_tk = ""; + String enc_token = ""; + //根据第一次请求后返回的cookie拿到需要的数据 + List cookieList = cookieJar.loadForRequest(Uri.parse(url)); + for (int i = 0; i < cookieList.length; i++) { + Cookie cookie = cookieList[i]; + Logger.log(cookie.name + " : " + cookie.value); + if ("_m_h5_tk" == cookie.name) { + _m_h5_tk = cookie.value; + List token_with_time = cookie.value.split("_"); + if (token_with_time.length > 0) { + token = token_with_time[0]; + } + } + if ("_m_h5_tk_enc" == cookie.name) { + enc_token = cookie.value; + } + } + + //设置第二次请求的cookie数据 + Map headers2 = new Map(); + headers2['cookie'] = "_m_h5_tk=$_m_h5_tk; _m_h5_tk_enc=$enc_token;" + "User-Agent=Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_4 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13G35 Safari/601.1"; + Options options2 = new Options(headers: headers2); + + //设置签名 + String time2 = DateTime.now().millisecondsSinceEpoch.toString(); + String sign = token + "&" + time2 + "&" + appkey + "&" + data; + String mySign = string2Md5(sign); + + //设置第二次请求的url + String url2 = "https://h5api.m.taobao.com/h5/mtop.wdetail.getitemdescx/4.9/?jsv=2.4.11&appKey=$appkey&t=$time2" + "&sign=$mySign&api=mtop.wdetail.getItemDescx&v=4.9&type=jsonp&dataType=jsonp&callback=mtopjsonp2&data=" + "$data"; + + //进行第二次网络请求拿到图片数据 + Dio dio2 = Dio(BaseOptions(responseType: ResponseType.plain)); + Response response2 = await dio2.get(url2, options: options2); + Logger.log(response2.data); + + //根据返回的数据,拼接图片链接数据 + String result2 = response2.data; + String object = result2.substring(result2.indexOf("(") + 1, result2.length - 1); + Logger.log(object); + var json = jsonDecode(object); + GoodsPicModel model = GoodsPicModel.fromJson(json); + List images = List(); + if (null != model.data.images && model.data.images.length > 0) { + /** + * images字段的数据,在前面拼接好https:就可以作为商品详情的图片链接使用了 + */ + List Images = model.data.images; + List mPicList = []; + for (String pic in Images) { + if (pic.isNotEmpty) { + if (pic.startsWith("http")) { + mPicList.add(pic); + } else { + mPicList.add("https:" + pic); + } + } + } + Logger.log("mPicList图片:" + mPicList.length.toString() + "\n" + mPicList.toString()); + if (mPicList.length > 0) { + return mPicList; + } + } else { + if (null != model.data.pages && model.data.pages.length > 0) { + /** + * pages字段的数据,数组中可能有多张图片的链接数据,以标签框起来的 + * 先去掉前面的标签,再以标签分割各个图片链接数据, + * 最后每个数据拼接上https:就可以作为商品详情图片链接返回了 + * 经测试images字段和pages字段的数据是相同的,所以取一个字段的数据返回就可以了 + */ + List pages = model.data.pages; + List mPicList = []; + for (String pic in pages) { + String pic1 = pic.replaceAll("", ""); + List pic2 = pic1.split(""); + if (pic2.length > 0) { + for (String s in pic2) { + if (s.isNotEmpty) { + if (s.startsWith("http")) { + mPicList.add(s); + } else { + mPicList.add("https:" + s); + } + } + } + } + } + Logger.log("图片2:" + mPicList.length.toString() + "\n" + mPicList.toString()); + if (mPicList.length > 0) { + return mPicList; + } + } + } return images; } + + // md5 加密 + static String string2Md5(String data) { + var content = new Utf8Encoder().convert(data); + var digest = md5.convert(content); + return hex.encode(digest.bytes); + } } diff --git a/lib/zhiying_comm.dart b/lib/zhiying_comm.dart index 29f6b73..556b447 100644 --- a/lib/zhiying_comm.dart +++ b/lib/zhiying_comm.dart @@ -36,5 +36,5 @@ export 'package:cached_network_image/cached_network_image.dart'; export 'util/photo_preview/photo_preview.dart'; export 'models/base/base_change_notifier.dart'; export 'util/parse_util.dart'; -export 'util/download/Download.dart'; +export 'util/download/download.dart'; diff --git a/pubspec.yaml b/pubspec.yaml index b285e43..20d20d0 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -77,6 +77,7 @@ dependencies: #保存文件到相册 save_image: ^1.0.1 + dio_cookie_manager: 1.0.0 dev_dependencies: