@@ -63,13 +63,13 @@ | |||||
}, | }, | ||||
{ | { | ||||
"name": "connectivity_for_web", | "name": "connectivity_for_web", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/connectivity_for_web-0.3.1+2", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/connectivity_for_web-0.3.1+4", | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.6" | "languageVersion": "2.6" | ||||
}, | }, | ||||
{ | { | ||||
"name": "connectivity_macos", | "name": "connectivity_macos", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/connectivity_macos-0.1.0+5", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/connectivity_macos-0.1.0+7", | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
@@ -93,7 +93,7 @@ | |||||
}, | }, | ||||
{ | { | ||||
"name": "device_info", | "name": "device_info", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/device_info-0.4.2+9", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/device_info-0.4.2+10", | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
@@ -141,7 +141,7 @@ | |||||
}, | }, | ||||
{ | { | ||||
"name": "flutter_alibc", | "name": "flutter_alibc", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/git/zhiying_flutter_alibc-6e02aaf22b9798f4b01554a9153d2c66591da8c1/", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/git/zhiying_flutter_alibc-ba413f84090cd58b8b769ca43ff3ef65a0e53274/", | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
@@ -187,6 +187,12 @@ | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.6" | "languageVersion": "2.6" | ||||
}, | }, | ||||
{ | |||||
"name": "flutter_slidable", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/flutter_slidable-0.5.7", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "1.19" | |||||
}, | |||||
{ | { | ||||
"name": "flutter_swiper", | "name": "flutter_swiper", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/flutter_swiper-1.1.6", | "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/flutter_swiper-1.1.6", | ||||
@@ -199,12 +205,24 @@ | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.2" | "languageVersion": "2.2" | ||||
}, | }, | ||||
{ | |||||
"name": "flutter_update_dialog", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/flutter_update_dialog-1.0.0", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.7" | |||||
}, | |||||
{ | { | ||||
"name": "flutter_web_plugins", | "name": "flutter_web_plugins", | ||||
"rootUri": "file:///Users/fnuser/Documents/flutter-sdk/packages/flutter_web_plugins", | "rootUri": "file:///Users/fnuser/Documents/flutter-sdk/packages/flutter_web_plugins", | ||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.0" | "languageVersion": "2.0" | ||||
}, | }, | ||||
{ | |||||
"name": "flutter_xupdate", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/git/flutter_xupdate-d17c695461ee4588dec990533d7467c11884cd0f/", | |||||
"packageUri": "lib/", | |||||
"languageVersion": "2.7" | |||||
}, | |||||
{ | { | ||||
"name": "fluttertoast", | "name": "fluttertoast", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/fluttertoast-4.0.1", | "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/fluttertoast-4.0.1", | ||||
@@ -237,7 +255,7 @@ | |||||
}, | }, | ||||
{ | { | ||||
"name": "image_picker", | "name": "image_picker", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/image_picker-0.6.7+12", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/image_picker-0.6.7+14", | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
@@ -285,7 +303,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+2", | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
@@ -297,7 +315,7 @@ | |||||
}, | }, | ||||
{ | { | ||||
"name": "path_provider", | "name": "path_provider", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/path_provider-1.6.22", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/path_provider-1.6.24", | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
@@ -309,19 +327,19 @@ | |||||
}, | }, | ||||
{ | { | ||||
"name": "path_provider_macos", | "name": "path_provider_macos", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/path_provider_macos-0.0.4+4", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/path_provider_macos-0.0.4+6", | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
{ | { | ||||
"name": "path_provider_platform_interface", | "name": "path_provider_platform_interface", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/path_provider_platform_interface-1.0.3", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/path_provider_platform_interface-1.0.4", | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
{ | { | ||||
"name": "path_provider_windows", | "name": "path_provider_windows", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/path_provider_windows-0.0.4+1", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/path_provider_windows-0.0.4+3", | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
@@ -405,19 +423,19 @@ | |||||
}, | }, | ||||
{ | { | ||||
"name": "shared_preferences", | "name": "shared_preferences", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences-0.5.12+2", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences-0.5.12+4", | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
{ | { | ||||
"name": "shared_preferences_linux", | "name": "shared_preferences_linux", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences_linux-0.0.2+2", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences_linux-0.0.2+4", | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
{ | { | ||||
"name": "shared_preferences_macos", | "name": "shared_preferences_macos", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences_macos-0.0.1+10", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences_macos-0.0.1+11", | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
@@ -435,7 +453,7 @@ | |||||
}, | }, | ||||
{ | { | ||||
"name": "shared_preferences_windows", | "name": "shared_preferences_windows", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences_windows-0.0.1+1", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shared_preferences_windows-0.0.1+3", | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
@@ -543,13 +561,13 @@ | |||||
}, | }, | ||||
{ | { | ||||
"name": "url_launcher_linux", | "name": "url_launcher_linux", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher_linux-0.0.1+3", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher_linux-0.0.1+4", | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
{ | { | ||||
"name": "url_launcher_macos", | "name": "url_launcher_macos", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher_macos-0.0.1+8", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher_macos-0.0.1+9", | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
@@ -567,7 +585,7 @@ | |||||
}, | }, | ||||
{ | { | ||||
"name": "url_launcher_windows", | "name": "url_launcher_windows", | ||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher_windows-0.0.1+1", | |||||
"rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher_windows-0.0.1+3", | |||||
"packageUri": "lib/", | "packageUri": "lib/", | ||||
"languageVersion": "2.1" | "languageVersion": "2.1" | ||||
}, | }, | ||||
@@ -620,7 +638,7 @@ | |||||
"languageVersion": "2.8" | "languageVersion": "2.8" | ||||
} | } | ||||
], | ], | ||||
"generated": "2020-11-02T09:37:11.598457Z", | |||||
"generated": "2020-11-11T02:35:44.319396Z", | |||||
"generator": "pub", | "generator": "pub", | ||||
"generatorVersion": "2.8.2" | "generatorVersion": "2.8.2" | ||||
} | } |
@@ -28,6 +28,8 @@ PODS: | |||||
- Flutter | - Flutter | ||||
- flutter_plugin_android_lifecycle (0.0.1): | - flutter_plugin_android_lifecycle (0.0.1): | ||||
- Flutter | - Flutter | ||||
- flutter_xupdate (0.0.1): | |||||
- Flutter | |||||
- fluttertoast (0.0.2): | - fluttertoast (0.0.2): | ||||
- Flutter | - Flutter | ||||
- FMDB (2.7.5): | - FMDB (2.7.5): | ||||
@@ -178,6 +180,7 @@ DEPENDENCIES: | |||||
- flutter_alibc (from `.symlinks/plugins/flutter_alibc/ios`) | - flutter_alibc (from `.symlinks/plugins/flutter_alibc/ios`) | ||||
- flutter_native_image (from `.symlinks/plugins/flutter_native_image/ios`) | - flutter_native_image (from `.symlinks/plugins/flutter_native_image/ios`) | ||||
- flutter_plugin_android_lifecycle (from `.symlinks/plugins/flutter_plugin_android_lifecycle/ios`) | - flutter_plugin_android_lifecycle (from `.symlinks/plugins/flutter_plugin_android_lifecycle/ios`) | ||||
- flutter_xupdate (from `.symlinks/plugins/flutter_xupdate/ios`) | |||||
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`) | - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`) | ||||
- image_cropper (from `.symlinks/plugins/image_cropper/ios`) | - image_cropper (from `.symlinks/plugins/image_cropper/ios`) | ||||
- image_picker (from `.symlinks/plugins/image_picker/ios`) | - image_picker (from `.symlinks/plugins/image_picker/ios`) | ||||
@@ -240,6 +243,8 @@ EXTERNAL SOURCES: | |||||
:path: ".symlinks/plugins/flutter_native_image/ios" | :path: ".symlinks/plugins/flutter_native_image/ios" | ||||
flutter_plugin_android_lifecycle: | flutter_plugin_android_lifecycle: | ||||
:path: ".symlinks/plugins/flutter_plugin_android_lifecycle/ios" | :path: ".symlinks/plugins/flutter_plugin_android_lifecycle/ios" | ||||
flutter_xupdate: | |||||
:path: ".symlinks/plugins/flutter_xupdate/ios" | |||||
fluttertoast: | fluttertoast: | ||||
:path: ".symlinks/plugins/fluttertoast/ios" | :path: ".symlinks/plugins/fluttertoast/ios" | ||||
image_cropper: | image_cropper: | ||||
@@ -308,6 +313,7 @@ SPEC CHECKSUMS: | |||||
flutter_alibc: 0e2a29e7c1de759672d87a260051240d209964b9 | flutter_alibc: 0e2a29e7c1de759672d87a260051240d209964b9 | ||||
flutter_native_image: 9c0b7451838484458e5b0fae007b86a4c2d4bdfe | flutter_native_image: 9c0b7451838484458e5b0fae007b86a4c2d4bdfe | ||||
flutter_plugin_android_lifecycle: dc0b544e129eebb77a6bfb1239d4d1c673a60a35 | flutter_plugin_android_lifecycle: dc0b544e129eebb77a6bfb1239d4d1c673a60a35 | ||||
flutter_xupdate: bdb588f0fe4f6c5e45436b8b0de08d505a50c04e | |||||
fluttertoast: b644586ef3b16f67fae9a1f8754cef6b2d6b634b | fluttertoast: b644586ef3b16f67fae9a1f8754cef6b2d6b634b | ||||
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a | FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a | ||||
image_cropper: 3c16d7651730ffe85897f5a1c4e2547e6b54989a | image_cropper: 3c16d7651730ffe85897f5a1c4e2547e6b54989a | ||||
@@ -26,42 +26,56 @@ class GoodsShareBloc extends BlocBase { | |||||
} | } | ||||
void loadData(String shopType, Map<String, dynamic> params) async { | void loadData(String shopType, Map<String, dynamic> params) async { | ||||
var json = await NetUtil.post('/api/v1/share/${shopType}', params: params); | |||||
Map<String, dynamic> data = json['data']; | |||||
List shareTemp = data['data_list']; | |||||
_data.datas = shareTemp.map((item) { | |||||
return GoodsShareTempDataModel.fromJson(Map<String, dynamic>.from(item)); | |||||
}).toList(); | |||||
await loadPoster(params); | |||||
await loadMod(shopType); | |||||
await loadInfo(shopType, params); | |||||
_tabController.add(_data); | |||||
} | |||||
Future loadPoster(Map<String, dynamic> params) async { | |||||
_data.poster = await _loadPoster(params); | _data.poster = await _loadPoster(params); | ||||
} | |||||
NetUtil.request( | |||||
'/api/v1/mod/pub.flutter.share?share_type=${shopType.toString()}', | |||||
method: NetMethod.GET, | |||||
onCache: (data) { | |||||
_loadData(data); | |||||
}, | |||||
onSuccess: (data) { | |||||
_loadData(data); | |||||
}, | |||||
); | |||||
Future loadMod(String shopType) async { | |||||
var data = await NetUtil.post( | |||||
'/api/v1/tmp/mod/pub.flutter.share?type=${shopType.toString()}', | |||||
method: NetMethod.GET); | |||||
_loadMod(data['data']); | |||||
} | } | ||||
void _loadData(dynamic data) { | |||||
void _loadMod(dynamic data) { | |||||
try { | try { | ||||
List list = Map<String, dynamic>.from(data)['mod_list']; | List list = Map<String, dynamic>.from(data)['mod_list']; | ||||
_data.tabs = list.map((item) { | |||||
return Map<String, dynamic>.from(item); | |||||
}).toList(); | |||||
_tabController.add(_data); | |||||
for (dynamic model in list) { | |||||
Map d = Map<String, dynamic>.from(model); | |||||
if (d.containsKey('tab_view')) { | |||||
List tabs = d['tab_view']; | |||||
_data.tabs = tabs.map((item) { | |||||
return Map<String, dynamic>.from(item); | |||||
}).toList(); | |||||
} | |||||
} | |||||
} catch (err) { | } catch (err) { | ||||
Logger.error(err); | Logger.error(err); | ||||
} | } | ||||
} | } | ||||
Future loadInfo(String shopType, Map<String, dynamic> params) async { | |||||
_data.datas = List(); | |||||
for (Map<String, dynamic> item in _data.tabs) { | |||||
String url = item['url']; | |||||
Logger.debug(url); | |||||
var json = await NetUtil.post('/api/v1/share?type=${url.toString()}', | |||||
params: params); | |||||
Map<String, dynamic> data = json['data']; | |||||
_data.datas.add( | |||||
GoodsShareTempDataModel.fromJson(Map<String, dynamic>.from(data))); | |||||
} | |||||
} | |||||
// 请求分享海报 | // 请求分享海报 | ||||
Future<GoodsSharePosterModel> _loadPoster(Map<String, dynamic> params) async { | Future<GoodsSharePosterModel> _loadPoster(Map<String, dynamic> params) async { | ||||
var json = await NetUtil.post('/api/v1/share/poster', params: params); | |||||
var json = await NetUtil.post('/api/v1/share?type=poster', params: params); | |||||
Map<String, dynamic> data = Map<String, dynamic>.from(json['data']); | Map<String, dynamic> data = Map<String, dynamic>.from(json['data']); | ||||
return GoodsSharePosterModel.fromJson(data); | return GoodsSharePosterModel.fromJson(data); | ||||
@@ -8,7 +8,6 @@ import 'package:zhiying_base_widget/pages/goods_share_page/goods_share_editor/go | |||||
import 'package:zhiying_base_widget/pages/goods_share_page/goods_share_image/goods_share_image_model.dart'; | import 'package:zhiying_base_widget/pages/goods_share_page/goods_share_image/goods_share_image_model.dart'; | ||||
import 'package:zhiying_base_widget/pages/goods_share_page/models/goods_share_temp_add_model.dart'; | import 'package:zhiying_base_widget/pages/goods_share_page/models/goods_share_temp_add_model.dart'; | ||||
import 'package:zhiying_base_widget/pages/goods_share_page/widgets/good_share_msg.dart'; | import 'package:zhiying_base_widget/pages/goods_share_page/widgets/good_share_msg.dart'; | ||||
import 'package:zhiying_base_widget/pages/goods_share_page/widgets/goods_share_alert_content.dart'; | |||||
import 'package:zhiying_base_widget/pages/goods_share_page/widgets/goods_share_edit.dart'; | import 'package:zhiying_base_widget/pages/goods_share_page/widgets/goods_share_edit.dart'; | ||||
import 'package:zhiying_base_widget/pages/goods_share_page/widgets/goods_share_item.dart'; | import 'package:zhiying_base_widget/pages/goods_share_page/widgets/goods_share_item.dart'; | ||||
import 'package:zhiying_base_widget/pages/goods_share_page/widgets/goods_share_link_widget.dart'; | import 'package:zhiying_base_widget/pages/goods_share_page/widgets/goods_share_link_widget.dart'; | ||||
@@ -61,17 +60,18 @@ class _GoodsShareLinkState extends State<GoodsShareLink> | |||||
imgCheckSelected: _style.cssList.chooseImage, | imgCheckSelected: _style.cssList.chooseImage, | ||||
enabled: false, | enabled: false, | ||||
child: GoodsShareLinkWidget( | child: GoodsShareLinkWidget( | ||||
title: '小米10至尊纪念版5g手机120X变焦骁龙865小米官方旗舰店小米手机', | |||||
desc: '【原价】3999元【券后3989元【用嗨如意再省】19.74元復製(FRH51Lu9hYF', | |||||
imgGoods: '', | |||||
icon: '', | |||||
name: '智莺生活', | |||||
title: widget.datas?.title ?? '', | |||||
desc: widget.datas?.content ?? '', | |||||
imgGoods: widget.datas?.imgUrl ?? '', | |||||
icon: widget.datas?.appLogo ?? '', | |||||
name: widget.datas?.appName ?? '', | |||||
), | ), | ||||
)); | )); | ||||
widgets.add(GoodsShareItem( | widgets.add(GoodsShareItem( | ||||
imgHeader: _style.cssList.headerImage, | imgHeader: _style.cssList.headerImage, | ||||
imgCheck: _style.cssList.unChooseImage, | imgCheck: _style.cssList.unChooseImage, | ||||
imgCheckSelected: _style.cssList.chooseImage, | imgCheckSelected: _style.cssList.chooseImage, | ||||
enabled: false, | |||||
child: GoodsShareEdit( | child: GoodsShareEdit( | ||||
_content, | _content, | ||||
widget.datas, | widget.datas, | ||||
@@ -137,7 +137,7 @@ class _GoodsShareLinkState extends State<GoodsShareLink> | |||||
} | } | ||||
Widget _createBottom() { | Widget _createBottom() { | ||||
Map<String, dynamic> shareImages = _style.cssList.shareLink; | |||||
Map<String, dynamic> shareImages = _style.cssList.shareImage; | |||||
if (shareImages == null) { | if (shareImages == null) { | ||||
return Container(); | return Container(); | ||||
} | } | ||||
@@ -195,8 +195,8 @@ class _GoodsShareLinkState extends State<GoodsShareLink> | |||||
context: context, | context: context, | ||||
builder: (context) => ShareAlert( | builder: (context) => ShareAlert( | ||||
_shareModel, | _shareModel, | ||||
'', | |||||
child: GoodsShareAlertContent(), | |||||
'pub.flutter.share_icon', | |||||
// child: GoodsShareAlertContent(), | |||||
), | ), | ||||
); | ); | ||||
} | } | ||||
@@ -1,7 +1,12 @@ | |||||
import 'dart:convert' as convert; | |||||
import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
import 'package:zhiying_base_widget/pages/goods_share_page/goods_share_image/goods_share_image_model.dart'; | |||||
import 'package:zhiying_base_widget/pages/goods_share_page/models/goods_share_temp_add_model.dart'; | import 'package:zhiying_base_widget/pages/goods_share_page/models/goods_share_temp_add_model.dart'; | ||||
import 'package:zhiying_base_widget/pages/goods_share_page/widgets/goods_share_item.dart'; | import 'package:zhiying_base_widget/pages/goods_share_page/widgets/goods_share_item.dart'; | ||||
import 'package:zhiying_base_widget/pages/goods_share_page/widgets/goods_share_miniprogram_widget.dart'; | import 'package:zhiying_base_widget/pages/goods_share_page/widgets/goods_share_miniprogram_widget.dart'; | ||||
import 'package:zhiying_base_widget/widgets/public/custom_button/custom_bottom.dart'; | |||||
import 'package:zhiying_base_widget/widgets/public/custom_button/custom_button_model.dart'; | |||||
class GoodsShareMiniprogram extends StatefulWidget { | class GoodsShareMiniprogram extends StatefulWidget { | ||||
final Map<String, dynamic> model; | final Map<String, dynamic> model; | ||||
@@ -17,32 +22,89 @@ class GoodsShareMiniprogram extends StatefulWidget { | |||||
class _GoodsShareMiniprogramState extends State<GoodsShareMiniprogram> | class _GoodsShareMiniprogramState extends State<GoodsShareMiniprogram> | ||||
with AutomaticKeepAliveClientMixin { | with AutomaticKeepAliveClientMixin { | ||||
@override | |||||
GoodsShareImageModel _style; | |||||
Map<int, String> _images = Map(); | |||||
List<Widget> widgets = List(); | |||||
// 切换Tab导航栏保持页面状态 | // 切换Tab导航栏保持页面状态 | ||||
bool get wantKeepAlive => true; | bool get wantKeepAlive => true; | ||||
@override | |||||
void initState() { | |||||
String data = widget.model['data']; | |||||
var d = convert.jsonDecode(data); | |||||
_style = GoodsShareImageModel.fromJson(Map<String, dynamic>.from(d)); | |||||
super.initState(); | |||||
} | |||||
@override | @override | ||||
Widget build(BuildContext context) { | Widget build(BuildContext context) { | ||||
return Container( | |||||
margin: EdgeInsets.only(bottom: 4), | |||||
padding: EdgeInsets.only(top: 10), | |||||
decoration: BoxDecoration( | |||||
color: Colors.white, | |||||
borderRadius: BorderRadius.only( | |||||
bottomLeft: Radius.circular(8), bottomRight: Radius.circular(8))), | |||||
child: SingleChildScrollView( | |||||
child: Column( | |||||
crossAxisAlignment: CrossAxisAlignment.start, | |||||
mainAxisAlignment: MainAxisAlignment.start, | |||||
children: <Widget>[ | |||||
GoodsShareItem( | |||||
child: GoodsShareMiniprogramWidget( | |||||
title: '小米10至尊纪念版5g手机120X变焦骁龙865小米官方旗舰店小米手机', | |||||
imgGoods: '', | |||||
icon: '', | |||||
name: '智莺生活', | |||||
return Column( | |||||
children: <Widget>[ | |||||
Expanded( | |||||
child: Container( | |||||
margin: EdgeInsets.only(bottom: 4), | |||||
padding: EdgeInsets.only(top: 10), | |||||
decoration: BoxDecoration( | |||||
color: Colors.white, | |||||
borderRadius: BorderRadius.only( | |||||
bottomLeft: Radius.circular(8), | |||||
bottomRight: Radius.circular(8))), | |||||
child: SingleChildScrollView( | |||||
child: Column( | |||||
crossAxisAlignment: CrossAxisAlignment.start, | |||||
mainAxisAlignment: MainAxisAlignment.start, | |||||
children: <Widget>[ | |||||
GoodsShareItem( | |||||
imgHeader: _style.cssList.headerImage, | |||||
imgCheck: _style.cssList.unChooseImage, | |||||
imgCheckSelected: _style.cssList.chooseImage, | |||||
enabled: false, | |||||
child: GoodsShareMiniprogramWidget( | |||||
title: widget.datas?.miniAppTitle ?? '', | |||||
imgGoods: widget.datas?.imgUrl ?? '', | |||||
icon: widget.datas?.appLogo ?? '', | |||||
name: widget.datas?.appName ?? '', | |||||
), | |||||
), | |||||
], | |||||
), | ), | ||||
), | ), | ||||
), | |||||
), | |||||
_createBottom(), | |||||
], | |||||
); | |||||
} | |||||
Widget _createBottom() { | |||||
Map<String, dynamic> shareImages = _style.cssList.shareImage; | |||||
if (shareImages == null) { | |||||
return Container(); | |||||
} | |||||
// CustomButtonModel btnCopy = CustomButtonModel.fromJson( | |||||
// Map<String, dynamic>.from(shareImages['copy_btn'])); | |||||
CustomButtonModel btnShare = CustomButtonModel.fromJson( | |||||
Map<String, dynamic>.from(shareImages['share_btn'])); | |||||
return SafeArea( | |||||
child: Container( | |||||
margin: EdgeInsets.only(left: 12.5, right: 12.5, top: 4, bottom: 4), | |||||
child: Row( | |||||
mainAxisAlignment: MainAxisAlignment.center, | |||||
children: <Widget>[ | |||||
btnShare == null | |||||
? Container() | |||||
: GestureDetector( | |||||
child: Container( | |||||
margin: EdgeInsets.only(left: 5), | |||||
width: 110, | |||||
height: 36, | |||||
decoration: BoxDecoration( | |||||
borderRadius: BorderRadius.circular(18), | |||||
), | |||||
child: CustomButton(btnShare)), | |||||
onTap: () {}, | |||||
), | |||||
], | ], | ||||
), | ), | ||||
), | ), | ||||
@@ -81,16 +81,16 @@ class _GoodsShareContainerState extends State<_GoodsShareContainer> | |||||
Map<String, dynamic> item = list[i]; | Map<String, dynamic> item = list[i]; | ||||
GoodsShareTempDataModel model = datas[i]; | GoodsShareTempDataModel model = datas[i]; | ||||
_tabs.add(_createTabItem(item['title'])); | _tabs.add(_createTabItem(item['title'])); | ||||
String mod_name = item['mod_name']; | |||||
if (mod_name == 'share_goods_image.taobao') { | |||||
String type = item['url']; | |||||
if (type == 'image') { | |||||
_contents.add(GoodsShareImage( | _contents.add(GoodsShareImage( | ||||
item, | item, | ||||
model, | model, | ||||
poster: data.poster, | poster: data.poster, | ||||
)); | )); | ||||
} else if (mod_name == 'share_goods_link.taobao') { | |||||
} else if (type == 'link') { | |||||
_contents.add(GoodsShareLink(item, model)); | _contents.add(GoodsShareLink(item, model)); | ||||
} else if (mod_name == 'share_goods_mini.taobao') { | |||||
} else if (type == 'mini') { | |||||
_contents.add(GoodsShareMiniprogram(item, model)); | _contents.add(GoodsShareMiniprogram(item, model)); | ||||
} else { | } else { | ||||
_contents.add(Container()); | _contents.add(Container()); | ||||
@@ -99,7 +99,7 @@ class _GoodsShareContainerState extends State<_GoodsShareContainer> | |||||
return Column( | return Column( | ||||
children: <Widget>[ | children: <Widget>[ | ||||
_createCommission(), | |||||
// _createCommission(), | |||||
Expanded(child: SafeArea(child: _createContent())), | Expanded(child: SafeArea(child: _createContent())), | ||||
], | ], | ||||
); | ); | ||||
@@ -9,8 +9,6 @@ class GoodsShareStyleModel { | |||||
String rewardImage; | String rewardImage; | ||||
String rewardText; | String rewardText; | ||||
Map<String, dynamic> shareImage; | Map<String, dynamic> shareImage; | ||||
Map<String, dynamic> shareLink; | |||||
Map<String, dynamic> shareMini; | |||||
GoodsShareTempEditorModel editTemplate; | GoodsShareTempEditorModel editTemplate; | ||||
GoodsShareStyleModel( | GoodsShareStyleModel( | ||||
@@ -33,10 +31,10 @@ class GoodsShareStyleModel { | |||||
rewardImage = json['reward_image']; | rewardImage = json['reward_image']; | ||||
rewardText = json['reward_text']; | rewardText = json['reward_text']; | ||||
shareImage = json['share_image']; | shareImage = json['share_image']; | ||||
shareLink = json['share_link']; | |||||
shareMini = json['share_mini']; | |||||
editTemplate = GoodsShareTempEditorModel.fromJson( | |||||
Map<String, dynamic>.from(json['edit_template'])); | |||||
if (json['edit_template'] != null) { | |||||
editTemplate = GoodsShareTempEditorModel.fromJson( | |||||
Map<String, dynamic>.from(json['edit_template'])); | |||||
} | |||||
} | } | ||||
Map<String, dynamic> toJson() { | Map<String, dynamic> toJson() { | ||||
@@ -49,8 +47,6 @@ class GoodsShareStyleModel { | |||||
data['reward_image'] = this.rewardImage; | data['reward_image'] = this.rewardImage; | ||||
data['reward_text'] = this.rewardText; | data['reward_text'] = this.rewardText; | ||||
data['share_image'] = this.shareImage; | data['share_image'] = this.shareImage; | ||||
data['share_link'] = this.shareLink; | |||||
data['share_mini'] = this.shareMini; | |||||
if (this.editTemplate != null) { | if (this.editTemplate != null) { | ||||
data['edit_template'] = this.editTemplate.toJson(); | data['edit_template'] = this.editTemplate.toJson(); | ||||
} | } | ||||
@@ -3,7 +3,16 @@ class GoodsShareTempDataModel { | |||||
List<GoodsShareTempAddModel> shareTemplate; | List<GoodsShareTempAddModel> shareTemplate; | ||||
String shareTip; | String shareTip; | ||||
String appUrl; | String appUrl; | ||||
String title; | |||||
String content; | |||||
String appName; | |||||
String appLogo; | |||||
String imgUrl; | |||||
String miniAppTitle; | |||||
String miniAppUrl; | String miniAppUrl; | ||||
String miniAppCode; | |||||
String miniAppDesc; | |||||
GoodsShareTempDataModel( | GoodsShareTempDataModel( | ||||
{this.shareContent, | {this.shareContent, | ||||
@@ -13,7 +22,7 @@ class GoodsShareTempDataModel { | |||||
this.miniAppUrl}); | this.miniAppUrl}); | ||||
GoodsShareTempDataModel.fromJson(Map<String, dynamic> json) { | GoodsShareTempDataModel.fromJson(Map<String, dynamic> json) { | ||||
shareContent = json['share_content']; | |||||
shareContent = json['template_content']; | |||||
if (json['share_template'] != null) { | if (json['share_template'] != null) { | ||||
shareTemplate = new List<GoodsShareTempAddModel>(); | shareTemplate = new List<GoodsShareTempAddModel>(); | ||||
json['share_template'].forEach((v) { | json['share_template'].forEach((v) { | ||||
@@ -23,18 +32,38 @@ class GoodsShareTempDataModel { | |||||
shareTip = json['share_tip']; | shareTip = json['share_tip']; | ||||
appUrl = json['app_url']; | appUrl = json['app_url']; | ||||
miniAppUrl = json['mini_app_url']; | miniAppUrl = json['mini_app_url']; | ||||
title = json['title']; | |||||
content = json['content']; | |||||
appName = json['app_name']; | |||||
appLogo = json['app_logo']; | |||||
miniAppTitle = json['mini_app_title']; | |||||
miniAppUrl = json['mini_app_url']; | |||||
miniAppCode = json['mini_app_code']; | |||||
miniAppDesc = json['mini_app_desc']; | |||||
imgUrl = json['image_url']; | |||||
} | } | ||||
Map<String, dynamic> toJson() { | Map<String, dynamic> toJson() { | ||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | final Map<String, dynamic> data = new Map<String, dynamic>(); | ||||
data['share_content'] = this.shareContent; | data['share_content'] = this.shareContent; | ||||
if (this.shareTemplate != null) { | if (this.shareTemplate != null) { | ||||
data['share_template'] = | |||||
data['template_content'] = | |||||
this.shareTemplate.map((v) => v.toJson()).toList(); | this.shareTemplate.map((v) => v.toJson()).toList(); | ||||
} | } | ||||
data['share_tip'] = this.shareTip; | data['share_tip'] = this.shareTip; | ||||
data['app_url'] = this.appUrl; | data['app_url'] = this.appUrl; | ||||
data['mini_app_url'] = this.miniAppUrl; | data['mini_app_url'] = this.miniAppUrl; | ||||
data['title'] = this.title; | |||||
data['content'] = this.content; | |||||
data['app_name'] = this.appName; | |||||
data['app_logo'] = this.appLogo; | |||||
data['image_url'] = this.imgUrl; | |||||
data['mini_app_title'] = this.miniAppTitle; | |||||
data['mini_app_url'] = this.miniAppUrl; | |||||
data['mini_app_code'] = this.miniAppCode; | |||||
data['mini_app_desc'] = this.miniAppDesc; | |||||
return data; | return data; | ||||
} | } | ||||
} | } | ||||
@@ -1,3 +1,4 @@ | |||||
import 'package:cached_network_image/cached_network_image.dart'; | |||||
import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
class GoodsShareLinkWidget extends StatelessWidget { | class GoodsShareLinkWidget extends StatelessWidget { | ||||
@@ -45,7 +46,10 @@ class GoodsShareLinkWidget extends StatelessWidget { | |||||
Container( | Container( | ||||
width: 48, | width: 48, | ||||
height: 48, | height: 48, | ||||
color: Colors.redAccent, | |||||
margin: EdgeInsets.only(left: 8), | |||||
child: CachedNetworkImage( | |||||
imageUrl: imgGoods, | |||||
), | |||||
) | ) | ||||
], | ], | ||||
), | ), | ||||
@@ -61,7 +65,9 @@ class GoodsShareLinkWidget extends StatelessWidget { | |||||
margin: EdgeInsets.only(right: 6), | margin: EdgeInsets.only(right: 6), | ||||
width: 15, | width: 15, | ||||
height: 15, | height: 15, | ||||
color: Colors.redAccent, | |||||
child: CachedNetworkImage( | |||||
imageUrl: icon, | |||||
), | |||||
), | ), | ||||
Text( | Text( | ||||
name, | name, | ||||
@@ -1,3 +1,4 @@ | |||||
import 'package:cached_network_image/cached_network_image.dart'; | |||||
import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
class GoodsShareMiniprogramWidget extends StatelessWidget { | class GoodsShareMiniprogramWidget extends StatelessWidget { | ||||
@@ -26,7 +27,9 @@ class GoodsShareMiniprogramWidget extends StatelessWidget { | |||||
margin: EdgeInsets.only(right: 6), | margin: EdgeInsets.only(right: 6), | ||||
width: 15, | width: 15, | ||||
height: 15, | height: 15, | ||||
color: Colors.redAccent, | |||||
child: CachedNetworkImage( | |||||
imageUrl: icon, | |||||
), | |||||
), | ), | ||||
Text( | Text( | ||||
name, | name, | ||||
@@ -47,7 +50,9 @@ class GoodsShareMiniprogramWidget extends StatelessWidget { | |||||
margin: EdgeInsets.only(top: 10, bottom: 10), | margin: EdgeInsets.only(top: 10, bottom: 10), | ||||
width: double.infinity, | width: double.infinity, | ||||
height: 180, | height: 180, | ||||
color: Colors.redAccent, | |||||
child: CachedNetworkImage( | |||||
imageUrl: imgGoods, | |||||
), | |||||
), | ), | ||||
Row( | Row( | ||||
children: <Widget>[ | children: <Widget>[ | ||||
@@ -55,7 +60,7 @@ class GoodsShareMiniprogramWidget extends StatelessWidget { | |||||
margin: EdgeInsets.only(right: 6), | margin: EdgeInsets.only(right: 6), | ||||
width: 15, | width: 15, | ||||
height: 15, | height: 15, | ||||
color: Colors.redAccent, | |||||
// color: Colors.redAccent, | |||||
), | ), | ||||
Text( | Text( | ||||
'小程序', | '小程序', | ||||
@@ -29,7 +29,7 @@ class OrderTabbarWidget extends StatelessWidget { | |||||
Expanded( | Expanded( | ||||
child: TabBar( | child: TabBar( | ||||
controller: controller, | controller: controller, | ||||
isScrollable: true, | |||||
isScrollable: false, | |||||
indicatorSize: TabBarIndicatorSize.label, | indicatorSize: TabBarIndicatorSize.label, | ||||
// tabs: widgets, | // tabs: widgets, | ||||
indicatorColor: | indicatorColor: | ||||