@@ -1,18 +1,6 @@ | |||||
{ | { | ||||
"configVersion": 2, | "configVersion": 2, | ||||
"packages": [ | "packages": [ | ||||
{ | |||||
"name": "_fe_analyzer_shared", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/_fe_analyzer_shared-6.0.0", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.2" | |||||
}, | |||||
{ | |||||
"name": "analyzer", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/analyzer-0.39.14", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.6" | |||||
}, | |||||
{ | { | ||||
"name": "archive", | "name": "archive", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/archive-2.0.11", | "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/archive-2.0.11", | ||||
@@ -43,54 +31,6 @@ | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.0" | "languageVersion": "2.0" | ||||
}, | }, | ||||
{ | |||||
"name": "build", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/build-1.3.0", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.7" | |||||
}, | |||||
{ | |||||
"name": "build_config", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/build_config-0.4.2", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.6" | |||||
}, | |||||
{ | |||||
"name": "build_daemon", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/build_daemon-2.1.4", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.6" | |||||
}, | |||||
{ | |||||
"name": "build_resolvers", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/build_resolvers-1.3.11", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.7" | |||||
}, | |||||
{ | |||||
"name": "build_runner", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/build_runner-1.10.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.6" | |||||
}, | |||||
{ | |||||
"name": "build_runner_core", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/build_runner_core-6.0.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.7" | |||||
}, | |||||
{ | |||||
"name": "built_collection", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/built_collection-4.3.2", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.6" | |||||
}, | |||||
{ | |||||
"name": "built_value", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/built_value-7.1.0", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.3" | |||||
}, | |||||
{ | { | ||||
"name": "cached_network_image", | "name": "cached_network_image", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/cached_network_image-2.2.0+1", | "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/cached_network_image-2.2.0+1", | ||||
@@ -103,30 +43,12 @@ | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "1.0" | "languageVersion": "1.0" | ||||
}, | }, | ||||
{ | |||||
"name": "checked_yaml", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/checked_yaml-1.0.2", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.3" | |||||
}, | |||||
{ | |||||
"name": "cli_util", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/cli_util-0.1.4", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | { | ||||
"name": "clock", | "name": "clock", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/clock-1.0.1", | "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/clock-1.0.1", | ||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.0" | "languageVersion": "2.0" | ||||
}, | }, | ||||
{ | |||||
"name": "code_builder", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/code_builder-3.4.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.7" | |||||
}, | |||||
{ | { | ||||
"name": "collection", | "name": "collection", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/collection-1.14.11", | "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/collection-1.14.11", | ||||
@@ -145,18 +67,6 @@ | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
{ | |||||
"name": "csslib", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/csslib-0.16.2", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.2" | |||||
}, | |||||
{ | |||||
"name": "dart_style", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/dart_style-1.3.6", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.7" | |||||
}, | |||||
{ | { | ||||
"name": "device_info", | "name": "device_info", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/device_info-0.4.2+7", | "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/device_info-0.4.2+7", | ||||
@@ -199,12 +109,6 @@ | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.2" | "languageVersion": "2.2" | ||||
}, | }, | ||||
{ | |||||
"name": "fixnum", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/fixnum-0.10.11", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | { | ||||
"name": "flutter", | "name": "flutter", | ||||
"rootUri": "file:///Users/fnuser/Documents/flutter-sdk/packages/flutter", | "rootUri": "file:///Users/fnuser/Documents/flutter-sdk/packages/flutter", | ||||
@@ -283,36 +187,12 @@ | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.0" | "languageVersion": "2.0" | ||||
}, | }, | ||||
{ | |||||
"name": "glob", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/glob-1.2.0", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | |||||
"name": "graphs", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/graphs-0.2.0", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "html", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/html-0.14.0+3", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.3" | |||||
}, | |||||
{ | { | ||||
"name": "http", | "name": "http", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/http-0.12.2", | "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/http-0.12.2", | ||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.4" | "languageVersion": "2.4" | ||||
}, | }, | ||||
{ | |||||
"name": "http_multi_server", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/http_multi_server-2.2.0", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.1" | |||||
}, | |||||
{ | { | ||||
"name": "http_parser", | "name": "http_parser", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/http_parser-3.1.4", | "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/http_parser-3.1.4", | ||||
@@ -349,42 +229,12 @@ | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.5" | "languageVersion": "2.5" | ||||
}, | }, | ||||
{ | |||||
"name": "io", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/io-0.3.4", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | { | ||||
"name": "jdsdk", | "name": "jdsdk", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/jdsdk-0.0.1", | "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/jdsdk-0.0.1", | ||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
{ | |||||
"name": "js", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/js-0.6.2", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "json_annotation", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/json_annotation-3.0.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.6" | |||||
}, | |||||
{ | |||||
"name": "json_serializable", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/json_serializable-3.4.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.7" | |||||
}, | |||||
{ | |||||
"name": "logging", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/logging-0.11.4", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | { | ||||
"name": "matcher", | "name": "matcher", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/matcher-0.12.6", | "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/matcher-0.12.6", | ||||
@@ -397,36 +247,12 @@ | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "1.12" | "languageVersion": "1.12" | ||||
}, | }, | ||||
{ | |||||
"name": "mime", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/mime-0.9.7", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | { | ||||
"name": "nested", | "name": "nested", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/nested-0.0.4", | "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/nested-0.0.4", | ||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.2" | "languageVersion": "2.2" | ||||
}, | }, | ||||
{ | |||||
"name": "node_interop", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/node_interop-1.1.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | |||||
"name": "node_io", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/node_io-1.1.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.2" | |||||
}, | |||||
{ | |||||
"name": "package_config", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/package_config-1.9.3", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.7" | |||||
}, | |||||
{ | { | ||||
"name": "package_info", | "name": "package_info", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/package_info-0.4.3", | "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/package_info-0.4.3", | ||||
@@ -441,7 +267,7 @@ | |||||
}, | }, | ||||
{ | { | ||||
"name": "path_provider", | "name": "path_provider", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/path_provider-1.6.16", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/path_provider-1.6.17", | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
@@ -499,12 +325,6 @@ | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
{ | |||||
"name": "pool", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/pool-1.4.0", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | { | ||||
"name": "process", | "name": "process", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/process-3.0.13", | "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/process-3.0.13", | ||||
@@ -523,12 +343,6 @@ | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.0" | "languageVersion": "2.0" | ||||
}, | }, | ||||
{ | |||||
"name": "pubspec_parse", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/pubspec_parse-0.1.5", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.2" | |||||
}, | |||||
{ | { | ||||
"name": "pull_to_refresh", | "name": "pull_to_refresh", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/pull_to_refresh-1.6.2", | "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/pull_to_refresh-1.6.2", | ||||
@@ -549,7 +363,7 @@ | |||||
}, | }, | ||||
{ | { | ||||
"name": "shared_preferences", | "name": "shared_preferences", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences-0.5.10", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences-0.5.11", | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
@@ -578,17 +392,11 @@ | |||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
{ | { | ||||
"name": "shelf", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shelf-0.7.9", | |||||
"name": "shared_preferences_windows", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences_windows-0.0.1+1", | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
{ | |||||
"name": "shelf_web_socket", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shelf_web_socket-0.2.3", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | { | ||||
"name": "shimmer", | "name": "shimmer", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shimmer-1.1.1", | "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shimmer-1.1.1", | ||||
@@ -601,12 +409,6 @@ | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "1.11" | "languageVersion": "1.11" | ||||
}, | }, | ||||
{ | |||||
"name": "source_gen", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/source_gen-0.9.6", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.7" | |||||
}, | |||||
{ | { | ||||
"name": "source_span", | "name": "source_span", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/source_span-1.5.5", | "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/source_span-1.5.5", | ||||
@@ -637,12 +439,6 @@ | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.0" | "languageVersion": "2.0" | ||||
}, | }, | ||||
{ | |||||
"name": "stream_transform", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/stream_transform-1.2.0", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.6" | |||||
}, | |||||
{ | { | ||||
"name": "string_scanner", | "name": "string_scanner", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/string_scanner-1.0.5", | "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/string_scanner-1.0.5", | ||||
@@ -667,12 +463,6 @@ | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.2" | "languageVersion": "2.2" | ||||
}, | }, | ||||
{ | |||||
"name": "timing", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/timing-0.1.1+2", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.2" | |||||
}, | |||||
{ | { | ||||
"name": "transformer_page_view", | "name": "transformer_page_view", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/transformer_page_view-0.1.6", | "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/transformer_page_view-0.1.6", | ||||
@@ -733,18 +523,6 @@ | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.0" | "languageVersion": "2.0" | ||||
}, | }, | ||||
{ | |||||
"name": "watcher", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/watcher-0.9.7+15", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.2" | |||||
}, | |||||
{ | |||||
"name": "web_socket_channel", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/web_socket_channel-1.1.0", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.0" | |||||
}, | |||||
{ | { | ||||
"name": "webview_flutter", | "name": "webview_flutter", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/webview_flutter-0.3.23", | "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/webview_flutter-0.3.23", | ||||
@@ -769,12 +547,6 @@ | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.3" | "languageVersion": "2.3" | ||||
}, | }, | ||||
{ | |||||
"name": "yaml", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/yaml-2.2.1", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.4" | |||||
}, | |||||
{ | { | ||||
"name": "zhiying_comm", | "name": "zhiying_comm", | ||||
"rootUri": "../../zhiying_comm", | "rootUri": "../../zhiying_comm", | ||||
@@ -788,7 +560,7 @@ | |||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
} | } | ||||
], | ], | ||||
"generated": "2020-09-22T12:40:39.852808Z", | |||||
"generated": "2020-09-23T04:06:39.433861Z", | |||||
"generator": "pub", | "generator": "pub", | ||||
"generatorVersion": "2.7.2" | "generatorVersion": "2.7.2" | ||||
} | } |
@@ -53,6 +53,8 @@ PODS: | |||||
- Flutter | - Flutter | ||||
- shared_preferences_web (0.0.1): | - shared_preferences_web (0.0.1): | ||||
- Flutter | - Flutter | ||||
- shared_preferences_windows (0.0.1): | |||||
- Flutter | |||||
- sqflite (0.0.1): | - sqflite (0.0.1): | ||||
- Flutter | - Flutter | ||||
- FMDB (~> 2.7.2) | - FMDB (~> 2.7.2) | ||||
@@ -101,6 +103,7 @@ DEPENDENCIES: | |||||
- shared_preferences_linux (from `.symlinks/plugins/shared_preferences_linux/ios`) | - shared_preferences_linux (from `.symlinks/plugins/shared_preferences_linux/ios`) | ||||
- shared_preferences_macos (from `.symlinks/plugins/shared_preferences_macos/ios`) | - shared_preferences_macos (from `.symlinks/plugins/shared_preferences_macos/ios`) | ||||
- shared_preferences_web (from `.symlinks/plugins/shared_preferences_web/ios`) | - shared_preferences_web (from `.symlinks/plugins/shared_preferences_web/ios`) | ||||
- shared_preferences_windows (from `.symlinks/plugins/shared_preferences_windows/ios`) | |||||
- sqflite (from `.symlinks/plugins/sqflite/ios`) | - sqflite (from `.symlinks/plugins/sqflite/ios`) | ||||
- url_launcher (from `.symlinks/plugins/url_launcher/ios`) | - url_launcher (from `.symlinks/plugins/url_launcher/ios`) | ||||
- url_launcher_linux (from `.symlinks/plugins/url_launcher_linux/ios`) | - url_launcher_linux (from `.symlinks/plugins/url_launcher_linux/ios`) | ||||
@@ -162,6 +165,8 @@ EXTERNAL SOURCES: | |||||
:path: ".symlinks/plugins/shared_preferences_macos/ios" | :path: ".symlinks/plugins/shared_preferences_macos/ios" | ||||
shared_preferences_web: | shared_preferences_web: | ||||
:path: ".symlinks/plugins/shared_preferences_web/ios" | :path: ".symlinks/plugins/shared_preferences_web/ios" | ||||
shared_preferences_windows: | |||||
:path: ".symlinks/plugins/shared_preferences_windows/ios" | |||||
sqflite: | sqflite: | ||||
:path: ".symlinks/plugins/sqflite/ios" | :path: ".symlinks/plugins/sqflite/ios" | ||||
url_launcher: | url_launcher: | ||||
@@ -207,6 +212,7 @@ SPEC CHECKSUMS: | |||||
shared_preferences_linux: afefbfe8d921e207f01ede8b60373d9e3b566b78 | shared_preferences_linux: afefbfe8d921e207f01ede8b60373d9e3b566b78 | ||||
shared_preferences_macos: f3f29b71ccbb56bf40c9dd6396c9acf15e214087 | shared_preferences_macos: f3f29b71ccbb56bf40c9dd6396c9acf15e214087 | ||||
shared_preferences_web: 141cce0c3ed1a1c5bf2a0e44f52d31eeb66e5ea9 | shared_preferences_web: 141cce0c3ed1a1c5bf2a0e44f52d31eeb66e5ea9 | ||||
shared_preferences_windows: 36b76d6f54e76ead957e60b49e2f124b4cd3e6ae | |||||
sqflite: 4001a31ff81d210346b500c55b17f4d6c7589dd0 | sqflite: 4001a31ff81d210346b500c55b17f4d6c7589dd0 | ||||
TOCropViewController: 20a14b6a7a098308bf369e7c8d700dc983a974e6 | TOCropViewController: 20a14b6a7a098308bf369e7c8d700dc983a974e6 | ||||
url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef | url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef | ||||
@@ -98,8 +98,8 @@ class MineDetailBloc extends BlocBase { | |||||
print(filename); | print(filename); | ||||
String imageUrl = | String imageUrl = | ||||
'${_user.fileBucketUrl.toString()}${filename.toString()}'; | '${_user.fileBucketUrl.toString()}${filename.toString()}'; | ||||
if (_user.format != null && _user.format != '') { | |||||
imageUrl += _user.format; | |||||
if (_user.fileFormat != null && _user.fileFormat != '') { | |||||
imageUrl += _user.fileFormat; | |||||
imageUrl += '/${DateTime.now().millisecondsSinceEpoch.toString()}'; | imageUrl += '/${DateTime.now().millisecondsSinceEpoch.toString()}'; | ||||
} else { | } else { | ||||
imageUrl += '?${DateTime.now().millisecondsSinceEpoch.toString()}'; | imageUrl += '?${DateTime.now().millisecondsSinceEpoch.toString()}'; | ||||
@@ -1,42 +1,41 @@ | |||||
import 'package:json_annotation/json_annotation.dart'; | |||||
part 'mine_detail_model.g.dart'; | |||||
@JsonSerializable() | |||||
class MineDetailModel extends Object { | |||||
@JsonKey(name: 'avatar') | |||||
class MineDetailModel { | |||||
String avatar; | String avatar; | ||||
@JsonKey(name: 'nickname') | |||||
String nickname; | String nickname; | ||||
@JsonKey(name: 'gender') | |||||
String gender; | String gender; | ||||
@JsonKey(name: 'birthday') | |||||
String birthday; | String birthday; | ||||
@JsonKey(name: 'register_time') | |||||
String registerTime; | String registerTime; | ||||
@JsonKey(name: 'file_bucket_url') | |||||
String fileBucketUrl; | String fileBucketUrl; | ||||
@JsonKey(name: 'file_format') | |||||
String format; | |||||
String fileFormat; | |||||
MineDetailModel( | MineDetailModel( | ||||
this.avatar, | |||||
this.nickname, | |||||
this.gender, | |||||
this.birthday, | |||||
this.registerTime, | |||||
this.fileBucketUrl, | |||||
this.format, | |||||
); | |||||
factory MineDetailModel.fromJson(Map<String, dynamic> srcJson) => | |||||
_$MineDetailModelFromJson(srcJson); | |||||
Map<String, dynamic> toJson() => _$MineDetailModelToJson(this); | |||||
{this.avatar, | |||||
this.nickname, | |||||
this.gender, | |||||
this.birthday, | |||||
this.registerTime, | |||||
this.fileBucketUrl, | |||||
this.fileFormat}); | |||||
MineDetailModel.fromJson(Map<String, dynamic> json) { | |||||
avatar = json['avatar']; | |||||
nickname = json['nickname']; | |||||
gender = json['gender']; | |||||
birthday = json['birthday']; | |||||
registerTime = json['register_time']; | |||||
fileBucketUrl = json['file_bucket_url']; | |||||
fileFormat = json['file_format']; | |||||
} | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
data['avatar'] = this.avatar; | |||||
data['nickname'] = this.nickname; | |||||
data['gender'] = this.gender; | |||||
data['birthday'] = this.birthday; | |||||
data['register_time'] = this.registerTime; | |||||
data['file_bucket_url'] = this.fileBucketUrl; | |||||
data['file_format'] = this.fileFormat; | |||||
return data; | |||||
} | |||||
} | } | ||||
@@ -1,38 +1,39 @@ | |||||
import 'package:json_annotation/json_annotation.dart'; | |||||
import 'package:zhiying_comm/zhiying_comm.dart'; | |||||
part 'setting_page_style_item_model.g.dart'; | |||||
@JsonSerializable() | |||||
class SettingPageStyleItemModel extends Object { | |||||
@JsonKey(name: 'name') | |||||
class SettingPageStyleItemModel extends SkipModel { | |||||
String name; | String name; | ||||
@JsonKey(name: 'name_color') | |||||
String nameColor; | String nameColor; | ||||
@JsonKey(name: 'desc') | |||||
String desc; | String desc; | ||||
@JsonKey(name: 'desc_color') | |||||
String descColor; | String descColor; | ||||
@JsonKey(name: 'skip_identifier') | |||||
String skipIdentifier; | String skipIdentifier; | ||||
@JsonKey(name: 'url') | |||||
String url; | String url; | ||||
SettingPageStyleItemModel( | SettingPageStyleItemModel( | ||||
this.name, | |||||
this.nameColor, | |||||
this.desc, | |||||
this.descColor, | |||||
this.skipIdentifier, | |||||
this.url, | |||||
); | |||||
factory SettingPageStyleItemModel.fromJson(Map<String, dynamic> srcJson) => | |||||
_$SettingPageStyleItemModelFromJson(srcJson); | |||||
Map<String, dynamic> toJson() => _$SettingPageStyleItemModelToJson(this); | |||||
{this.name, | |||||
this.nameColor, | |||||
this.desc, | |||||
this.descColor, | |||||
this.skipIdentifier, | |||||
this.url}); | |||||
SettingPageStyleItemModel.fromJson(Map<String, dynamic> json) { | |||||
name = json['name']; | |||||
nameColor = json['name_color']; | |||||
desc = json['desc']; | |||||
descColor = json['desc_color']; | |||||
skipIdentifier = json['skip_identifier']; | |||||
url = json['url']; | |||||
} | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
data['name'] = this.name; | |||||
data['name_color'] = this.nameColor; | |||||
data['desc'] = this.desc; | |||||
data['desc_color'] = this.descColor; | |||||
data['skip_identifier'] = this.skipIdentifier; | |||||
data['url'] = this.url; | |||||
return data; | |||||
} | |||||
} | } | ||||
@@ -147,7 +147,7 @@ class _SettingContainerState extends State<_SettingContainer> { | |||||
), | ), | ||||
), | ), | ||||
onTap: () { | onTap: () { | ||||
RouterUtil.route(item.toJson(), context); | |||||
RouterUtil.route(item, item.toJson(), context); | |||||
}, | }, | ||||
); | ); | ||||
} | } | ||||
@@ -18,6 +18,7 @@ import 'package:zhiying_base_widget/widgets/home/home_banner/home_banner_widget. | |||||
import 'package:zhiying_base_widget/widgets/home/home_goods/home_goods_creater.dart'; | import 'package:zhiying_base_widget/widgets/home/home_goods/home_goods_creater.dart'; | ||||
import 'package:zhiying_base_widget/widgets/home/home_notice/home_notice_widget.dart'; | import 'package:zhiying_base_widget/widgets/home/home_notice/home_notice_widget.dart'; | ||||
import 'package:zhiying_base_widget/widgets/home/home_slide_banner/home_slide_banner_creater.dart'; | import 'package:zhiying_base_widget/widgets/home/home_slide_banner/home_slide_banner_creater.dart'; | ||||
import 'package:zhiying_base_widget/widgets/home/home_sreach/home_sreach_creater.dart'; | |||||
import 'package:zhiying_base_widget/widgets/home/home_sreach/home_sreach_widget.dart'; | import 'package:zhiying_base_widget/widgets/home/home_sreach/home_sreach_widget.dart'; | ||||
import 'package:zhiying_base_widget/widgets/mine/mine_data/mine_data.dart'; | import 'package:zhiying_base_widget/widgets/mine/mine_data/mine_data.dart'; | ||||
import 'package:zhiying_base_widget/widgets/mine/mine_header/mine_header.dart'; | import 'package:zhiying_base_widget/widgets/mine/mine_header/mine_header.dart'; | ||||
@@ -76,9 +77,9 @@ class BaseWidgetRegister { | |||||
// ==================== 首页 | // ==================== 首页 | ||||
// WidgetFactory.regist('index_title', NormalNavCreater()); | // WidgetFactory.regist('index_title', NormalNavCreater()); | ||||
/// 首页搜索栏 | /// 首页搜索栏 | ||||
// WidgetFactory.regist('index_search', HomeSreachCreater()); | |||||
WidgetFactory.regist('index_search', | |||||
DefaultWidgetCreater((model) => HomeSreachWidget(model))); | |||||
WidgetFactory.regist('index_search', HomeSreachCreater()); | |||||
// WidgetFactory.regist('index_search', | |||||
// DefaultWidgetCreater((model) => HomeSreachWidget(model))); | |||||
/// 可滚动banner | /// 可滚动banner | ||||
WidgetFactory.regist('index_carousel', HomeSlideBannerCreater()); | WidgetFactory.regist('index_carousel', HomeSlideBannerCreater()); | ||||
@@ -23,12 +23,12 @@ class HomeAuth extends StatelessWidget { | |||||
width: double.infinity, | width: double.infinity, | ||||
margin: EdgeInsets.only(left: 12, right: 12, top: 4, bottom: 4), | margin: EdgeInsets.only(left: 12, right: 12, top: 4, bottom: 4), | ||||
decoration: BoxDecoration( | decoration: BoxDecoration( | ||||
color: HexColor.fromHex(_style?.bgColor ?? 'ffffff'), | |||||
color: HexColor.fromHex(_style?.taoaboTipBgColor ?? 'ffffff'), | |||||
borderRadius: BorderRadius.circular(17), | borderRadius: BorderRadius.circular(17), | ||||
boxShadow: [ | boxShadow: [ | ||||
BoxShadow( | BoxShadow( | ||||
offset: Offset(2, 1), //x,y轴 | offset: Offset(2, 1), //x,y轴 | ||||
color: HexColor.fromHex(_style?.shadowColor ?? '767676') | |||||
color: HexColor.fromHex(_style?.taoaboTipShadowColor ?? '767676') | |||||
.withAlpha(70), //投影颜色 | .withAlpha(70), //投影颜色 | ||||
blurRadius: 5 //投影距离 | blurRadius: 5 //投影距离 | ||||
) | ) | ||||
@@ -40,18 +40,18 @@ class HomeAuth extends StatelessWidget { | |||||
width: 20, | width: 20, | ||||
height: 20, | height: 20, | ||||
child: CachedNetworkImage( | child: CachedNetworkImage( | ||||
imageUrl: _style.icon, | |||||
imageUrl: _style.taobaoAuthIcon, | |||||
fit: BoxFit.contain, | fit: BoxFit.contain, | ||||
), | ), | ||||
), | ), | ||||
Expanded( | Expanded( | ||||
child: Text( | child: Text( | ||||
_style?.text ?? '', | |||||
_style?.taoaboTipText ?? '', | |||||
maxLines: 1, | maxLines: 1, | ||||
style: TextStyle( | style: TextStyle( | ||||
fontSize: 12, | fontSize: 12, | ||||
fontWeight: FontWeight.bold, | fontWeight: FontWeight.bold, | ||||
color: HexColor.fromHex(_style?.textColor ?? '333333'), | |||||
color: HexColor.fromHex(_style?.taoaboTipTextColor ?? '333333'), | |||||
), | ), | ||||
), | ), | ||||
), | ), | ||||
@@ -60,13 +60,13 @@ class HomeAuth extends StatelessWidget { | |||||
padding: EdgeInsets.only(left: 12, right: 12, top: 3, bottom: 3), | padding: EdgeInsets.only(left: 12, right: 12, top: 3, bottom: 3), | ||||
margin: EdgeInsets.only(left: 8, right: 8), | margin: EdgeInsets.only(left: 8, right: 8), | ||||
decoration: BoxDecoration( | decoration: BoxDecoration( | ||||
color: HexColor.fromHex(_style?.tipBtnBgColor ?? 'FF4242'), | |||||
color: HexColor.fromHex(_style?.taoaboTipBtnBgColor ?? 'FF4242'), | |||||
borderRadius: BorderRadius.circular(20)), | borderRadius: BorderRadius.circular(20)), | ||||
child: Text( | child: Text( | ||||
_style?.tipBtnText ?? '', | |||||
_style?.taoaboTipBtnText ?? '', | |||||
style: TextStyle( | style: TextStyle( | ||||
fontSize: 12, | fontSize: 12, | ||||
color: HexColor.fromHex(_style?.tipBtnTextColor ?? 'ffffff'), | |||||
color: HexColor.fromHex(_style?.taoaboTipBtnTextColor ?? 'ffffff'), | |||||
), | ), | ||||
), | ), | ||||
), | ), | ||||
@@ -1,40 +1,45 @@ | |||||
import 'package:json_annotation/json_annotation.dart'; | |||||
part 'home_auth_model.g.dart'; | |||||
@JsonSerializable() | |||||
class HomeAuthModel extends Object { | |||||
@JsonKey(name: 'taobao_auth_icon') | |||||
String icon; | |||||
@JsonKey(name: 'taoabo_tip_bg_color') | |||||
String bgColor; | |||||
@JsonKey(name: 'taoabo_tip_shadow_color') | |||||
String shadowColor; | |||||
@JsonKey(name: 'taoabo_tip_text_color') | |||||
String textColor; | |||||
@JsonKey(name: 'taoabo_tip_text') | |||||
String text; | |||||
@JsonKey(name: 'taoabo_tip_btn_text_color') | |||||
String tipBtnTextColor; | |||||
@JsonKey(name: 'taoabo_tip_btn_bg_color') | |||||
String tipBtnBgColor; | |||||
@JsonKey(name: 'taoabo_tip_btn_text') | |||||
String tipBtnText; | |||||
HomeAuthModel(this.icon,this.bgColor,this.shadowColor,this.textColor,this.text,this.tipBtnTextColor,this.tipBtnBgColor,this.tipBtnText,); | |||||
factory HomeAuthModel.fromJson(Map<String, dynamic> srcJson) => _$HomeAuthModelFromJson(srcJson); | |||||
Map<String, dynamic> toJson() => _$HomeAuthModelToJson(this); | |||||
class HomeAuthModel { | |||||
String taobaoAuthIcon; | |||||
String taoaboTipBgColor; | |||||
String taoaboTipShadowColor; | |||||
String taoaboTipTextColor; | |||||
String taoaboTipText; | |||||
String taoaboTipBtnTextColor; | |||||
String taoaboTipBtnBgColor; | |||||
String taoaboTipBtnText; | |||||
HomeAuthModel( | |||||
{this.taobaoAuthIcon, | |||||
this.taoaboTipBgColor, | |||||
this.taoaboTipShadowColor, | |||||
this.taoaboTipTextColor, | |||||
this.taoaboTipText, | |||||
this.taoaboTipBtnTextColor, | |||||
this.taoaboTipBtnBgColor, | |||||
this.taoaboTipBtnText}); | |||||
HomeAuthModel.fromJson(Map<String, dynamic> json) { | |||||
taobaoAuthIcon = json['taobao_auth_icon']; | |||||
taoaboTipBgColor = json['taoabo_tip_bg_color']; | |||||
taoaboTipShadowColor = json['taoabo_tip_shadow_color']; | |||||
taoaboTipTextColor = json['taoabo_tip_text_color']; | |||||
taoaboTipText = json['taoabo_tip_text']; | |||||
taoaboTipBtnTextColor = json['taoabo_tip_btn_text_color']; | |||||
taoaboTipBtnBgColor = json['taoabo_tip_btn_bg_color']; | |||||
taoaboTipBtnText = json['taoabo_tip_btn_text']; | |||||
} | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
data['taobao_auth_icon'] = this.taobaoAuthIcon; | |||||
data['taoabo_tip_bg_color'] = this.taoaboTipBgColor; | |||||
data['taoabo_tip_shadow_color'] = this.taoaboTipShadowColor; | |||||
data['taoabo_tip_text_color'] = this.taoaboTipTextColor; | |||||
data['taoabo_tip_text'] = this.taoaboTipText; | |||||
data['taoabo_tip_btn_text_color'] = this.taoaboTipBtnTextColor; | |||||
data['taoabo_tip_btn_bg_color'] = this.taoaboTipBtnBgColor; | |||||
data['taoabo_tip_btn_text'] = this.taoaboTipBtnText; | |||||
return data; | |||||
} | |||||
} | } | ||||
@@ -45,7 +45,7 @@ class _HomeBannerContainerState extends State<HomeBannerContainer> { | |||||
/// 点击事件 | /// 点击事件 | ||||
void _itemOnClick(HomeBannerListItemModel model){ | void _itemOnClick(HomeBannerListItemModel model){ | ||||
print('${model?.skip_identifier}'); | print('${model?.skip_identifier}'); | ||||
RouterUtil.route(model.toJson(), context); | |||||
RouterUtil.route(model, model.toJson(), context); | |||||
} | } | ||||
@override | @override | ||||
@@ -1,3 +1,5 @@ | |||||
import 'package:zhiying_comm/zhiying_comm.dart'; | |||||
class HomeBannerModel { | class HomeBannerModel { | ||||
List<HomeBannerListItemModel> list; | List<HomeBannerListItemModel> list; | ||||
@@ -18,7 +20,7 @@ class HomeBannerModel { | |||||
} | } | ||||
} | } | ||||
class HomeBannerListItemModel { | |||||
class HomeBannerListItemModel extends SkipModel{ | |||||
String img; | String img; | ||||
String skip_identifier; | String skip_identifier; | ||||
@@ -8,6 +8,7 @@ import 'package:zhiying_base_widget/pages/main_page/notifier/main_page_notifier. | |||||
import 'package:zhiying_base_widget/widgets/home/home_goods/bloc/home_goods_bloc.dart'; | import 'package:zhiying_base_widget/widgets/home/home_goods/bloc/home_goods_bloc.dart'; | ||||
import 'package:zhiying_base_widget/widgets/home/home_goods/home_goods_creater.dart'; | import 'package:zhiying_base_widget/widgets/home/home_goods/home_goods_creater.dart'; | ||||
import 'package:zhiying_base_widget/widgets/home/home_goods/home_goods_item.dart'; | import 'package:zhiying_base_widget/widgets/home/home_goods/home_goods_item.dart'; | ||||
import 'package:zhiying_base_widget/widgets/home/home_goods/home_goods_item_single.dart'; | |||||
import 'package:zhiying_base_widget/widgets/home/home_goods/models/home_goods_model.dart'; | import 'package:zhiying_base_widget/widgets/home/home_goods/models/home_goods_model.dart'; | ||||
import 'package:zhiying_base_widget/widgets/home/home_goods/models/home_goods_style_model.dart'; | import 'package:zhiying_base_widget/widgets/home/home_goods/models/home_goods_style_model.dart'; | ||||
import 'package:zhiying_base_widget/widgets/home/home_goods/skeleton/home_goods_sk.dart'; | import 'package:zhiying_base_widget/widgets/home/home_goods/skeleton/home_goods_sk.dart'; | ||||
@@ -92,16 +93,35 @@ class _HomeGoodsContainerState extends State<_HomeGoodsContainer> { | |||||
} | } | ||||
List<HomeGoodsModel> goods = snapshot.data; | List<HomeGoodsModel> goods = snapshot.data; | ||||
int column = int.tryParse(_style.listColumn); | |||||
column = column <= 0 ? 1: column; | |||||
int count = (goods.length / column).ceil(); | |||||
return ListView.builder( | return ListView.builder( | ||||
shrinkWrap: true, | shrinkWrap: true, | ||||
physics: NeverScrollableScrollPhysics(), | physics: NeverScrollableScrollPhysics(), | ||||
itemCount: goods.length, | |||||
itemCount: count, | |||||
itemBuilder: (context, index) { | itemBuilder: (context, index) { | ||||
return HomeGoodsItem( | |||||
goods[index], | |||||
_style, | |||||
data: widget.data, | |||||
); | |||||
if (column == 1) { | |||||
return HomeGoodsItemSingle( | |||||
goods[index], | |||||
_style, | |||||
data: widget.data, | |||||
); | |||||
} else { | |||||
// return Container(color: Colors.red, height: 126,margin: EdgeInsets.all(10),); | |||||
return Padding( | |||||
padding: const EdgeInsets.only(left: 5, right: 5), | |||||
child: Row(children: List.generate(column, (c) { | |||||
int i = index * column + c; | |||||
return Expanded | |||||
(child: i < goods.length ? HomeGoodsItem( | |||||
goods[i], | |||||
_style, | |||||
data: widget.data, | |||||
): Container(),); | |||||
}).toList(),), | |||||
); | |||||
} | |||||
}); | }); | ||||
}, | }, | ||||
), | ), | ||||
@@ -33,43 +33,42 @@ class HomeGoodsItem extends StatelessWidget { | |||||
return GestureDetector( | return GestureDetector( | ||||
onTap: () => _onJumpGoodsDetails(context, goods), | onTap: () => _onJumpGoodsDetails(context, goods), | ||||
child: Container( | child: Container( | ||||
margin: EdgeInsets.only(left: 12.5, right: 12.5, top: 4, bottom: 4), | |||||
padding: EdgeInsets.all(7.5), | |||||
margin: EdgeInsets.only(top: 4, bottom: 4, left: 5, right: 5), | |||||
decoration: BoxDecoration( | decoration: BoxDecoration( | ||||
color: Colors.white, | color: Colors.white, | ||||
borderRadius: BorderRadius.all(Radius.circular(7.5))), | borderRadius: BorderRadius.all(Radius.circular(7.5))), | ||||
child: Row( | |||||
child: Column( | |||||
crossAxisAlignment: CrossAxisAlignment.start, | crossAxisAlignment: CrossAxisAlignment.start, | ||||
children: <Widget>[ | children: <Widget>[ | ||||
Container( | Container( | ||||
width: 126, | |||||
height: 126, | |||||
margin: EdgeInsets.only(right: 10), | |||||
width: double.infinity, | |||||
margin: EdgeInsets.only(right: 0), | |||||
child: ClipRRect( | child: ClipRRect( | ||||
borderRadius: BorderRadius.circular(7.5), | |||||
borderRadius: BorderRadius.only(topLeft: Radius.circular(7.5), topRight: Radius.circular(7.5)), | |||||
child: CachedNetworkImage( | child: CachedNetworkImage( | ||||
imageUrl: goods.goodImage, | imageUrl: goods.goodImage, | ||||
fit: BoxFit.fitHeight, | |||||
fit: BoxFit.fitWidth, | |||||
), | ), | ||||
), | ), | ||||
), | ), | ||||
Expanded( | |||||
child: Container( | |||||
height: 126, | |||||
width: double.infinity, | |||||
child: Column( | |||||
crossAxisAlignment: CrossAxisAlignment.start, | |||||
children: <Widget>[ | |||||
Container( | |||||
width: double.infinity, | |||||
child: _createTitle(), | |||||
), | |||||
_createShop(), | |||||
_createCupone(), | |||||
Expanded(child: Container()), | |||||
_createBottom(), | |||||
], | |||||
), | |||||
Container( | |||||
margin: EdgeInsets.all(7.5), | |||||
height: 120, | |||||
width: double.infinity, | |||||
child: Column( | |||||
crossAxisAlignment: CrossAxisAlignment.start, | |||||
children: <Widget>[ | |||||
Container( | |||||
width: double.infinity, | |||||
child: _createTitle(), | |||||
), | |||||
_createShop(), | |||||
Expanded(child: Container()), | |||||
_createBottom(), | |||||
_createCupone(), | |||||
], | |||||
), | ), | ||||
) | ) | ||||
], | ], | ||||
@@ -131,6 +130,7 @@ class HomeGoodsItem extends StatelessWidget { | |||||
Expanded( | Expanded( | ||||
child: Text( | child: Text( | ||||
goods.shopName, | goods.shopName, | ||||
maxLines: 1, | |||||
style: TextStyle( | style: TextStyle( | ||||
color: HexColor.fromHex(style.shopNameColor), | color: HexColor.fromHex(style.shopNameColor), | ||||
fontSize: 11, | fontSize: 11, | ||||
@@ -200,8 +200,6 @@ class HomeGoodsItem extends StatelessWidget { | |||||
children: <Widget>[ | children: <Widget>[ | ||||
_createPrice(), | _createPrice(), | ||||
_createOriginPrice(), | _createOriginPrice(), | ||||
Expanded(child: Container()), | |||||
_createSale(), | |||||
], | ], | ||||
), | ), | ||||
); | ); | ||||
@@ -0,0 +1,263 @@ | |||||
import 'dart:convert'; | |||||
import 'package:cached_network_image/cached_network_image.dart'; | |||||
import 'package:flutter/material.dart'; | |||||
import 'package:zhiying_base_widget/pages/goods_details_page/goods_details_page.dart'; | |||||
import 'package:zhiying_base_widget/widgets/home/home_goods/models/home_goods_model.dart'; | |||||
import 'package:zhiying_base_widget/widgets/home/home_goods/models/home_goods_style_model.dart'; | |||||
import 'package:zhiying_comm/zhiying_comm.dart'; | |||||
// ignore: must_be_immutable | |||||
class HomeGoodsItemSingle extends StatelessWidget { | |||||
final HomeGoodsModel goods; | |||||
final HomeGoodsStyleModel style; | |||||
Map<String, dynamic> data; | |||||
HomeGoodsItemSingle(this.goods, this.style, {Key key, this.data}) | |||||
: super(key: key) { | |||||
if (this.data != null && this.data.containsKey('data')) { | |||||
String data = this.data['data']; | |||||
Map<String, dynamic> json = Map<String, dynamic>.from(jsonDecode(data)); | |||||
this.data = json; | |||||
} | |||||
} | |||||
/// 跳到商品详情 | |||||
void _onJumpGoodsDetails(BuildContext context, HomeGoodsModel goods) { | |||||
Navigator.push(context, | |||||
MaterialPageRoute(builder: (_) => GoodsDetailsPage(goods.toJson()))); | |||||
} | |||||
@override | |||||
Widget build(BuildContext context) { | |||||
return GestureDetector( | |||||
onTap: () => _onJumpGoodsDetails(context, goods), | |||||
child: Container( | |||||
margin: EdgeInsets.only(left: 12.5, right: 12.5, top: 4, bottom: 4), | |||||
padding: EdgeInsets.all(7.5), | |||||
decoration: BoxDecoration( | |||||
color: Colors.white, | |||||
borderRadius: BorderRadius.all(Radius.circular(7.5))), | |||||
child: Row( | |||||
crossAxisAlignment: CrossAxisAlignment.start, | |||||
children: <Widget>[ | |||||
Container( | |||||
width: 126, | |||||
height: 126, | |||||
margin: EdgeInsets.only(right: 10), | |||||
child: ClipRRect( | |||||
borderRadius: BorderRadius.circular(7.5), | |||||
child: CachedNetworkImage( | |||||
imageUrl: goods.goodImage, | |||||
fit: BoxFit.fitHeight, | |||||
), | |||||
), | |||||
), | |||||
Expanded( | |||||
child: Container( | |||||
height: 126, | |||||
width: double.infinity, | |||||
child: Column( | |||||
crossAxisAlignment: CrossAxisAlignment.start, | |||||
children: <Widget>[ | |||||
Container( | |||||
width: double.infinity, | |||||
child: _createTitle(), | |||||
), | |||||
_createShop(), | |||||
_createCupone(), | |||||
Expanded(child: Container()), | |||||
_createBottom(), | |||||
], | |||||
), | |||||
), | |||||
) | |||||
], | |||||
), | |||||
), | |||||
); | |||||
} | |||||
Widget _createTitle() { | |||||
List<InlineSpan> list = List(); | |||||
if (goods.providerName != null && goods.providerName != '') { | |||||
list.add(WidgetSpan( | |||||
child: Container( | |||||
padding: EdgeInsets.only(left: 2, right: 2, top: 3, bottom: 3), | |||||
margin: EdgeInsets.only(right: 4), | |||||
child: Text( | |||||
goods.providerName, | |||||
style: TextStyle( | |||||
fontSize: 9, | |||||
height: 1, | |||||
color: HexColor.fromHex(style.providerNameColor), | |||||
), | |||||
), | |||||
decoration: BoxDecoration( | |||||
color: HexColor.fromHex(style.providerNameBackgroundColor), | |||||
borderRadius: BorderRadius.circular(2.5)), | |||||
), | |||||
)); | |||||
} | |||||
list.add(TextSpan( | |||||
text: goods.goodTitle, | |||||
style: TextStyle( | |||||
fontSize: 15, | |||||
color: HexColor.fromHex('#333333'), | |||||
fontWeight: FontWeight.bold), | |||||
)); | |||||
return RichText( | |||||
maxLines: 2, | |||||
overflow: TextOverflow.ellipsis, | |||||
text: TextSpan(children: list), | |||||
); | |||||
} | |||||
Widget _createShop() { | |||||
return Container( | |||||
margin: EdgeInsets.only(top: 5), | |||||
width: double.infinity, | |||||
child: Row( | |||||
children: <Widget>[ | |||||
Container( | |||||
width: 15, | |||||
height: 15, | |||||
margin: EdgeInsets.only(right: 2), | |||||
child: CachedNetworkImage( | |||||
imageUrl: style.shopIcon, | |||||
fit: BoxFit.fitHeight, | |||||
), | |||||
), | |||||
Expanded( | |||||
child: Text( | |||||
goods.shopName, | |||||
maxLines: 1, | |||||
style: TextStyle( | |||||
color: HexColor.fromHex(style.shopNameColor), | |||||
fontSize: 11, | |||||
fontWeight: FontWeight.w400), | |||||
)) | |||||
], | |||||
), | |||||
); | |||||
} | |||||
Widget _createCupone() { | |||||
List<Widget> widgets = List(); | |||||
if (goods.coupon != null && goods.coupon != '') { | |||||
widgets.add(Container( | |||||
margin: EdgeInsets.only(right: 5), | |||||
padding: EdgeInsets.only(left: 10, right: 10, top: 3, bottom: 3), | |||||
decoration: BoxDecoration( | |||||
color: HexColor.fromHex(style.couponBgColor), | |||||
borderRadius: BorderRadius.circular(2.5), | |||||
), | |||||
child: Text( | |||||
goods.coupon, | |||||
textAlign: TextAlign.center, | |||||
maxLines: 1, | |||||
style: TextStyle( | |||||
height: 1, | |||||
fontSize: 11, | |||||
color: HexColor.fromHex(style.couponFontColor), | |||||
), | |||||
), | |||||
)); | |||||
} | |||||
if (goods.commission != null || goods.commission != '') { | |||||
widgets.add(Container( | |||||
margin: EdgeInsets.only(right: 5), | |||||
padding: EdgeInsets.only(left: 10, right: 10, top: 3, bottom: 3), | |||||
decoration: BoxDecoration( | |||||
color: HexColor.fromHex(style.commissionBgColor), | |||||
borderRadius: BorderRadius.circular(2.5), | |||||
), | |||||
child: Text( | |||||
goods.commission, | |||||
textAlign: TextAlign.center, | |||||
maxLines: 1, | |||||
style: TextStyle( | |||||
height: 1, | |||||
fontSize: 11, | |||||
color: HexColor.fromHex(style.commissionFontColor), | |||||
), | |||||
), | |||||
)); | |||||
} | |||||
return Container( | |||||
margin: EdgeInsets.only(top: 6), | |||||
child: Row( | |||||
children: widgets, | |||||
), | |||||
); | |||||
} | |||||
Widget _createBottom() { | |||||
return Container( | |||||
child: Row( | |||||
crossAxisAlignment: CrossAxisAlignment.end, | |||||
children: <Widget>[ | |||||
_createPrice(), | |||||
_createOriginPrice(), | |||||
Expanded(child: Container()), | |||||
_createSale(), | |||||
], | |||||
), | |||||
); | |||||
} | |||||
Widget _createPrice() { | |||||
return RichText( | |||||
maxLines: 1, | |||||
overflow: TextOverflow.ellipsis, | |||||
text: TextSpan(children: [ | |||||
TextSpan( | |||||
text: '¥', | |||||
style: TextStyle( | |||||
fontSize: 10, | |||||
color: HexColor.fromHex(style.currentPriceColor), | |||||
fontWeight: FontWeight.bold, | |||||
fontFamily: 'Din', | |||||
package: 'zhiying_base_widget', | |||||
), | |||||
), | |||||
TextSpan( | |||||
text: goods.currentPrice, | |||||
style: TextStyle( | |||||
fontSize: 20, | |||||
color: HexColor.fromHex(style.currentPriceColor), | |||||
fontWeight: FontWeight.bold, | |||||
fontFamily: 'Din', | |||||
package: 'zhiying_base_widget', | |||||
), | |||||
) | |||||
]), | |||||
); | |||||
} | |||||
Widget _createOriginPrice() { | |||||
return Padding( | |||||
padding: EdgeInsets.only(bottom: 2), | |||||
child: Text( | |||||
'¥${goods.marketPrice}', | |||||
style: TextStyle( | |||||
fontSize: 11, | |||||
height: 1, | |||||
color: HexColor.fromHex(style.marketPriceColor), | |||||
fontWeight: FontWeight.normal, | |||||
fontFamily: 'Din', | |||||
package: 'zhiying_base_widget', | |||||
decoration: TextDecoration.lineThrough, | |||||
), | |||||
)); | |||||
} | |||||
Widget _createSale() { | |||||
return Text( | |||||
'${goods.inorderCount}', | |||||
style: TextStyle(fontSize: 11, color: HexColor.fromHex('#999999')), | |||||
); | |||||
} | |||||
} |
@@ -1,38 +1,37 @@ | |||||
import 'package:json_annotation/json_annotation.dart'; | |||||
part 'home_goods_header_model.g.dart'; | |||||
@JsonSerializable() | |||||
class HomeGoodsHeaderModel extends Object { | |||||
@JsonKey(name: 'type') | |||||
class HomeGoodsHeaderModel { | |||||
String type; | String type; | ||||
@JsonKey(name: 'title') | |||||
String title; | String title; | ||||
@JsonKey(name: 'subtitle') | |||||
String subtitle; | String subtitle; | ||||
@JsonKey(name: 'tilte_text_color') | |||||
String tilteTextColor; | String tilteTextColor; | ||||
@JsonKey(name: 'subtitle_bg_color') | |||||
String subtitleBgColor; | String subtitleBgColor; | ||||
@JsonKey(name: 'subtitle_text_color') | |||||
String subtitleTextColor; | String subtitleTextColor; | ||||
HomeGoodsHeaderModel( | HomeGoodsHeaderModel( | ||||
this.type, | |||||
this.title, | |||||
this.subtitle, | |||||
this.tilteTextColor, | |||||
this.subtitleBgColor, | |||||
this.subtitleTextColor, | |||||
); | |||||
factory HomeGoodsHeaderModel.fromJson(Map<String, dynamic> srcJson) => | |||||
_$HomeGoodsHeaderModelFromJson(srcJson); | |||||
Map<String, dynamic> toJson() => _$HomeGoodsHeaderModelToJson(this); | |||||
{this.type, | |||||
this.title, | |||||
this.subtitle, | |||||
this.tilteTextColor, | |||||
this.subtitleBgColor, | |||||
this.subtitleTextColor}); | |||||
HomeGoodsHeaderModel.fromJson(Map<String, dynamic> json) { | |||||
type = json['type']; | |||||
title = json['title']; | |||||
subtitle = json['subtitle']; | |||||
tilteTextColor = json['tilte_text_color']; | |||||
subtitleBgColor = json['subtitle_bg_color']; | |||||
subtitleTextColor = json['subtitle_text_color']; | |||||
} | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
data['type'] = this.type; | |||||
data['title'] = this.title; | |||||
data['subtitle'] = this.subtitle; | |||||
data['tilte_text_color'] = this.tilteTextColor; | |||||
data['subtitle_bg_color'] = this.subtitleBgColor; | |||||
data['subtitle_text_color'] = this.subtitleTextColor; | |||||
return data; | |||||
} | |||||
} | } | ||||
@@ -1,58 +1,57 @@ | |||||
import 'package:json_annotation/json_annotation.dart'; | |||||
part 'home_goods_model.g.dart'; | |||||
@JsonSerializable() | |||||
class HomeGoodsModel extends Object { | |||||
@JsonKey(name: 'provider') | |||||
class HomeGoodsModel { | |||||
String provider; | String provider; | ||||
@JsonKey(name: 'provider_name') | |||||
String providerName; | String providerName; | ||||
@JsonKey(name: 'good_id') | |||||
String goodId; | String goodId; | ||||
@JsonKey(name: 'good_image') | |||||
String goodImage; | String goodImage; | ||||
@JsonKey(name: 'good_title') | |||||
String goodTitle; | String goodTitle; | ||||
@JsonKey(name: 'shop_name') | |||||
String shopName; | String shopName; | ||||
@JsonKey(name: 'coupon') | |||||
String coupon; | String coupon; | ||||
@JsonKey(name: 'commission') | |||||
String commission; | String commission; | ||||
@JsonKey(name: 'market_price') | |||||
String marketPrice; | String marketPrice; | ||||
@JsonKey(name: 'current_price') | |||||
String currentPrice; | String currentPrice; | ||||
@JsonKey(name: 'inorder_count') | |||||
String inorderCount; | String inorderCount; | ||||
HomeGoodsModel( | HomeGoodsModel( | ||||
this.provider, | |||||
this.providerName, | |||||
this.goodId, | |||||
this.goodImage, | |||||
this.goodTitle, | |||||
this.shopName, | |||||
this.coupon, | |||||
this.commission, | |||||
this.marketPrice, | |||||
this.currentPrice, | |||||
this.inorderCount, | |||||
); | |||||
factory HomeGoodsModel.fromJson(Map<String, dynamic> srcJson) => | |||||
_$HomeGoodsModelFromJson(srcJson); | |||||
Map<String, dynamic> toJson() => _$HomeGoodsModelToJson(this); | |||||
{this.provider, | |||||
this.providerName, | |||||
this.goodId, | |||||
this.goodImage, | |||||
this.goodTitle, | |||||
this.shopName, | |||||
this.coupon, | |||||
this.commission, | |||||
this.marketPrice, | |||||
this.currentPrice, | |||||
this.inorderCount}); | |||||
HomeGoodsModel.fromJson(Map<String, dynamic> json) { | |||||
provider = json['provider']; | |||||
providerName = json['provider_name']; | |||||
goodId = json['good_id']; | |||||
goodImage = json['good_image']; | |||||
goodTitle = json['good_title']; | |||||
shopName = json['shop_name']; | |||||
coupon = json['coupon']; | |||||
commission = json['commission']; | |||||
marketPrice = json['market_price']; | |||||
currentPrice = json['current_price']; | |||||
inorderCount = json['inorder_count']; | |||||
} | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
data['provider'] = this.provider; | |||||
data['provider_name'] = this.providerName; | |||||
data['good_id'] = this.goodId; | |||||
data['good_image'] = this.goodImage; | |||||
data['good_title'] = this.goodTitle; | |||||
data['shop_name'] = this.shopName; | |||||
data['coupon'] = this.coupon; | |||||
data['commission'] = this.commission; | |||||
data['market_price'] = this.marketPrice; | |||||
data['current_price'] = this.currentPrice; | |||||
data['inorder_count'] = this.inorderCount; | |||||
return data; | |||||
} | |||||
} | } | ||||
@@ -1,62 +1,69 @@ | |||||
import 'package:json_annotation/json_annotation.dart'; | |||||
import 'package:zhiying_base_widget/widgets/home/home_goods/models/home_goods_header_model.dart'; | import 'package:zhiying_base_widget/widgets/home/home_goods/models/home_goods_header_model.dart'; | ||||
part 'home_goods_style_model.g.dart'; | |||||
@JsonSerializable() | |||||
class HomeGoodsStyleModel extends Object { | |||||
@JsonKey(name: 'list_column') | |||||
String column; | |||||
@JsonKey(name: 'recommend_list') | |||||
class HomeGoodsStyleModel { | |||||
String listColumn; | |||||
List<HomeGoodsHeaderModel> recommendList; | List<HomeGoodsHeaderModel> recommendList; | ||||
@JsonKey(name: 'provider_name_color') | |||||
String providerNameColor; | String providerNameColor; | ||||
@JsonKey(name: 'provider_name_background_color') | |||||
String providerNameBackgroundColor; | String providerNameBackgroundColor; | ||||
@JsonKey(name: 'shop_name_color') | |||||
String shopNameColor; | String shopNameColor; | ||||
@JsonKey(name: 'shop_icon') | |||||
String shopIcon; | String shopIcon; | ||||
@JsonKey(name: 'coupon_font_color') | |||||
String couponFontColor; | String couponFontColor; | ||||
@JsonKey(name: 'coupon_bg_color') | |||||
String couponBgColor; | String couponBgColor; | ||||
@JsonKey(name: 'commission_font_color') | |||||
String commissionFontColor; | String commissionFontColor; | ||||
@JsonKey(name: 'commission_bg_color') | |||||
String commissionBgColor; | String commissionBgColor; | ||||
@JsonKey(name: 'market_price_color') | |||||
String marketPriceColor; | String marketPriceColor; | ||||
@JsonKey(name: 'current_price_color') | |||||
String currentPriceColor; | String currentPriceColor; | ||||
HomeGoodsStyleModel( | HomeGoodsStyleModel( | ||||
this.recommendList, | |||||
this.providerNameColor, | |||||
this.providerNameBackgroundColor, | |||||
this.shopNameColor, | |||||
this.shopIcon, | |||||
this.couponFontColor, | |||||
this.couponBgColor, | |||||
this.commissionFontColor, | |||||
this.commissionBgColor, | |||||
this.marketPriceColor, | |||||
this.currentPriceColor, | |||||
); | |||||
factory HomeGoodsStyleModel.fromJson(Map<String, dynamic> srcJson) => | |||||
_$HomeGoodsStyleModelFromJson(srcJson); | |||||
Map<String, dynamic> toJson() => _$HomeGoodsStyleModelToJson(this); | |||||
} | |||||
{this.listColumn, | |||||
this.recommendList, | |||||
this.providerNameColor, | |||||
this.providerNameBackgroundColor, | |||||
this.shopNameColor, | |||||
this.shopIcon, | |||||
this.couponFontColor, | |||||
this.couponBgColor, | |||||
this.commissionFontColor, | |||||
this.commissionBgColor, | |||||
this.marketPriceColor, | |||||
this.currentPriceColor}); | |||||
HomeGoodsStyleModel.fromJson(Map<String, dynamic> json) { | |||||
listColumn = json['list_column']; | |||||
if (json['recommend_list'] != null) { | |||||
recommendList = new List<HomeGoodsHeaderModel>(); | |||||
json['recommend_list'].forEach((v) { | |||||
recommendList.add(new HomeGoodsHeaderModel.fromJson(v)); | |||||
}); | |||||
} | |||||
providerNameColor = json['provider_name_color']; | |||||
providerNameBackgroundColor = json['provider_name_background_color']; | |||||
shopNameColor = json['shop_name_color']; | |||||
shopIcon = json['shop_icon']; | |||||
couponFontColor = json['coupon_font_color']; | |||||
couponBgColor = json['coupon_bg_color']; | |||||
commissionFontColor = json['commission_font_color']; | |||||
commissionBgColor = json['commission_bg_color']; | |||||
marketPriceColor = json['market_price_color']; | |||||
currentPriceColor = json['current_price_color']; | |||||
} | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
data['list_column'] = this.listColumn; | |||||
if (this.recommendList != null) { | |||||
data['recommend_list'] = | |||||
this.recommendList.map((v) => v.toJson()).toList(); | |||||
} | |||||
data['provider_name_color'] = this.providerNameColor; | |||||
data['provider_name_background_color'] = this.providerNameBackgroundColor; | |||||
data['shop_name_color'] = this.shopNameColor; | |||||
data['shop_icon'] = this.shopIcon; | |||||
data['coupon_font_color'] = this.couponFontColor; | |||||
data['coupon_bg_color'] = this.couponBgColor; | |||||
data['commission_font_color'] = this.commissionFontColor; | |||||
data['commission_bg_color'] = this.commissionBgColor; | |||||
data['market_price_color'] = this.marketPriceColor; | |||||
data['current_price_color'] = this.currentPriceColor; | |||||
return data; | |||||
} | |||||
} |
@@ -46,7 +46,7 @@ class _HomeNoticeWidgetContianerState extends State<HomeNoticeWidgetContianer> { | |||||
/// 子item跳转 | /// 子item跳转 | ||||
void _itemJump(HomeNoticeNoticesModel model){ | void _itemJump(HomeNoticeNoticesModel model){ | ||||
print('${model?.skip_identifier}'); | print('${model?.skip_identifier}'); | ||||
RouterUtil.route(model.toJson(), context); | |||||
// RouterUtil.route(model, model.toJson(), context); | |||||
} | } | ||||
@override | @override | ||||
@@ -1,3 +1,5 @@ | |||||
import 'package:zhiying_comm/zhiying_comm.dart'; | |||||
class HomeNoticeModel { | class HomeNoticeModel { | ||||
String logo_img; | String logo_img; | ||||
String jump_img; | String jump_img; | ||||
@@ -36,7 +38,7 @@ class HomeNoticeModel { | |||||
} | } | ||||
} | } | ||||
class HomeNoticeNoticesModel { | |||||
class HomeNoticeNoticesModel{ | |||||
String notice_text; | String notice_text; | ||||
String skip_identifier; | String skip_identifier; | ||||
@@ -34,7 +34,7 @@ class _HomeQuickEntryContianerState extends State<HomeQuickEntryContianer> { | |||||
/// Icon点击事件 | /// Icon点击事件 | ||||
void _itemIconClick(TypeNormal model){ | void _itemIconClick(TypeNormal model){ | ||||
print("item type = ${model.skip_identifier}"); | print("item type = ${model.skip_identifier}"); | ||||
RouterUtil.route(model.toJson(), context); | |||||
// RouterUtil.route(model, model.toJson(), context); | |||||
} | } | ||||
@override | @override | ||||
@@ -44,7 +44,7 @@ class _HomeSlideBannerContainerState extends State<HomeSlideBannerContainer> { | |||||
/// 子元素点击事件 | /// 子元素点击事件 | ||||
void _itemOnClick(IndexCarousel model) { | void _itemOnClick(IndexCarousel model) { | ||||
print('点击了 $model'); | print('点击了 $model'); | ||||
RouterUtil.route(model.toJson(), context); | |||||
// RouterUtil.route(model, model.toJson(), context); | |||||
// Navigator.push(context, MaterialPageRoute( | // Navigator.push(context, MaterialPageRoute( | ||||
// builder: (_) => PageFactory.create('goods_details', null) | // builder: (_) => PageFactory.create('goods_details', null) | ||||
// )); | // )); | ||||
@@ -8,9 +8,9 @@ class HomeSreachCreater extends WidgetCreater { | |||||
List<Widget> createWidgets(Map<String, dynamic> model) { | List<Widget> createWidgets(Map<String, dynamic> model) { | ||||
return [ | return [ | ||||
SliverPersistentHeader( | SliverPersistentHeader( | ||||
pinned: false, | |||||
pinned: true, | |||||
floating: false, | floating: false, | ||||
delegate: HomeSreachDeleagater(), | |||||
delegate: HomeSreachDeleagater(model), | |||||
), | ), | ||||
]; | ]; | ||||
} | } | ||||
@@ -1,13 +1,20 @@ | |||||
import 'package:zhiying_comm/zhiying_comm.dart'; | import 'package:zhiying_comm/zhiying_comm.dart'; | ||||
import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
import 'dart:ui'; | import 'dart:ui'; | ||||
import 'package:cached_network_image/cached_network_image.dart'; | |||||
class HomeSreachDeleagater extends SliverPersistentHeaderDelegate{ | class HomeSreachDeleagater extends SliverPersistentHeaderDelegate{ | ||||
final Map<String, dynamic> model; | |||||
HomeSreachWidget _searchWidget; | |||||
double _height; | double _height; | ||||
HomeSreachDeleagater() : super() { | |||||
HomeSreachDeleagater(this.model) : super() { | |||||
_height = MediaQueryData.fromWindow(window).padding.top + 44; | _height = MediaQueryData.fromWindow(window).padding.top + 44; | ||||
_searchWidget = HomeSreachWidget(model); | |||||
} | } | ||||
@override | @override | ||||
@@ -15,7 +22,7 @@ class HomeSreachDeleagater extends SliverPersistentHeaderDelegate{ | |||||
print('${shrinkOffset.toString()}'); | print('${shrinkOffset.toString()}'); | ||||
double percent = shrinkOffset / _height; | double percent = shrinkOffset / _height; | ||||
print('${percent.toString()}'); | print('${percent.toString()}'); | ||||
return HomeSreachWidget(null); | |||||
return _searchWidget; | |||||
} | } | ||||
@override | @override | ||||
@@ -63,7 +70,7 @@ class _HomeSreachContainerState extends State<HomeSreachContainer> { | |||||
color: Colors.transparent, | color: Colors.transparent, | ||||
height: 30, | height: 30, | ||||
width: double.infinity, | width: double.infinity, | ||||
margin: EdgeInsets.only(left: 12.5, right: 12.5, bottom: 10, top: MediaQueryData.fromWindow(window).padding.top + 10), | |||||
margin: EdgeInsets.only(left: 12.5, right: 12.5, bottom: 7, top: MediaQueryData.fromWindow(window).padding.top + 7), | |||||
child: Row( | child: Row( | ||||
children: <Widget>[ | children: <Widget>[ | ||||
/// 搜索框 | /// 搜索框 | ||||
@@ -95,10 +102,7 @@ class _HomeSreachContainerState extends State<HomeSreachContainer> { | |||||
fontSize: 14, | fontSize: 14, | ||||
), | ), | ||||
contentPadding: EdgeInsets.zero, | contentPadding: EdgeInsets.zero, | ||||
prefixIcon: Icon( | |||||
Icons.search, | |||||
color: Colors.white, | |||||
), | |||||
prefixIcon: Icon(Icons.search, color: Colors.white,), | |||||
filled: true, | filled: true, | ||||
fillColor: Color(0x50cccccc), | fillColor: Color(0x50cccccc), | ||||
focusedBorder: OutlineInputBorder(borderSide: BorderSide(color: Color(0x00000000)), borderRadius: BorderRadius.all(Radius.circular(30))), | focusedBorder: OutlineInputBorder(borderSide: BorderSide(color: Color(0x00000000)), borderRadius: BorderRadius.all(Radius.circular(30))), | ||||
@@ -47,16 +47,18 @@ class _MineDataState extends State<MineData> { | |||||
Map json = convert.jsonDecode(d); | Map json = convert.jsonDecode(d); | ||||
MineDataModel style = | MineDataModel style = | ||||
MineDataModel.fromJson(Map<String, dynamic>.from(json)); | MineDataModel.fromJson(Map<String, dynamic>.from(json)); | ||||
List<MineProfileDataModel> list = style.gridView.map((item) { | |||||
return MineProfileDataModel(name: item.name, value: '¥0'); | |||||
}).toList(); | |||||
MineProfileModel profile = MineProfileModel( | MineProfileModel profile = MineProfileModel( | ||||
'', | |||||
'', | |||||
'', | |||||
'', | |||||
'', | |||||
'¥0', | |||||
style.datas.map((item) { | |||||
return MineProfileDataModel(item.name, '¥0'); | |||||
}).toList(), | |||||
username:'', | |||||
avatar:'', | |||||
inviteCode:'', | |||||
userLvName:'', | |||||
userLvIcon:'', | |||||
total:'', | |||||
gridViews:list, | |||||
); | ); | ||||
return MineDataWidget(profile, widget.data); | return MineDataWidget(profile, widget.data); | ||||
} | } | ||||
@@ -121,7 +121,7 @@ class MineDataWidget extends StatelessWidget { | |||||
), | ), | ||||
), | ), | ||||
onTap: () { | onTap: () { | ||||
RouterUtil.route(_json, context); | |||||
// RouterUtil.route(_json, context); | |||||
}, | }, | ||||
) | ) | ||||
], | ], | ||||
@@ -133,7 +133,7 @@ class MineDataWidget extends StatelessWidget { | |||||
} | } | ||||
Widget _createCenter() { | Widget _createCenter() { | ||||
List<MineProfileDataModel> datas = profile.datas; | |||||
List<MineProfileDataModel> datas = profile.gridViews; | |||||
int maxColumn = 2; | int maxColumn = 2; | ||||
int row = (datas.length / 2).ceil(); | int row = (datas.length / 2).ceil(); | ||||
if (row % 3 == 0) { | if (row % 3 == 0) { | ||||
@@ -1,67 +1,73 @@ | |||||
import 'package:json_annotation/json_annotation.dart'; | |||||
import 'package:zhiying_base_widget/widgets/mine/mine_header/model/mine_profile_model.dart'; | import 'package:zhiying_base_widget/widgets/mine/mine_header/model/mine_profile_model.dart'; | ||||
part 'mine_data_model.g.dart'; | |||||
@JsonSerializable() | |||||
class MineDataModel extends Object { | |||||
@JsonKey(name: 'accumulated_earnings_name_color') | |||||
class MineDataModel { | |||||
String accumulatedEarningsNameColor; | String accumulatedEarningsNameColor; | ||||
@JsonKey(name: 'accumulated_earnings_color') | |||||
String accumulatedEarningsColor; | String accumulatedEarningsColor; | ||||
@JsonKey(name: 'accumulated_earnings_bg_img') | |||||
String accumulatedEarningsBgImg; | String accumulatedEarningsBgImg; | ||||
@JsonKey(name: 'btn_text') | |||||
String btnText; | String btnText; | ||||
@JsonKey(name: 'btn_text_color') | |||||
String btnTextColor; | String btnTextColor; | ||||
@JsonKey(name: 'btn_img') | |||||
String btnImg; | String btnImg; | ||||
@JsonKey(name: 'required_login') | |||||
String requiredLogin; | String requiredLogin; | ||||
@JsonKey(name: 'required_taobao_auth') | |||||
String requiredTaobaoAuth; | String requiredTaobaoAuth; | ||||
@JsonKey(name: 'skip_identifier') | |||||
String skipIdentifier; | String skipIdentifier; | ||||
@JsonKey(name: 'grid_view_bg_color') | |||||
String gridViewBgColor; | String gridViewBgColor; | ||||
@JsonKey(name: 'grid_view_name_color') | |||||
String gridViewNameColor; | String gridViewNameColor; | ||||
@JsonKey(name: 'grid_view_value_color') | |||||
String gridViewValueColor; | String gridViewValueColor; | ||||
@JsonKey(name: 'grid_view') | |||||
List<MineProfileDataModel> datas; | |||||
List<MineProfileDataModel> gridView; | |||||
MineDataModel( | MineDataModel( | ||||
this.accumulatedEarningsNameColor, | |||||
this.accumulatedEarningsColor, | |||||
this.accumulatedEarningsBgImg, | |||||
this.btnText, | |||||
this.btnTextColor, | |||||
this.btnImg, | |||||
this.requiredLogin, | |||||
this.requiredTaobaoAuth, | |||||
this.skipIdentifier, | |||||
this.gridViewBgColor, | |||||
this.gridViewNameColor, | |||||
this.gridViewValueColor, | |||||
this.datas, | |||||
); | |||||
factory MineDataModel.fromJson(Map<String, dynamic> srcJson) => | |||||
_$MineDataModelFromJson(srcJson); | |||||
Map<String, dynamic> toJson() => _$MineDataModelToJson(this); | |||||
{this.accumulatedEarningsNameColor, | |||||
this.accumulatedEarningsColor, | |||||
this.accumulatedEarningsBgImg, | |||||
this.btnText, | |||||
this.btnTextColor, | |||||
this.btnImg, | |||||
this.requiredLogin, | |||||
this.requiredTaobaoAuth, | |||||
this.skipIdentifier, | |||||
this.gridViewBgColor, | |||||
this.gridViewNameColor, | |||||
this.gridViewValueColor, | |||||
this.gridView}); | |||||
MineDataModel.fromJson(Map<String, dynamic> json) { | |||||
accumulatedEarningsNameColor = json['accumulated_earnings_name_color']; | |||||
accumulatedEarningsColor = json['accumulated_earnings_color']; | |||||
accumulatedEarningsBgImg = json['accumulated_earnings_bg_img']; | |||||
btnText = json['btn_text']; | |||||
btnTextColor = json['btn_text_color']; | |||||
btnImg = json['btn_img']; | |||||
requiredLogin = json['required_login']; | |||||
requiredTaobaoAuth = json['required_taobao_auth']; | |||||
skipIdentifier = json['skip_identifier']; | |||||
gridViewBgColor = json['grid_view_bg_color']; | |||||
gridViewNameColor = json['grid_view_name_color']; | |||||
gridViewValueColor = json['grid_view_value_color']; | |||||
if (json['grid_view'] != null) { | |||||
gridView = new List<MineProfileDataModel>(); | |||||
json['grid_view'].forEach((v) { | |||||
gridView.add(new MineProfileDataModel.fromJson(v)); | |||||
}); | |||||
} | |||||
} | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
data['accumulated_earnings_name_color'] = this.accumulatedEarningsNameColor; | |||||
data['accumulated_earnings_color'] = this.accumulatedEarningsColor; | |||||
data['accumulated_earnings_bg_img'] = this.accumulatedEarningsBgImg; | |||||
data['btn_text'] = this.btnText; | |||||
data['btn_text_color'] = this.btnTextColor; | |||||
data['btn_img'] = this.btnImg; | |||||
data['required_login'] = this.requiredLogin; | |||||
data['required_taobao_auth'] = this.requiredTaobaoAuth; | |||||
data['skip_identifier'] = this.skipIdentifier; | |||||
data['grid_view_bg_color'] = this.gridViewBgColor; | |||||
data['grid_view_name_color'] = this.gridViewNameColor; | |||||
data['grid_view_value_color'] = this.gridViewValueColor; | |||||
if (this.gridView != null) { | |||||
data['grid_view'] = this.gridView.map((v) => v.toJson()).toList(); | |||||
} | |||||
return data; | |||||
} | |||||
} | } |
@@ -64,7 +64,7 @@ class _MineHeaderContainerState extends State<MineHeaderContainer> { | |||||
), | ), | ||||
), | ), | ||||
onTap: () async { | onTap: () async { | ||||
await RouterUtil.route(widget.json, context); | |||||
await RouterUtil.route(SkipModel.fromJson(widget.json), widget.json, context); | |||||
_bloc.loadData(); | _bloc.loadData(); | ||||
}, | }, | ||||
), | ), | ||||
@@ -35,11 +35,11 @@ class _MineStaticContainerState extends State<MineStaticContainer> { | |||||
child: ClipRRect( | child: ClipRRect( | ||||
borderRadius: BorderRadius.circular(28), | borderRadius: BorderRadius.circular(28), | ||||
child: CachedNetworkImage( | child: CachedNetworkImage( | ||||
imageUrl: widget.staticModel.defaultAvatar, | |||||
imageUrl: widget.staticModel.nonLoginAvatar, | |||||
fit: BoxFit.cover)), | fit: BoxFit.cover)), | ||||
), | ), | ||||
onTap: () { | onTap: () { | ||||
RouterUtil.route(widget.json, context); | |||||
// RouterUtil.route(SkipModel.fromJson(widget.json), widget.json, context); | |||||
}, | }, | ||||
), | ), | ||||
Expanded( | Expanded( | ||||
@@ -1,64 +1,65 @@ | |||||
import 'package:json_annotation/json_annotation.dart'; | |||||
part 'mine_header_model.g.dart'; | |||||
@JsonSerializable() | |||||
class MineHeaderModel extends Object { | |||||
@JsonKey(name: 'lv_bg_color') | |||||
class MineHeaderModel { | |||||
String lvBgColor; | String lvBgColor; | ||||
@JsonKey(name: 'lv_name_color') | |||||
String lvNameColor; | String lvNameColor; | ||||
@JsonKey(name: 'non_login_avatar') | |||||
String defaultAvatar; | |||||
@JsonKey(name: 'user_name_color') | |||||
String nonLoginAvatar; | |||||
String userNameColor; | String userNameColor; | ||||
@JsonKey(name: 'invited_code_text') | |||||
String invitedCodeText; | String invitedCodeText; | ||||
@JsonKey(name: 'invited_code_color') | |||||
String invitedCodeColor; | String invitedCodeColor; | ||||
@JsonKey(name: 'login_color') | |||||
String loginColor; | String loginColor; | ||||
@JsonKey(name: 'login_name') | |||||
String loginName; | String loginName; | ||||
@JsonKey(name: 'login_name_help_text') | |||||
String loginNameHelpText; | String loginNameHelpText; | ||||
@JsonKey(name: 'coype_icon') | |||||
String coypeIcon; | String coypeIcon; | ||||
@JsonKey(name: 'required_login') | |||||
String requiredLogin; | String requiredLogin; | ||||
@JsonKey(name: 'required_taobao_auth') | |||||
String requiredTaobaoAuth; | String requiredTaobaoAuth; | ||||
@JsonKey(name: 'skip_identifier') | |||||
String skipIdentifier; | String skipIdentifier; | ||||
MineHeaderModel( | MineHeaderModel( | ||||
this.defaultAvatar, | |||||
this.userNameColor, | |||||
this.invitedCodeText, | |||||
this.invitedCodeColor, | |||||
this.loginColor, | |||||
this.loginName, | |||||
this.loginNameHelpText, | |||||
this.coypeIcon, | |||||
this.requiredLogin, | |||||
this.requiredTaobaoAuth, | |||||
this.skipIdentifier, | |||||
); | |||||
factory MineHeaderModel.fromJson(Map<String, dynamic> srcJson) => | |||||
_$MineHeaderModelFromJson(srcJson); | |||||
Map<String, dynamic> toJson() => _$MineHeaderModelToJson(this); | |||||
{this.lvBgColor, | |||||
this.lvNameColor, | |||||
this.nonLoginAvatar, | |||||
this.userNameColor, | |||||
this.invitedCodeText, | |||||
this.invitedCodeColor, | |||||
this.loginColor, | |||||
this.loginName, | |||||
this.loginNameHelpText, | |||||
this.coypeIcon, | |||||
this.requiredLogin, | |||||
this.requiredTaobaoAuth, | |||||
this.skipIdentifier}); | |||||
MineHeaderModel.fromJson(Map<String, dynamic> json) { | |||||
lvBgColor = json['lv_bg_color']; | |||||
lvNameColor = json['lv_name_color']; | |||||
nonLoginAvatar = json['non_login_avatar']; | |||||
userNameColor = json['user_name_color']; | |||||
invitedCodeText = json['invited_code_text']; | |||||
invitedCodeColor = json['invited_code_color']; | |||||
loginColor = json['login_color']; | |||||
loginName = json['login_name']; | |||||
loginNameHelpText = json['login_name_help_text']; | |||||
coypeIcon = json['coype_icon']; | |||||
requiredLogin = json['required_login']; | |||||
requiredTaobaoAuth = json['required_taobao_auth']; | |||||
skipIdentifier = json['skip_identifier']; | |||||
} | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
data['lv_bg_color'] = this.lvBgColor; | |||||
data['lv_name_color'] = this.lvNameColor; | |||||
data['non_login_avatar'] = this.nonLoginAvatar; | |||||
data['user_name_color'] = this.userNameColor; | |||||
data['invited_code_text'] = this.invitedCodeText; | |||||
data['invited_code_color'] = this.invitedCodeColor; | |||||
data['login_color'] = this.loginColor; | |||||
data['login_name'] = this.loginName; | |||||
data['login_name_help_text'] = this.loginNameHelpText; | |||||
data['coype_icon'] = this.coypeIcon; | |||||
data['required_login'] = this.requiredLogin; | |||||
data['required_taobao_auth'] = this.requiredTaobaoAuth; | |||||
data['skip_identifier'] = this.skipIdentifier; | |||||
return data; | |||||
} | |||||
} | } | ||||
@@ -1,57 +1,68 @@ | |||||
import 'package:json_annotation/json_annotation.dart'; | |||||
part 'mine_profile_model.g.dart'; | |||||
@JsonSerializable() | |||||
class MineProfileModel extends Object { | |||||
@JsonKey(name: 'username') | |||||
class MineProfileModel { | |||||
String username; | String username; | ||||
@JsonKey(name: 'avatar') | |||||
String avatar; | String avatar; | ||||
@JsonKey(name: 'InviteCode') | |||||
String inviteCode; | String inviteCode; | ||||
@JsonKey(name: 'user_lv_name') | |||||
String userLvName; | String userLvName; | ||||
@JsonKey(name: 'user_lv_icon') | |||||
String userLvIcon; | String userLvIcon; | ||||
@JsonKey(name: 'total') | |||||
String total; | String total; | ||||
@JsonKey(name: 'grid_views') | |||||
List<MineProfileDataModel> datas; | |||||
MineProfileModel(this.username, | |||||
this.avatar, | |||||
this.inviteCode, | |||||
this.userLvName, | |||||
this.userLvIcon, | |||||
this.total, | |||||
this.datas,); | |||||
factory MineProfileModel.fromJson(Map<String, dynamic> srcJson) => | |||||
_$MineProfileModelFromJson(srcJson); | |||||
Map<String, dynamic> toJson() => _$MineProfileModelToJson(this); | |||||
List<MineProfileDataModel> gridViews; | |||||
MineProfileModel( | |||||
{this.username, | |||||
this.avatar, | |||||
this.inviteCode, | |||||
this.userLvName, | |||||
this.userLvIcon, | |||||
this.total, | |||||
this.gridViews}); | |||||
MineProfileModel.fromJson(Map<String, dynamic> json) { | |||||
username = json['username']; | |||||
avatar = json['avatar']; | |||||
inviteCode = json['InviteCode']; | |||||
userLvName = json['user_lv_name']; | |||||
userLvIcon = json['user_lv_icon']; | |||||
total = json['total']; | |||||
if (json['grid_views'] != null) { | |||||
gridViews = new List<MineProfileDataModel>(); | |||||
json['grid_views'].forEach((v) { | |||||
gridViews.add(new MineProfileDataModel.fromJson(v)); | |||||
}); | |||||
} | |||||
} | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
data['username'] = this.username; | |||||
data['avatar'] = this.avatar; | |||||
data['InviteCode'] = this.inviteCode; | |||||
data['user_lv_name'] = this.userLvName; | |||||
data['user_lv_icon'] = this.userLvIcon; | |||||
data['total'] = this.total; | |||||
if (this.gridViews != null) { | |||||
data['grid_views'] = this.gridViews.map((v) => v.toJson()).toList(); | |||||
} | |||||
return data; | |||||
} | |||||
} | } | ||||
@JsonSerializable() | |||||
class MineProfileDataModel extends Object { | |||||
@JsonKey(name: 'name') | |||||
String name; | |||||
@JsonKey(name: 'value') | |||||
class MineProfileDataModel { | |||||
String name; | |||||
String value; | String value; | ||||
MineProfileDataModel(this.name, | |||||
this.value,); | |||||
MineProfileDataModel({this.name, this.value}); | |||||
factory MineProfileDataModel.fromJson(Map<String, dynamic> srcJson) => | |||||
_$MineProfileDataModelFromJson(srcJson); | |||||
MineProfileDataModel.fromJson(Map<String, dynamic> json) { | |||||
name = json['name']; | |||||
value = json['value']; | |||||
} | |||||
Map<String, dynamic> toJson() => _$MineProfileDataModelToJson(this); | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
data['name'] = this.name; | |||||
data['value'] = this.value; | |||||
return data; | |||||
} | |||||
} | } | ||||
@@ -26,7 +26,7 @@ class MineNavDelegate extends SliverPersistentHeaderDelegate { | |||||
List icons = json['app_bar_icons']; | List icons = json['app_bar_icons']; | ||||
_icons = icons.map((icon) { | _icons = icons.map((icon) { | ||||
SkipModel model = SkipModel.fromJson(Map<String, dynamic>.from(icon)); | SkipModel model = SkipModel.fromJson(Map<String, dynamic>.from(icon)); | ||||
return MineNavIcon(model, json); | |||||
return MineNavIcon(icon['icon'], model); | |||||
}).toList(); | }).toList(); | ||||
} | } | ||||
} | } | ||||
@@ -78,26 +78,24 @@ class MineNav extends StatelessWidget { | |||||
} | } | ||||
class MineNavIcon extends StatelessWidget { | class MineNavIcon extends StatelessWidget { | ||||
final SkipModel model; | |||||
final Map<String, dynamic> data; | |||||
final String imgUrl; | |||||
final SkipModel skipModel; | |||||
const MineNavIcon(this.model, this.data, {Key key}) : super(key: key); | |||||
const MineNavIcon(this.imgUrl, this.skipModel, {Key key}) : super(key: key); | |||||
@override | @override | ||||
Widget build(BuildContext context) { | Widget build(BuildContext context) { | ||||
return GestureDetector( | |||||
child: Container( | |||||
width: 24, | |||||
height: 24, | |||||
margin: EdgeInsets.only(left: 6), | |||||
child: CachedNetworkImage( | |||||
imageUrl: model.icon, | |||||
), | |||||
return GestureDetector(child: Container( | |||||
width: 24, | |||||
height: 24, | |||||
margin: EdgeInsets.only(left: 6), | |||||
child: CachedNetworkImage( | |||||
imageUrl: imgUrl, | |||||
), | ), | ||||
onTap: () { | |||||
print('页面跳转 ${model.skipIdentifier}'); | |||||
RouterUtil.route(model.toJson(), context); | |||||
}, | |||||
); | |||||
), | |||||
onTap:() { | |||||
RouterUtil.route(skipModel, null, context); | |||||
}); | |||||
} | } | ||||
} | } |
@@ -20,7 +20,7 @@ class MineQuickEntry extends StatelessWidget { | |||||
Widget build(BuildContext context) { | Widget build(BuildContext context) { | ||||
int column = int.tryParse(model.layout) ?? 4; | int column = int.tryParse(model.layout) ?? 4; | ||||
return (model?.items?.length ?? 0) <= 0 | |||||
return (model?.functionsList?.length ?? 0) <= 0 | |||||
? Container() | ? Container() | ||||
: Container( | : Container( | ||||
margin: EdgeInsets.only( | margin: EdgeInsets.only( | ||||
@@ -32,17 +32,17 @@ class MineQuickEntry extends StatelessWidget { | |||||
width: double.infinity, | width: double.infinity, | ||||
decoration: BoxDecoration( | decoration: BoxDecoration( | ||||
borderRadius: BorderRadius.circular(7.5), | borderRadius: BorderRadius.circular(7.5), | ||||
color: HexColor.fromHex(model.myFunctionsBgColor)), | |||||
color: HexColor.fromHex(model.functionsBgColor)), | |||||
child: Column( | child: Column( | ||||
crossAxisAlignment: CrossAxisAlignment.start, | crossAxisAlignment: CrossAxisAlignment.start, | ||||
children: <Widget>[ | children: <Widget>[ | ||||
(model?.title ?? '') == '' | |||||
(model?.myFunctionsText ?? '') == '' | |||||
? Container() | ? Container() | ||||
: Container( | : Container( | ||||
margin: | margin: | ||||
EdgeInsets.only(left: 12.5, right: 12.5, top: 12.5), | EdgeInsets.only(left: 12.5, right: 12.5, top: 12.5), | ||||
child: Text( | child: Text( | ||||
model.title, | |||||
model.myFunctionsText, | |||||
style: TextStyle( | style: TextStyle( | ||||
fontSize: 15, fontWeight: FontWeight.w500), | fontSize: 15, fontWeight: FontWeight.w500), | ||||
), | ), | ||||
@@ -56,7 +56,7 @@ class MineQuickEntry extends StatelessWidget { | |||||
mainAxisSpacing: 1, | mainAxisSpacing: 1, | ||||
childAspectRatio: 1, | childAspectRatio: 1, | ||||
), | ), | ||||
itemCount: model?.items?.length ?? 0, | |||||
itemCount: model?.functionsList?.length ?? 0, | |||||
itemBuilder: (BuildContext context, int index) { | itemBuilder: (BuildContext context, int index) { | ||||
return GestureDetector( | return GestureDetector( | ||||
child: Container( | child: Container( | ||||
@@ -69,12 +69,12 @@ class MineQuickEntry extends StatelessWidget { | |||||
height: 36, | height: 36, | ||||
margin: EdgeInsets.only(bottom: 4), | margin: EdgeInsets.only(bottom: 4), | ||||
child: CachedNetworkImage( | child: CachedNetworkImage( | ||||
imageUrl: model.items[index].icon, | |||||
imageUrl: model.functionsList[index].icon, | |||||
fit: BoxFit.cover, | fit: BoxFit.cover, | ||||
), | ), | ||||
), | ), | ||||
Text( | Text( | ||||
model.items[index].name, | |||||
model.functionsList[index].name, | |||||
style: TextStyle( | style: TextStyle( | ||||
color: HexColor.fromHex('#333333'), | color: HexColor.fromHex('#333333'), | ||||
fontSize: 11), | fontSize: 11), | ||||
@@ -84,7 +84,7 @@ class MineQuickEntry extends StatelessWidget { | |||||
), | ), | ||||
), | ), | ||||
onTap: () { | onTap: () { | ||||
RouterUtil.route(model.items[index].toJson(), context); | |||||
// RouterUtil.route(model.items[index].toJson(), context); | |||||
}, | }, | ||||
); | ); | ||||
}, | }, | ||||
@@ -1,68 +1,78 @@ | |||||
import 'package:json_annotation/json_annotation.dart'; | |||||
part 'mine_quick_model.g.dart'; | |||||
@JsonSerializable() | |||||
class MineQuickModel extends Object { | |||||
@JsonKey(name: 'my_functions_text') | |||||
String title; | |||||
@JsonKey(name: 'my_functions_text_color') | |||||
String titleColor; | |||||
@JsonKey(name: 'layout') | |||||
class MineQuickModel { | |||||
String myFunctionsText; | |||||
String myFunctionsTextColor; | |||||
String layout; | String layout; | ||||
@JsonKey(name: 'functions_bg_color') | |||||
String myFunctionsBgColor; | |||||
@JsonKey(name: 'functions_list') | |||||
List<MineQuickItemModel> items; | |||||
String functionsBgColor; | |||||
List<MineQuickItemModel> functionsList; | |||||
MineQuickModel( | MineQuickModel( | ||||
this.title, | |||||
this.titleColor, | |||||
this.layout, | |||||
this.myFunctionsBgColor, | |||||
this.items, | |||||
); | |||||
factory MineQuickModel.fromJson(Map<String, dynamic> srcJson) => | |||||
_$MineQuickModelFromJson(srcJson); | |||||
Map<String, dynamic> toJson() => _$MineQuickModelToJson(this); | |||||
{this.myFunctionsText, | |||||
this.myFunctionsTextColor, | |||||
this.layout, | |||||
this.functionsBgColor, | |||||
this.functionsList}); | |||||
MineQuickModel.fromJson(Map<String, dynamic> json) { | |||||
myFunctionsText = json['my_functions_text']; | |||||
myFunctionsTextColor = json['my_functions_text_color']; | |||||
layout = json['layout']; | |||||
functionsBgColor = json['functions_bg_color']; | |||||
if (json['functions_list'] != null) { | |||||
functionsList = new List<MineQuickItemModel>(); | |||||
json['functions_list'].forEach((v) { | |||||
functionsList.add(new MineQuickItemModel.fromJson(v)); | |||||
}); | |||||
} | |||||
} | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
data['my_functions_text'] = this.myFunctionsText; | |||||
data['my_functions_text_color'] = this.myFunctionsTextColor; | |||||
data['layout'] = this.layout; | |||||
data['functions_bg_color'] = this.functionsBgColor; | |||||
if (this.functionsList != null) { | |||||
data['functions_list'] = | |||||
this.functionsList.map((v) => v.toJson()).toList(); | |||||
} | |||||
return data; | |||||
} | |||||
} | } | ||||
@JsonSerializable() | |||||
class MineQuickItemModel extends Object { | |||||
@JsonKey(name: 'name') | |||||
String name; | |||||
@JsonKey(name: 'name_color') | |||||
String nameColor; | |||||
@JsonKey(name: 'icon') | |||||
class MineQuickItemModel { | |||||
String icon; | String icon; | ||||
@JsonKey(name: 'required_login') | |||||
String name; | |||||
String nameColor; | |||||
String requiredLogin; | String requiredLogin; | ||||
@JsonKey(name: 'required_taobao_auth') | |||||
String requiredTaobaoAuth; | String requiredTaobaoAuth; | ||||
@JsonKey(name: 'skip_identifier') | |||||
String skipIdentifier; | String skipIdentifier; | ||||
MineQuickItemModel( | MineQuickItemModel( | ||||
this.name, | |||||
this.icon, | |||||
this.requiredLogin, | |||||
this.requiredTaobaoAuth, | |||||
this.skipIdentifier, | |||||
); | |||||
factory MineQuickItemModel.fromJson(Map<String, dynamic> srcJson) => | |||||
_$MineQuickItemModelFromJson(srcJson); | |||||
Map<String, dynamic> toJson() => _$MineQuickItemModelToJson(this); | |||||
{this.icon, | |||||
this.name, | |||||
this.nameColor, | |||||
this.requiredLogin, | |||||
this.requiredTaobaoAuth, | |||||
this.skipIdentifier}); | |||||
MineQuickItemModel.fromJson(Map<String, dynamic> json) { | |||||
icon = json['icon']; | |||||
name = json['name']; | |||||
nameColor = json['name_color']; | |||||
requiredLogin = json['required_login']; | |||||
requiredTaobaoAuth = json['required_taobao_auth']; | |||||
skipIdentifier = json['skip_identifier']; | |||||
} | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
data['icon'] = this.icon; | |||||
data['name'] = this.name; | |||||
data['name_color'] = this.nameColor; | |||||
data['required_login'] = this.requiredLogin; | |||||
data['required_taobao_auth'] = this.requiredTaobaoAuth; | |||||
data['skip_identifier'] = this.skipIdentifier; | |||||
return data; | |||||
} | |||||
} | } |
@@ -29,10 +29,6 @@ dev_dependencies: | |||||
zhiying_comm: | zhiying_comm: | ||||
path: ../zhiying_comm | path: ../zhiying_comm | ||||
json_serializable: ^3.3.0 | |||||
build_runner: ^1.10.0 | |||||
# For information on the generic Dart part of this file, see the | # For information on the generic Dart part of this file, see the | ||||
# following page: https://dart.dev/tools/pub/pubspec | # following page: https://dart.dev/tools/pub/pubspec | ||||