|
|
|
import 'dart:async';
|
|
|
|
import 'dart:convert';
|
|
|
|
import 'dart:io';
|
|
|
|
|
|
|
|
import 'package:dio/dio.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter/services.dart';
|
|
|
|
import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart';
|
|
|
|
import 'package:flutter_native_image/flutter_native_image.dart';
|
|
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
|
|
import 'package:image_picker/image_picker.dart';
|
|
|
|
import 'package:one_key/utils/video_utils.dart';
|
|
|
|
import 'package:one_key/widgets/v_empty_view.dart';
|
|
|
|
import 'package:permission_handler/permission_handler.dart';
|
|
|
|
import 'package:provider/provider.dart';
|
|
|
|
import 'package:video_compress/video_compress.dart';
|
|
|
|
import 'package:video_thumbnail/video_thumbnail.dart';
|
|
|
|
|
|
|
|
import '../../../../app.dart';
|
|
|
|
import '../../../../models/addition_model.dart';
|
|
|
|
import '../../../../models/reserve_img_text.dart';
|
|
|
|
import '../../../../models/set_seller_info_model.dart';
|
|
|
|
import '../../../../models/upload_img_model.dart';
|
|
|
|
import '../../../../provider/base_info_provider.dart';
|
|
|
|
import '../../../../provider/marketing_center_provider.dart';
|
|
|
|
import '../../../../provider/store_base_info_provider.dart';
|
|
|
|
import '../../../../provider/upload_img_provider.dart';
|
|
|
|
import '../../../../provider/user_model.dart';
|
|
|
|
import '../../../../res/colors.dart';
|
|
|
|
import '../../../../utils/dialog_util.dart';
|
|
|
|
import '../../../../route/navigator_util.dart';
|
|
|
|
import '../../../../utils/screen_util.dart';
|
|
|
|
import '../../../../utils/upload_image_util.dart';
|
|
|
|
import '../../../../utils/utils.dart';
|
|
|
|
import '../../../../widgets/MyDivider.dart';
|
|
|
|
import '../../../../widgets/common_button_flat.dart';
|
|
|
|
import '../../../../widgets/h_empty_view.dart';
|
|
|
|
import '../../../../widgets/round_button.dart';
|
|
|
|
import '../../../../widgets/system_app_bar.dart';
|
|
|
|
import '../../../online_check/progress.dart';
|
|
|
|
import 'img_picker_invitation_widget.dart';
|
|
|
|
import 'package:image_picker/image_picker.dart';
|
|
|
|
|
|
|
|
/***
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* 主厨介绍
|
|
|
|
* 店铺介绍
|
|
|
|
*/
|
|
|
|
|
|
|
|
// class ChangeModel {
|
|
|
|
// int index; //顺序
|
|
|
|
// UploadImgModel image;
|
|
|
|
|
|
|
|
// // ChangeModel();
|
|
|
|
|
|
|
|
// // factory ChangeModel.fromJson(Map<String, dynamic> json) => ChangeModel()
|
|
|
|
// // ..content = json["content"]
|
|
|
|
// // ..type = json["type"];
|
|
|
|
// // // ..order = json['order'];
|
|
|
|
|
|
|
|
// // Map<String, dynamic> toJson() => <String, dynamic>{
|
|
|
|
// // "content": content, "type": type,
|
|
|
|
// // // 'order': order
|
|
|
|
// // };
|
|
|
|
// }
|
|
|
|
|
|
|
|
class ChefIntroducePage extends StatefulWidget {
|
|
|
|
ChefIntroducePage({Key key}) : super(key: key);
|
|
|
|
|
|
...
|
...
|
@@ -39,34 +70,43 @@ class ChefIntroducePage extends StatefulWidget { |
|
|
|
}
|
|
|
|
|
|
|
|
class _ChefIntroducePageState extends State<ChefIntroducePage> {
|
|
|
|
// int currIndex = 0; //样式按钮默认选中第一个
|
|
|
|
int currIndex = 0; //样式按钮默认选中第一个
|
|
|
|
|
|
|
|
// String sellername; //店铺名称
|
|
|
|
String sellername; //店铺名称
|
|
|
|
|
|
|
|
TextEditingController chefIntroduceC = TextEditingController();
|
|
|
|
FocusNode chefIntroduceNode = FocusNode();
|
|
|
|
TextEditingController storeIntroduceC = TextEditingController();
|
|
|
|
FocusNode storeIntroduceNode = FocusNode();
|
|
|
|
|
|
|
|
TextEditingController chefNameC = TextEditingController();
|
|
|
|
FocusNode chefNameNode = FocusNode();
|
|
|
|
|
|
|
|
final picker = ImagePicker();
|
|
|
|
MarketingCenterProvider marketingCenterProvider;
|
|
|
|
|
|
|
|
UploadImageProvider _uploadImageProvider;
|
|
|
|
MarketingCenterProvider _marketingCenterProvider;
|
|
|
|
bool addChefIntroduce = false;
|
|
|
|
bool addChefImge = false;
|
|
|
|
bool addAbove = false;
|
|
|
|
ScrollController controller = ScrollController();
|
|
|
|
bool addStoreIntroduce = false; //预订安排通知中附加餐厅文字介绍
|
|
|
|
// bool addStoreImge = false; //预订安排通知中附加餐厅文字图片
|
|
|
|
// bool addAbove = false; //餐厅介绍文字显示在第一张图片上
|
|
|
|
|
|
|
|
// StoreBaseIndoProvider _baseIndoProvider;
|
|
|
|
|
|
|
|
List<AdditionModel> data = [];
|
|
|
|
List<String> imgAll = [];
|
|
|
|
TextEditingController titleC = TextEditingController();
|
|
|
|
FocusNode titleCNode = FocusNode();
|
|
|
|
final picker = ImagePicker();
|
|
|
|
|
|
|
|
Subscription _subscription; //展示压缩进度
|
|
|
|
|
|
|
|
bool showCompress = false;
|
|
|
|
|
|
|
|
@override
|
|
|
|
void initState() {
|
|
|
|
super.initState();
|
|
|
|
|
|
|
|
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
|
|
|
// UserModel userModel = Provider.of<UserModel>(context, listen: false);
|
|
|
|
// sellername = userModel.user.sellername;
|
|
|
|
// setState(() {});
|
|
|
|
// _initData();
|
|
|
|
|
|
|
|
UserModel userModel = Provider.of<UserModel>(context, listen: false);
|
|
|
|
sellername = userModel.user.sellername;
|
|
|
|
setState(() {});
|
|
|
|
_getQiniuInfo();
|
|
|
|
await getSellerTemplateConf();
|
|
|
|
});
|
|
...
|
...
|
@@ -74,10 +114,36 @@ class _ChefIntroducePageState extends State<ChefIntroducePage> { |
|
|
|
|
|
|
|
@override
|
|
|
|
void dispose() {
|
|
|
|
_uploadImageProvider.firstImage = UploadImgModel();
|
|
|
|
// _uploadImageProvider.chefImage1 = UploadImgModel();
|
|
|
|
// _uploadImageProvider.chefImage2 = UploadImgModel();
|
|
|
|
// _uploadImageProvider.chefImage3 = UploadImgModel();
|
|
|
|
// _uploadImageProvider.chefImage4 = UploadImgModel();
|
|
|
|
|
|
|
|
super.dispose();
|
|
|
|
}
|
|
|
|
|
|
|
|
// _initData() {
|
|
|
|
// ChangeModel changeModel = ChangeModel();
|
|
|
|
// changeModel.index = 5;
|
|
|
|
// changeModel.image = _uploadImageProvider.chefImage1;
|
|
|
|
// data.add(changeModel);
|
|
|
|
|
|
|
|
// ChangeModel changeModel6 = ChangeModel();
|
|
|
|
// changeModel6.index = 6;
|
|
|
|
// changeModel6.image = _uploadImageProvider.chefImage2;
|
|
|
|
// data.add(changeModel6);
|
|
|
|
|
|
|
|
// ChangeModel changeModel7 = ChangeModel();
|
|
|
|
// changeModel7.index = 7;
|
|
|
|
// changeModel7.image = _uploadImageProvider.chefImage3;
|
|
|
|
// data.add(changeModel7);
|
|
|
|
|
|
|
|
// ChangeModel changeModel8 = ChangeModel();
|
|
|
|
// changeModel8.index = 8;
|
|
|
|
// changeModel8.image = _uploadImageProvider.chefImage4;
|
|
|
|
// data.add(changeModel8);
|
|
|
|
// }
|
|
|
|
|
|
|
|
///获取七牛云token
|
|
|
|
///
|
|
|
|
_getQiniuInfo() async {
|
|
...
|
...
|
@@ -85,50 +151,1044 @@ class _ChefIntroducePageState extends State<ChefIntroducePage> { |
|
|
|
}
|
|
|
|
|
|
|
|
getSellerTemplateConf() async {
|
|
|
|
bool success =
|
|
|
|
await _marketingCenterProvider.getSellerTemplateConf(context);
|
|
|
|
if (success && _marketingCenterProvider.markDataModel.chef != null) {
|
|
|
|
// currIndex = int.parse(_marketingCenterProvider.markDataModel.chef.style);
|
|
|
|
bool success = await marketingCenterProvider.getSellerTemplateConf(context);
|
|
|
|
if (success && marketingCenterProvider.markDataModel.chef != null) {
|
|
|
|
// currIndex = int.parse(marketingCenterProvider.markDataModel.chef.style);
|
|
|
|
|
|
|
|
// _uploadImageProvider.chefImage1.qiniuUrl =
|
|
|
|
// marketingCenterProvider.markDataModel.chef.images.length > 0
|
|
|
|
// ? marketingCenterProvider.markDataModel.chef.images[0]
|
|
|
|
// : null;
|
|
|
|
|
|
|
|
// if (_uploadImageProvider.chefImage1.qiniuUrl != null) {
|
|
|
|
// imgAll.add(_uploadImageProvider.chefImage1.qiniuUrl);
|
|
|
|
// }
|
|
|
|
// _uploadImageProvider.chefImage1.process =
|
|
|
|
// _uploadImageProvider.chefImage1.qiniuUrl != null &&
|
|
|
|
// _uploadImageProvider.chefImage1.qiniuUrl != ''
|
|
|
|
// ? 1
|
|
|
|
// : null;
|
|
|
|
// _uploadImageProvider.chefImage2.qiniuUrl =
|
|
|
|
// marketingCenterProvider.markDataModel.chef.images.length > 1
|
|
|
|
// ? marketingCenterProvider.markDataModel.chef.images[1]
|
|
|
|
// : null;
|
|
|
|
// if (_uploadImageProvider.chefImage2.qiniuUrl != null) {
|
|
|
|
// imgAll.add(_uploadImageProvider.chefImage2.qiniuUrl);
|
|
|
|
// }
|
|
|
|
// _uploadImageProvider.chefImage2.process =
|
|
|
|
// _uploadImageProvider.chefImage2.qiniuUrl != null &&
|
|
|
|
// _uploadImageProvider.chefImage2.qiniuUrl != ''
|
|
|
|
// ? 1
|
|
|
|
// : null;
|
|
|
|
// _uploadImageProvider.chefImage3.qiniuUrl =
|
|
|
|
// marketingCenterProvider.markDataModel.chef.images.length > 2
|
|
|
|
// ? marketingCenterProvider.markDataModel.chef.images[2]
|
|
|
|
// : null;
|
|
|
|
// if (_uploadImageProvider.chefImage3.qiniuUrl != null) {
|
|
|
|
// imgAll.add(_uploadImageProvider.chefImage3.qiniuUrl);
|
|
|
|
// }
|
|
|
|
// _uploadImageProvider.chefImage3.process =
|
|
|
|
// _uploadImageProvider.chefImage3.qiniuUrl != null &&
|
|
|
|
// _uploadImageProvider.chefImage3.qiniuUrl != ''
|
|
|
|
// ? 1
|
|
|
|
// : null;
|
|
|
|
// _uploadImageProvider.chefImage4.qiniuUrl =
|
|
|
|
// marketingCenterProvider.markDataModel.chef.images.length > 3
|
|
|
|
// ? marketingCenterProvider.markDataModel.chef.images[3]
|
|
|
|
// : null;
|
|
|
|
// if (_uploadImageProvider.chefImage4.qiniuUrl != null) {
|
|
|
|
// imgAll.add(_uploadImageProvider.chefImage4.qiniuUrl);
|
|
|
|
// }
|
|
|
|
// _uploadImageProvider.chefImage4.process =
|
|
|
|
// _uploadImageProvider.chefImage4.qiniuUrl != null &&
|
|
|
|
// _uploadImageProvider.chefImage4.qiniuUrl != ''
|
|
|
|
// ? 1
|
|
|
|
// : null;
|
|
|
|
if (marketingCenterProvider.markDataModel.chef.content == null) {
|
|
|
|
//以前么有设置过,默认值
|
|
|
|
titleC.text = '主厨介绍';
|
|
|
|
|
|
|
|
if (marketingCenterProvider.markDataModel.chef.introduce
|
|
|
|
.trim()
|
|
|
|
.length >
|
|
|
|
0) {
|
|
|
|
//文字
|
|
|
|
|
|
|
|
AdditionModel additionModel = AdditionModel();
|
|
|
|
additionModel.content =
|
|
|
|
marketingCenterProvider.markDataModel.chef.introduce;
|
|
|
|
additionModel.infoC.text =
|
|
|
|
marketingCenterProvider.markDataModel.chef.introduce;
|
|
|
|
additionModel.type = '2';
|
|
|
|
|
|
|
|
data.add(additionModel);
|
|
|
|
}
|
|
|
|
if (marketingCenterProvider.markDataModel.chef.image != null &&marketingCenterProvider.markDataModel.chef.image.length > 0) {
|
|
|
|
//设置过图片
|
|
|
|
for (int i = 0;
|
|
|
|
i < marketingCenterProvider.markDataModel.chef.image.length;
|
|
|
|
i++) {
|
|
|
|
String imageUrl =
|
|
|
|
marketingCenterProvider.markDataModel.chef.image[i];
|
|
|
|
AdditionModel additionModel = AdditionModel();
|
|
|
|
additionModel.content = imageUrl;
|
|
|
|
additionModel.type = '1';
|
|
|
|
|
|
|
|
additionModel.image = UploadImgModel();
|
|
|
|
additionModel.image.process = 1;
|
|
|
|
additionModel.image.qiniuUrl = imageUrl;
|
|
|
|
data.add(additionModel);
|
|
|
|
|
|
|
|
imgAll.add(imageUrl);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
addStoreIntroduce =
|
|
|
|
marketingCenterProvider.markDataModel.chef.isIntroduceAll == '1'
|
|
|
|
? true
|
|
|
|
: false;
|
|
|
|
titleC.text = marketingCenterProvider.markDataModel.chef.title;
|
|
|
|
for (int i = 0;
|
|
|
|
i < marketingCenterProvider.markDataModel.chef.content.length;
|
|
|
|
i++) {
|
|
|
|
ContentModel contentModel =
|
|
|
|
marketingCenterProvider.markDataModel.chef.content[i];
|
|
|
|
if (contentModel.type == '1') {
|
|
|
|
//图片
|
|
|
|
AdditionModel additionModel = AdditionModel();
|
|
|
|
additionModel.content = contentModel.content;
|
|
|
|
additionModel.type = '1';
|
|
|
|
|
|
|
|
additionModel.image = UploadImgModel();
|
|
|
|
additionModel.image.process = 1;
|
|
|
|
additionModel.image.qiniuUrl = contentModel.content;
|
|
|
|
data.add(additionModel);
|
|
|
|
|
|
|
|
imgAll.add(contentModel.content);
|
|
|
|
} else if (contentModel.type == '2') {
|
|
|
|
//文本
|
|
|
|
AdditionModel additionModel = AdditionModel();
|
|
|
|
additionModel.content = contentModel.content;
|
|
|
|
additionModel.infoC.text = contentModel.content;
|
|
|
|
additionModel.type = contentModel.type;
|
|
|
|
|
|
|
|
_uploadImageProvider.firstImage.qiniuUrl =
|
|
|
|
_marketingCenterProvider.markDataModel.chef.image ?? null;
|
|
|
|
data.add(additionModel);
|
|
|
|
} else {
|
|
|
|
//视频
|
|
|
|
AdditionModel additionModel = AdditionModel();
|
|
|
|
String thumbnailPathString =
|
|
|
|
await VideoUtils.getThumbnailFile(contentModel.content);
|
|
|
|
File thumbnailPath = File(thumbnailPathString); //封面
|
|
|
|
additionModel.content = contentModel.content;
|
|
|
|
additionModel.type = '3';
|
|
|
|
|
|
|
|
if (_uploadImageProvider.firstImage.qiniuUrl != null) {
|
|
|
|
imgAll.add(_uploadImageProvider.firstImage.qiniuUrl);
|
|
|
|
additionModel.image = UploadImgModel();
|
|
|
|
additionModel.image.process = 1;
|
|
|
|
additionModel.image.duration = contentModel.duration;
|
|
|
|
additionModel.image.thumbnailPath = thumbnailPath;
|
|
|
|
additionModel.image.qiniuUrl = contentModel.content;
|
|
|
|
data.add(additionModel);
|
|
|
|
|
|
|
|
imgAll.add(contentModel.content);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
_uploadImageProvider.firstImage.process =
|
|
|
|
_uploadImageProvider.firstImage.qiniuUrl != null &&
|
|
|
|
_uploadImageProvider.firstImage.qiniuUrl != ''
|
|
|
|
? 1
|
|
|
|
: null;
|
|
|
|
|
|
|
|
chefNameC.text = _marketingCenterProvider.markDataModel.chef.chefName;
|
|
|
|
chefIntroduceC.text =
|
|
|
|
_marketingCenterProvider.markDataModel.chef.introduce;
|
|
|
|
addChefIntroduce =
|
|
|
|
_marketingCenterProvider.markDataModel.chef.isIntroduce == '1'
|
|
|
|
? true
|
|
|
|
: false;
|
|
|
|
addChefImge = _marketingCenterProvider.markDataModel.chef.isImages == '1'
|
|
|
|
? true
|
|
|
|
: false;
|
|
|
|
addAbove = _marketingCenterProvider.markDataModel.chef.isAbove == '1'
|
|
|
|
? true
|
|
|
|
: false;
|
|
|
|
// addStoreImge = marketingCenterProvider.markDataModel.chef.isImages == '1'
|
|
|
|
// ? true
|
|
|
|
// : false;
|
|
|
|
// addAbove = marketingCenterProvider.markDataModel.chef.isAbove == '1'
|
|
|
|
// ? true
|
|
|
|
// : false;
|
|
|
|
|
|
|
|
setState(() {});
|
|
|
|
setState(() {});
|
|
|
|
}
|
|
|
|
|
|
|
|
///图文合并,图文分开,无文字
|
|
|
|
// Widget _selectBtnWidget() {
|
|
|
|
// return Container(
|
|
|
|
// decoration: BoxDecoration(
|
|
|
|
// border: Border(
|
|
|
|
// bottom:
|
|
|
|
// BorderSide(color: MyColours.color_E7E7E7, width: w(0.5)))),
|
|
|
|
// margin: EdgeInsets.only(left: w(16)),
|
|
|
|
// padding: EdgeInsets.only(top: w(12), bottom: w(12), right: w(16)),
|
|
|
|
// child: Row(
|
|
|
|
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
|
|
// children: [
|
|
|
|
// Text(
|
|
|
|
// '附加餐厅介绍',
|
|
|
|
// style: TextStyle(
|
|
|
|
// color: MyColours.color_515151,
|
|
|
|
// fontSize: ScreenUtil().setWidth(32)),
|
|
|
|
// ),
|
|
|
|
// Container(
|
|
|
|
// height: ScreenUtil().setWidth(74),
|
|
|
|
// decoration: BoxDecoration(
|
|
|
|
// color: Color.fromRGBO(232, 232, 232, 1),
|
|
|
|
// borderRadius: BorderRadius.circular(
|
|
|
|
// r(11),
|
|
|
|
// ),
|
|
|
|
// // border: Border.all(
|
|
|
|
// // width: w(1), color: MyColours.color_438E93),
|
|
|
|
// ),
|
|
|
|
// child: Row(
|
|
|
|
// // mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
|
|
|
// // crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
// children: <Widget>[
|
|
|
|
// CommonButtonFlat(
|
|
|
|
// content: "无文字",
|
|
|
|
// state: currIndex == 0 ? 1 : 0,
|
|
|
|
// fontSize: 28,
|
|
|
|
// right: false,
|
|
|
|
// width: w(52),
|
|
|
|
// onPress: () {
|
|
|
|
// if (currIndex == 0) return;
|
|
|
|
// setState(() {
|
|
|
|
// currIndex = 0;
|
|
|
|
// });
|
|
|
|
// },
|
|
|
|
// ),
|
|
|
|
// currIndex == 2
|
|
|
|
// ? MyDivider(
|
|
|
|
// ScreenUtil().setWidth(4),
|
|
|
|
// ScreenUtil().setWidth(46),
|
|
|
|
// color: MyColours.color_dfdfdf,
|
|
|
|
// )
|
|
|
|
// : SizedBox(),
|
|
|
|
// CommonButtonFlat(
|
|
|
|
// content: "图文合并",
|
|
|
|
// state: currIndex == 1 ? 1 : 0,
|
|
|
|
// fontSize: 28,
|
|
|
|
// width: w(66),
|
|
|
|
// left: false,
|
|
|
|
// right: false,
|
|
|
|
// onPress: () {
|
|
|
|
// if (currIndex == 1) return;
|
|
|
|
// setState(() {
|
|
|
|
// currIndex = 1;
|
|
|
|
// });
|
|
|
|
// },
|
|
|
|
// ),
|
|
|
|
// currIndex == 0
|
|
|
|
// ? MyDivider(
|
|
|
|
// ScreenUtil().setWidth(4),
|
|
|
|
// ScreenUtil().setWidth(46),
|
|
|
|
// color: MyColours.color_dfdfdf,
|
|
|
|
// )
|
|
|
|
// : SizedBox(),
|
|
|
|
// Container(
|
|
|
|
// child: CommonButtonFlat(
|
|
|
|
// content: "图文分开",
|
|
|
|
// left: false,
|
|
|
|
// state: currIndex == 2 ? 1 : 0,
|
|
|
|
// fontSize: 28,
|
|
|
|
// width: w(66),
|
|
|
|
// onPress: () {
|
|
|
|
// if (currIndex == 2) return;
|
|
|
|
// setState(() {
|
|
|
|
// currIndex = 2;
|
|
|
|
// });
|
|
|
|
// },
|
|
|
|
// )),
|
|
|
|
// ],
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// ],
|
|
|
|
// ));
|
|
|
|
// }
|
|
|
|
|
|
|
|
// Widget _introduceWidget(EdgeInsets edgeInsets,
|
|
|
|
// {double width = double.infinity,
|
|
|
|
// Color textColor = MyColours.color_515151,
|
|
|
|
// Color hintColor = MyColours.color_999999,
|
|
|
|
// BoxDecoration boxDecoration}) {
|
|
|
|
// return Container(
|
|
|
|
// width: width,
|
|
|
|
// alignment: Alignment.centerLeft,
|
|
|
|
// padding: edgeInsets,
|
|
|
|
// decoration: boxDecoration,
|
|
|
|
// child: Column(
|
|
|
|
// crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
// children: [
|
|
|
|
// Text(
|
|
|
|
// 'Introduce',
|
|
|
|
// style: TextStyle(color: MyColours.color_B39437, fontSize: font(14)),
|
|
|
|
// ),
|
|
|
|
// Text(
|
|
|
|
// '品牌介绍',
|
|
|
|
// style: TextStyle(color: MyColours.color_B39437, fontSize: font(14)),
|
|
|
|
// ),
|
|
|
|
// VEmptyView(16),
|
|
|
|
// Text(
|
|
|
|
// '${sellername}',
|
|
|
|
// style: TextStyle(color: textColor, fontSize: font(14)),
|
|
|
|
// ),
|
|
|
|
// VEmptyView(32),
|
|
|
|
// Container(
|
|
|
|
// width: double.infinity,
|
|
|
|
// // margin: EdgeInsets.symmetric(horizontal: w(10)),
|
|
|
|
// // padding: EdgeInsets.symmetric(horizontal: w(6)),
|
|
|
|
// decoration: BoxDecoration(
|
|
|
|
// border: Border(
|
|
|
|
// left: BorderSide(
|
|
|
|
// width: w(2), color: MyColours.color_EEAE74))),
|
|
|
|
// child: Container(
|
|
|
|
// width: double.infinity,
|
|
|
|
// padding: EdgeInsets.symmetric(
|
|
|
|
// horizontal: ScreenUtil().setWidth(12),
|
|
|
|
// ),
|
|
|
|
// alignment: Alignment.topLeft,
|
|
|
|
// child: TextField(
|
|
|
|
// textAlign: TextAlign.left,
|
|
|
|
// controller: storeIntroduceC,
|
|
|
|
// focusNode: storeIntroduceNode,
|
|
|
|
// style: TextStyle(
|
|
|
|
// height: 2,
|
|
|
|
// color: textColor,
|
|
|
|
// fontSize: ScreenUtil().setSp(20),
|
|
|
|
// textBaseline: TextBaseline.alphabetic),
|
|
|
|
// textAlignVertical: TextAlignVertical.center,
|
|
|
|
// maxLines: 7,
|
|
|
|
// decoration: InputDecoration(
|
|
|
|
// hintText: "点这里录入餐厅介绍文字",
|
|
|
|
// hintStyle: TextStyle(
|
|
|
|
// color: hintColor,
|
|
|
|
// fontSize: ScreenUtil().setSp(20),
|
|
|
|
// ),
|
|
|
|
// contentPadding: EdgeInsets.zero,
|
|
|
|
// border: OutlineInputBorder(borderSide: BorderSide.none),
|
|
|
|
// ),
|
|
|
|
// keyboardType: TextInputType.multiline,
|
|
|
|
// textInputAction: TextInputAction.newline,
|
|
|
|
// onChanged: (value) {
|
|
|
|
// setState(() {
|
|
|
|
// // currentRemark = value ?? "";
|
|
|
|
// });
|
|
|
|
// }),
|
|
|
|
// )),
|
|
|
|
// ],
|
|
|
|
// ),
|
|
|
|
// );
|
|
|
|
// }
|
|
|
|
|
|
|
|
// ///无文字
|
|
|
|
// Widget _noTextWidget() {
|
|
|
|
// return Column(
|
|
|
|
// children: [
|
|
|
|
// ImgPickerInvitationWidget(
|
|
|
|
// scrollController: controller,
|
|
|
|
// uploadType: UploadType.InvitationStoreType,
|
|
|
|
// model: _uploadImageProvider,
|
|
|
|
// index: 5,
|
|
|
|
// imageModel: _uploadImageProvider.chefImage1,
|
|
|
|
// deleteCallback: () {
|
|
|
|
// _uploadImageProvider.chefImage1.qiniuUrl = null;
|
|
|
|
// _uploadImageProvider.chefImage1.file = null;
|
|
|
|
// _uploadImageProvider.chefImage1.isUpload = false;
|
|
|
|
// _uploadImageProvider.chefImage1.process = 0;
|
|
|
|
// setState(() {});
|
|
|
|
// }),
|
|
|
|
// VEmptyView(18),
|
|
|
|
// ImgPickerInvitationWidget(
|
|
|
|
// scrollController: controller,
|
|
|
|
// uploadType: UploadType.InvitationStoreType,
|
|
|
|
// model: _uploadImageProvider,
|
|
|
|
// index: 6,
|
|
|
|
// imageModel: _uploadImageProvider.chefImage2,
|
|
|
|
// deleteCallback: () {
|
|
|
|
// _uploadImageProvider.chefImage2.qiniuUrl = null;
|
|
|
|
// _uploadImageProvider.chefImage2.file = null;
|
|
|
|
// _uploadImageProvider.chefImage2.isUpload = false;
|
|
|
|
// _uploadImageProvider.chefImage2.process = 0;
|
|
|
|
// setState(() {});
|
|
|
|
// }),
|
|
|
|
// VEmptyView(18),
|
|
|
|
// ImgPickerInvitationWidget(
|
|
|
|
// scrollController: controller,
|
|
|
|
// uploadType: UploadType.InvitationStoreType,
|
|
|
|
// model: _uploadImageProvider,
|
|
|
|
// index: 7,
|
|
|
|
// imageModel: _uploadImageProvider.chefImage3,
|
|
|
|
// deleteCallback: () {
|
|
|
|
// _uploadImageProvider.chefImage3.qiniuUrl = null;
|
|
|
|
// _uploadImageProvider.chefImage3.file = null;
|
|
|
|
// _uploadImageProvider.chefImage3.isUpload = false;
|
|
|
|
// _uploadImageProvider.chefImage3.process = 0;
|
|
|
|
// setState(() {});
|
|
|
|
// }),
|
|
|
|
// VEmptyView(18),
|
|
|
|
// ImgPickerInvitationWidget(
|
|
|
|
// scrollController: controller,
|
|
|
|
// model: _uploadImageProvider,
|
|
|
|
// index: 8,
|
|
|
|
// uploadType: UploadType.InvitationStoreType,
|
|
|
|
// imageModel: _uploadImageProvider.chefImage4,
|
|
|
|
// deleteCallback: () {
|
|
|
|
// _uploadImageProvider.chefImage4.qiniuUrl = null;
|
|
|
|
// _uploadImageProvider.chefImage4.file = null;
|
|
|
|
// _uploadImageProvider.chefImage4.isUpload = false;
|
|
|
|
// _uploadImageProvider.chefImage4.process = 0;
|
|
|
|
// setState(() {});
|
|
|
|
// }),
|
|
|
|
// ],
|
|
|
|
// );
|
|
|
|
// }
|
|
|
|
|
|
|
|
///图文合并
|
|
|
|
// Widget _mergingWidget() {
|
|
|
|
// Color themColor = MyColours.color_0C0F0E;
|
|
|
|
// int colorValue = null;
|
|
|
|
// if (marketingCenterProvider.markDataModel.home != null &&
|
|
|
|
// marketingCenterProvider.markDataModel.home.themeColor != null) {
|
|
|
|
// colorValue =
|
|
|
|
// int.parse(marketingCenterProvider.markDataModel.home.themeColor);
|
|
|
|
// }
|
|
|
|
|
|
|
|
// if (colorValue != null) {
|
|
|
|
// themColor = Color(colorValue);
|
|
|
|
// }
|
|
|
|
// return Column(
|
|
|
|
// children: [
|
|
|
|
// Stack(
|
|
|
|
// children: [
|
|
|
|
// ImgPickerInvitationWidget(
|
|
|
|
// scrollController: controller,
|
|
|
|
// uploadType: UploadType.InvitationStoreType,
|
|
|
|
// model: _uploadImageProvider,
|
|
|
|
// index: 5,
|
|
|
|
// padding: EdgeInsets.only(left: w(160)),
|
|
|
|
// imageModel: _uploadImageProvider.chefImage1),
|
|
|
|
// Positioned(
|
|
|
|
// child: _introduceWidget(
|
|
|
|
// EdgeInsets.only(
|
|
|
|
// left: w(15), top: w(23), right: w(7), bottom: w(42)),
|
|
|
|
// textColor: MyColours.color_ffffff,
|
|
|
|
// hintColor: MyColours.color_ffffff,
|
|
|
|
// boxDecoration: BoxDecoration(
|
|
|
|
// gradient: LinearGradient(
|
|
|
|
// stops: [0, 1],
|
|
|
|
// begin: Alignment.topCenter,
|
|
|
|
// end: Alignment.bottomCenter,
|
|
|
|
// colors: [
|
|
|
|
// themColor,
|
|
|
|
// MyColours.color_4D0C0F0E,
|
|
|
|
// ],
|
|
|
|
// ),
|
|
|
|
// )),
|
|
|
|
// width: w(160),
|
|
|
|
// ),
|
|
|
|
// ],
|
|
|
|
// ),
|
|
|
|
// VEmptyView(18),
|
|
|
|
// ImgPickerInvitationWidget(
|
|
|
|
// scrollController: controller,
|
|
|
|
// uploadType: UploadType.InvitationStoreType,
|
|
|
|
// model: _uploadImageProvider,
|
|
|
|
// index: 6,
|
|
|
|
// imageModel: _uploadImageProvider.chefImage2),
|
|
|
|
// VEmptyView(18),
|
|
|
|
// ImgPickerInvitationWidget(
|
|
|
|
// scrollController: controller,
|
|
|
|
// uploadType: UploadType.InvitationStoreType,
|
|
|
|
// model: _uploadImageProvider,
|
|
|
|
// index: 7,
|
|
|
|
// imageModel: _uploadImageProvider.chefImage3),
|
|
|
|
// VEmptyView(18),
|
|
|
|
// ImgPickerInvitationWidget(
|
|
|
|
// scrollController: controller,
|
|
|
|
// uploadType: UploadType.InvitationStoreType,
|
|
|
|
// model: _uploadImageProvider,
|
|
|
|
// index: 8,
|
|
|
|
// imageModel: _uploadImageProvider.chefImage4),
|
|
|
|
// ],
|
|
|
|
// );
|
|
|
|
// }
|
|
|
|
/**
|
|
|
|
///图文分开
|
|
|
|
Widget _separateWidget() {
|
|
|
|
return ReorderableListView(
|
|
|
|
shrinkWrap: true,
|
|
|
|
scrollController: controller,
|
|
|
|
children: <Widget>[
|
|
|
|
// _introduceWidget(EdgeInsets.all(w(15)),
|
|
|
|
// boxDecoration: BoxDecoration(color: MyColours.color_ffffff)),
|
|
|
|
// VEmptyView(18),
|
|
|
|
|
|
|
|
for (ChangeModel item in data)
|
|
|
|
Container(
|
|
|
|
key: ValueKey(item),
|
|
|
|
child: Padding(
|
|
|
|
padding:
|
|
|
|
EdgeInsets.only(bottom: item.index != 8 ? w(9) : 0),
|
|
|
|
child: ImgPickerInvitationWidget(
|
|
|
|
scrollController: controller,
|
|
|
|
uploadType: UploadType.InvitationStoreType,
|
|
|
|
model: _uploadImageProvider,
|
|
|
|
index: item.index,
|
|
|
|
imageModel: item.image,
|
|
|
|
callback: () {
|
|
|
|
//完成
|
|
|
|
if (item.index == 5) {
|
|
|
|
imgAll
|
|
|
|
.add(_uploadImageProvider.chefImage1.qiniuUrl);
|
|
|
|
} else if (item.index == 6) {
|
|
|
|
imgAll
|
|
|
|
.add(_uploadImageProvider.chefImage2.qiniuUrl);
|
|
|
|
} else if (item.index == 7) {
|
|
|
|
imgAll
|
|
|
|
.add(_uploadImageProvider.chefImage3.qiniuUrl);
|
|
|
|
} else if (item.index == 8) {
|
|
|
|
imgAll
|
|
|
|
.add(_uploadImageProvider.chefImage4.qiniuUrl);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
deleteCallback: () {
|
|
|
|
item.image.qiniuUrl = null;
|
|
|
|
item.image.file = null;
|
|
|
|
item.image.isUpload = false;
|
|
|
|
item.image.process = 0.01;
|
|
|
|
setState(() {});
|
|
|
|
}))),
|
|
|
|
|
|
|
|
// ImgPickerInvitationWidget(
|
|
|
|
// scrollController: controller,
|
|
|
|
// uploadType: UploadType.InvitationStoreType,
|
|
|
|
// model: _uploadImageProvider,
|
|
|
|
// index: 6,
|
|
|
|
// imageModel: _uploadImageProvider.chefImage2,
|
|
|
|
// deleteCallback: () {
|
|
|
|
// _uploadImageProvider.chefImage2.qiniuUrl = null;
|
|
|
|
// _uploadImageProvider.chefImage2.file = null;
|
|
|
|
// _uploadImageProvider.chefImage2.isUpload = false;
|
|
|
|
// _uploadImageProvider.chefImage2.process = 0.01;
|
|
|
|
// setState(() {});
|
|
|
|
// }),
|
|
|
|
// VEmptyView(18),
|
|
|
|
// ImgPickerInvitationWidget(
|
|
|
|
// scrollController: controller,
|
|
|
|
// uploadType: UploadType.InvitationStoreType,
|
|
|
|
// model: _uploadImageProvider,
|
|
|
|
// index: 7,
|
|
|
|
// imageModel: _uploadImageProvider.chefImage3,
|
|
|
|
// deleteCallback: () {
|
|
|
|
// _uploadImageProvider.chefImage3.qiniuUrl = null;
|
|
|
|
// _uploadImageProvider.chefImage3.file = null;
|
|
|
|
// _uploadImageProvider.chefImage3.isUpload = false;
|
|
|
|
// _uploadImageProvider.chefImage3.process = 0.01;
|
|
|
|
// setState(() {});
|
|
|
|
// }),
|
|
|
|
// VEmptyView(18),
|
|
|
|
// ImgPickerInvitationWidget(
|
|
|
|
// scrollController: controller,
|
|
|
|
// uploadType: UploadType.InvitationStoreType,
|
|
|
|
// model: _uploadImageProvider,
|
|
|
|
// index: 8,
|
|
|
|
// imageModel: _uploadImageProvider.chefImage4,
|
|
|
|
// deleteCallback: () {
|
|
|
|
// _uploadImageProvider.chefImage4.qiniuUrl = null;
|
|
|
|
// _uploadImageProvider.chefImage4.file = null;
|
|
|
|
// _uploadImageProvider.chefImage4.isUpload = false;
|
|
|
|
// _uploadImageProvider.chefImage4.process = 0.01;
|
|
|
|
// setState(() {});
|
|
|
|
// }),
|
|
|
|
],
|
|
|
|
onReorder: (int oldIndex, int newIndex) async {
|
|
|
|
if (oldIndex < newIndex) {
|
|
|
|
newIndex -= 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
// var childold = tableManagerModel.areas[oldIndex];
|
|
|
|
// Map<String, String> params = {
|
|
|
|
// 'sid': Provider.of<UserModel>(context, listen: false)
|
|
|
|
// .user
|
|
|
|
// .sellerid,
|
|
|
|
// 'regionid': childold.rid,
|
|
|
|
// 'order_o': tableManagerModel.areas[newIndex].orderId,
|
|
|
|
// 'sort': oldIndex < newIndex ? '2' : '1'
|
|
|
|
// };
|
|
|
|
var child = data.removeAt(oldIndex);
|
|
|
|
data.insert(newIndex, child);
|
|
|
|
setState(() {});
|
|
|
|
// await tableManagerModel.sortByRegion(context, params);
|
|
|
|
// //刷新前一页数据
|
|
|
|
// bus.emit('refresh_table_area');
|
|
|
|
});
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
|
|
|
|
///输入框
|
|
|
|
Widget _textfield(String title, String hintText,
|
|
|
|
TextEditingController controller, FocusNode focusNode,
|
|
|
|
{TextInputType textInputType = TextInputType.text}) {
|
|
|
|
return Container(
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
border: Border(
|
|
|
|
bottom:
|
|
|
|
BorderSide(color: MyColours.color_E7E7E7, width: w(0.5)))),
|
|
|
|
margin: EdgeInsets.only(left: w(16)),
|
|
|
|
padding: EdgeInsets.only(top: w(12), bottom: w(4), right: w(16)),
|
|
|
|
child: Row(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
|
|
children: [
|
|
|
|
Container(
|
|
|
|
height: w(48),
|
|
|
|
alignment: Alignment.center,
|
|
|
|
child: Text(
|
|
|
|
title,
|
|
|
|
style: TextStyle(
|
|
|
|
color: MyColours.color_515151,
|
|
|
|
fontSize: ScreenUtil().setSp(32)),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
HEmptyView(80),
|
|
|
|
Expanded(
|
|
|
|
// width: ScreenUtil().setWidth(231 * 2),
|
|
|
|
child: Container(
|
|
|
|
// height: w(54),
|
|
|
|
child: TextField(
|
|
|
|
controller: controller,
|
|
|
|
textAlign: TextAlign.right,
|
|
|
|
textAlignVertical: TextAlignVertical.bottom,
|
|
|
|
maxLines: 1,
|
|
|
|
// //光标颜色
|
|
|
|
// cursorColor:
|
|
|
|
// widget.isSelect ? Colors.white : MyColours.color_199095,
|
|
|
|
//输入文本的样式
|
|
|
|
inputFormatters: title == '标题名称'
|
|
|
|
? [LengthLimitingTextInputFormatter(15)]
|
|
|
|
: [],
|
|
|
|
style: TextStyle(
|
|
|
|
color: MyColours.color_515151,
|
|
|
|
fontSize: ScreenUtil().setSp(32),
|
|
|
|
),
|
|
|
|
focusNode: focusNode,
|
|
|
|
decoration: InputDecoration(
|
|
|
|
isCollapsed: true, //重点,相当于高度包裹的意思,必须设置为true,不然有默认奇妙的最小高度
|
|
|
|
border: OutlineInputBorder(borderSide: BorderSide.none),
|
|
|
|
hintText: hintText,
|
|
|
|
hintStyle: TextStyle(
|
|
|
|
color: MyColours.color_999999,
|
|
|
|
fontSize: ScreenUtil().setSp(32),
|
|
|
|
),
|
|
|
|
enabledBorder: new UnderlineInputBorder(
|
|
|
|
borderSide: BorderSide.none,
|
|
|
|
),
|
|
|
|
focusedBorder: new UnderlineInputBorder(
|
|
|
|
borderSide: BorderSide.none,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
onChanged: (value) {},
|
|
|
|
onEditingComplete: () {
|
|
|
|
FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
|
|
|
|
},
|
|
|
|
keyboardType: textInputType),
|
|
|
|
)),
|
|
|
|
// HEmptyView(32)
|
|
|
|
],
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
Widget _item(String title, {bool select, GestureTapCallback onTap}) {
|
|
|
|
return InkWell(
|
|
|
|
onTap: onTap,
|
|
|
|
child: Container(
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
border: Border(
|
|
|
|
bottom: BorderSide(
|
|
|
|
color: MyColours.color_E7E7E7, width: w(0.5)))),
|
|
|
|
margin: EdgeInsets.only(left: w(16)),
|
|
|
|
padding: EdgeInsets.only(top: w(12), bottom: w(12), right: w(16)),
|
|
|
|
child: Row(
|
|
|
|
children: [
|
|
|
|
Text(
|
|
|
|
title,
|
|
|
|
style: TextStyle(
|
|
|
|
color: MyColours.color_515151,
|
|
|
|
fontSize: ScreenUtil().setWidth(32)),
|
|
|
|
),
|
|
|
|
Spacer(),
|
|
|
|
Container(
|
|
|
|
padding:
|
|
|
|
EdgeInsets.symmetric(horizontal: w(7), vertical: w(4)),
|
|
|
|
child: Image.asset(
|
|
|
|
Utils.getImgPath(select ? 'swich_on' : 'swich_off'),
|
|
|
|
width: w(44),
|
|
|
|
),
|
|
|
|
)
|
|
|
|
],
|
|
|
|
)));
|
|
|
|
}
|
|
|
|
|
|
|
|
/// 修改店铺基本信息
|
|
|
|
// _setSellerInfoById(String text) async {
|
|
|
|
// Map<String, dynamic> params = {
|
|
|
|
// 'id': Provider.of<UserModel>(context, listen: false).user.sellerid,
|
|
|
|
// };
|
|
|
|
|
|
|
|
// params['sellerdesc'] = text;
|
|
|
|
|
|
|
|
// FormData formData = FormData.fromMap(params);
|
|
|
|
|
|
|
|
// SetSellerInfoSunModel sunModel =
|
|
|
|
// await _baseIndoProvider.setSellerInfoById(context, formData);
|
|
|
|
// if (sunModel != null) {
|
|
|
|
// //修改成功
|
|
|
|
// // Utils.showToast('保存店铺信息成功');
|
|
|
|
// // EventBus().emit('changeStatusColor');
|
|
|
|
|
|
|
|
// } else {
|
|
|
|
// // Utils.showToast('保存失败');
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
|
|
|
|
List<Widget> _scrolleWidget() {
|
|
|
|
List<Widget> temp = [];
|
|
|
|
for (AdditionModel item in data) {
|
|
|
|
if (item.type == '1') {
|
|
|
|
//图片
|
|
|
|
if (item.image.qiniuUrl == null && item.image.file == null) {
|
|
|
|
} else {
|
|
|
|
temp.add(Container(
|
|
|
|
key: ValueKey(item),
|
|
|
|
margin: EdgeInsets.only(bottom: w(12)),
|
|
|
|
child: InkWell(
|
|
|
|
onTap: () {
|
|
|
|
// double process;
|
|
|
|
// String qiniuUrl;
|
|
|
|
// List<String> tempList = [];
|
|
|
|
// // if (title == '头像') {
|
|
|
|
// process = item.image.process;
|
|
|
|
// qiniuUrl = item.image.qiniuUrl;
|
|
|
|
// // } else {
|
|
|
|
// // process = _uploadImageProvider.erweima.process;
|
|
|
|
// // qiniuUrl = _uploadImageProvider.erweima.qiniuUrl;
|
|
|
|
// // }
|
|
|
|
|
|
|
|
// if (qiniuUrl != null &&
|
|
|
|
// qiniuUrl != '') {
|
|
|
|
// // tempList.add(qiniuUrl);
|
|
|
|
|
|
|
|
// // ///没有上传完成的不可以点击
|
|
|
|
// // _showPhotoView(context, 0, tempList);
|
|
|
|
|
|
|
|
// // _uploadImageProvider.firstImage.qiniuUrl = null;
|
|
|
|
// // _uploadImageProvider.firstImage.process = 0;
|
|
|
|
// // setState(() {});
|
|
|
|
// _openModalBottomSheet(context);
|
|
|
|
// // Utils.getPickPermission(context, () {
|
|
|
|
// // _getFromPictureOrCamera(
|
|
|
|
// // _uploadImageProvider.firstImage,
|
|
|
|
// // ImageSource.gallery);
|
|
|
|
// // },
|
|
|
|
// // Platform.isAndroid
|
|
|
|
// // ? Permission.storage
|
|
|
|
// // : Permission.photos);
|
|
|
|
// }
|
|
|
|
},
|
|
|
|
child: Stack(alignment: Alignment.bottomCenter, children: [
|
|
|
|
Stack(clipBehavior: Clip.none, children: [
|
|
|
|
item.image.qiniuUrl != null && item.image.qiniuUrl != ''
|
|
|
|
? Image.network(
|
|
|
|
item.image.qiniuUrl,
|
|
|
|
fit: BoxFit.contain,
|
|
|
|
width: double.infinity,
|
|
|
|
// width: ScreenUtil()
|
|
|
|
// .setWidth(imgSize * 2),
|
|
|
|
// height: ScreenUtil().setWidth(
|
|
|
|
// _uploadImageProvider
|
|
|
|
// .imgSizefirstImage *
|
|
|
|
// 2),
|
|
|
|
)
|
|
|
|
: Image.file(
|
|
|
|
item.image.file,
|
|
|
|
fit: BoxFit.contain,
|
|
|
|
width: double.infinity,
|
|
|
|
// width: ScreenUtil()
|
|
|
|
// .setWidth(imgSize * 2),
|
|
|
|
// height: ScreenUtil().setWidth(
|
|
|
|
// _uploadImageProvider
|
|
|
|
// .imgSizefirstImage *
|
|
|
|
// 2),
|
|
|
|
),
|
|
|
|
Positioned(
|
|
|
|
left: 0,
|
|
|
|
top: 0,
|
|
|
|
child: (item.image.file != null) &&
|
|
|
|
item.image.process != 1 &&
|
|
|
|
item.image.process != 0.01
|
|
|
|
? Container(
|
|
|
|
width: ScreenUtil().screenWidth,
|
|
|
|
height:
|
|
|
|
w(_uploadImageProvider.imgSizefirstImage),
|
|
|
|
color: MyColours.color_4D000000,
|
|
|
|
child: Center(
|
|
|
|
child: Text('上传中',
|
|
|
|
style: TextStyle(
|
|
|
|
color: MyColours.color_F8F9FD)),
|
|
|
|
),
|
|
|
|
)
|
|
|
|
: Container()),
|
|
|
|
]),
|
|
|
|
// item.image.process == 1
|
|
|
|
// ? Container(
|
|
|
|
// width: w(150),
|
|
|
|
// height: w(30),
|
|
|
|
// color: MyColours.color_4D000000,
|
|
|
|
// alignment: Alignment.center,
|
|
|
|
// child: Text(
|
|
|
|
// '点击图片可以更换',
|
|
|
|
// style: TextStyle(
|
|
|
|
// color: MyColours
|
|
|
|
// .color_F8F9FD,
|
|
|
|
// fontSize: font(14),
|
|
|
|
// fontWeight:
|
|
|
|
// FontWeight.bold),
|
|
|
|
// ))
|
|
|
|
// : SizedBox(),
|
|
|
|
item.image.process == 1
|
|
|
|
? Positioned(
|
|
|
|
top: 0,
|
|
|
|
right: 0,
|
|
|
|
child: InkWell(
|
|
|
|
onTap: () {
|
|
|
|
data.remove(item);
|
|
|
|
setState(() {});
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
width: w(20),
|
|
|
|
height: w(20),
|
|
|
|
color: Colors.transparent,
|
|
|
|
alignment: Alignment.center,
|
|
|
|
child: Image.asset(
|
|
|
|
Utils.getImgPath('delete')))))
|
|
|
|
: SizedBox(),
|
|
|
|
]))));
|
|
|
|
}
|
|
|
|
} else if (item.type == '2') {
|
|
|
|
//文本
|
|
|
|
temp.add(Container(
|
|
|
|
key: ValueKey(item),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
border: Border.all(width: w(1), color: MyColours.color_DBDBDB)),
|
|
|
|
// child: Text(item.content),
|
|
|
|
|
|
|
|
// color: Colors.red,
|
|
|
|
child: Stack(
|
|
|
|
children: [
|
|
|
|
Container(
|
|
|
|
// height: w(152),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
borderRadius: BorderRadius.circular(r(5)),
|
|
|
|
border: Border.all(
|
|
|
|
width: w(1), color: MyColours.color_DBDBDB)),
|
|
|
|
margin: EdgeInsets.only(
|
|
|
|
left: w(10), top: w(10), bottom: w(10), right: w(60)),
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
top: w(16), bottom: w(16), left: w(14), right: w(10)),
|
|
|
|
child: TextField(
|
|
|
|
controller: item.infoC,
|
|
|
|
// textAlign: TextAlign.right,
|
|
|
|
// focusNode: _cusdemNode,
|
|
|
|
style: TextStyle(
|
|
|
|
color: MyColours.color_515151,
|
|
|
|
fontSize: ScreenUtil().setSp(28),
|
|
|
|
// textBaseline: TextBaseline.alphabetic
|
|
|
|
),
|
|
|
|
// textAlignVertical: TextAlignVertical.center,
|
|
|
|
maxLines: 5,
|
|
|
|
maxLength: 200,
|
|
|
|
// inputFormatters: [
|
|
|
|
// LengthLimitingTextInputFormatter(10), // 设置输入长度限制
|
|
|
|
// ],
|
|
|
|
decoration: InputDecoration(
|
|
|
|
hintText: "点击录入文字",
|
|
|
|
hintStyle: TextStyle(
|
|
|
|
color: MyColours.color_999999,
|
|
|
|
fontSize: ScreenUtil().setSp(28),
|
|
|
|
),
|
|
|
|
contentPadding: EdgeInsets.zero,
|
|
|
|
border: OutlineInputBorder(borderSide: BorderSide.none),
|
|
|
|
),
|
|
|
|
keyboardType: TextInputType.multiline,
|
|
|
|
onChanged: (value) {
|
|
|
|
item.content = value;
|
|
|
|
})),
|
|
|
|
Positioned(
|
|
|
|
top: w(10),
|
|
|
|
right: w(10),
|
|
|
|
child: InkWell(
|
|
|
|
onTap: () {
|
|
|
|
data.remove(item);
|
|
|
|
setState(() {});
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
width: w(20),
|
|
|
|
height: w(20),
|
|
|
|
color: Colors.transparent,
|
|
|
|
alignment: Alignment.center,
|
|
|
|
child: Image.asset(Utils.getImgPath('delete')))))
|
|
|
|
],
|
|
|
|
),
|
|
|
|
));
|
|
|
|
} else {
|
|
|
|
//视频
|
|
|
|
if (item.image.qiniuUrl == null && item.image.file == null) {
|
|
|
|
} else {
|
|
|
|
temp.add(Container(
|
|
|
|
key: ValueKey(item),
|
|
|
|
margin: EdgeInsets.only(bottom: w(12)),
|
|
|
|
child: InkWell(
|
|
|
|
onTap: () {
|
|
|
|
if (item.image.process == 1) {
|
|
|
|
NavigatorUtil.goPlayVideoPage(context,
|
|
|
|
urlStr: item.image.qiniuUrl);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
child: Stack(alignment: Alignment.bottomRight, children: [
|
|
|
|
Stack(
|
|
|
|
alignment: Alignment.center,
|
|
|
|
children: [
|
|
|
|
Stack(
|
|
|
|
alignment: Alignment.topRight,
|
|
|
|
children: [
|
|
|
|
Image.file(
|
|
|
|
item.image.thumbnailPath,
|
|
|
|
fit: BoxFit.contain,
|
|
|
|
width: double.infinity,
|
|
|
|
)
|
|
|
|
// : FutureBuilder(
|
|
|
|
// //显示缩略图
|
|
|
|
// future: _initializeVideoPlayerFuture,
|
|
|
|
// builder: (context, snapshot) {
|
|
|
|
// print(snapshot.connectionState);
|
|
|
|
// if (snapshot.hasError)
|
|
|
|
// print(snapshot.error);
|
|
|
|
// if (snapshot.connectionState ==
|
|
|
|
// ConnectionState.done) {
|
|
|
|
// return Container(
|
|
|
|
// // width: ScreenUtil().setWidth(225),
|
|
|
|
// child: AspectRatio(
|
|
|
|
// aspectRatio: 1 / 1,
|
|
|
|
|
|
|
|
// // aspectRatio: _controller.value.aspectRatio,
|
|
|
|
// child: VideoPlayer(_controller),
|
|
|
|
// ),
|
|
|
|
// );
|
|
|
|
// } else {
|
|
|
|
// return Center(
|
|
|
|
// child: CircularProgressIndicator(),
|
|
|
|
// );
|
|
|
|
// }
|
|
|
|
// },
|
|
|
|
// ),
|
|
|
|
,
|
|
|
|
Offstage(
|
|
|
|
offstage: item.image.process < 1,
|
|
|
|
child: GestureDetector(
|
|
|
|
child: Image.asset(
|
|
|
|
Utils.getImgPath("delete"),
|
|
|
|
width: ScreenUtil().setWidth(40),
|
|
|
|
height: ScreenUtil().setWidth(40),
|
|
|
|
),
|
|
|
|
onTap: () {
|
|
|
|
//点击删除按钮
|
|
|
|
data.remove(item);
|
|
|
|
setState(() {});
|
|
|
|
// setState(() {
|
|
|
|
// widget.model.imageListDenvironment
|
|
|
|
// .removeWhere((element) =>
|
|
|
|
// element ==
|
|
|
|
// widget.model
|
|
|
|
// .imageListDenvironment[
|
|
|
|
// index]);
|
|
|
|
// widget.model.imageQiniuUrlList
|
|
|
|
// .removeWhere((element) =>
|
|
|
|
// element ==
|
|
|
|
// widget.model
|
|
|
|
// .imageQiniuUrlList[index]);
|
|
|
|
// });
|
|
|
|
},
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
// Offstage(
|
|
|
|
// offstage: widget.model.imageListDenvironment[index].process == 1,
|
|
|
|
// child: Progress(widget.model.imageListDenvironment[index].process),
|
|
|
|
// ),
|
|
|
|
|
|
|
|
showCompress
|
|
|
|
? Container(
|
|
|
|
width: ScreenUtil().setWidth(90.0 * 2),
|
|
|
|
height: ScreenUtil().setWidth(90.0 * 2),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: Color.fromRGBO(0, 0, 0, 0.5),
|
|
|
|
borderRadius: BorderRadius.circular(r(5))),
|
|
|
|
child: Center(
|
|
|
|
child: Text('压缩中...',
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: ScreenUtil().setSp(24),
|
|
|
|
color: MyColours.color_fefefe)),
|
|
|
|
))
|
|
|
|
: item.image.process == 1
|
|
|
|
? Align(
|
|
|
|
alignment: Alignment.center,
|
|
|
|
child: Image.asset(
|
|
|
|
Utils.getImgPath('play'),
|
|
|
|
width: ScreenUtil().setWidth(60),
|
|
|
|
))
|
|
|
|
: Progress(
|
|
|
|
item.image.process,
|
|
|
|
size: 90.0,
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
Align(
|
|
|
|
alignment: Alignment.bottomRight,
|
|
|
|
child: Padding(
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
bottom: ScreenUtil().setWidth(10),
|
|
|
|
right: ScreenUtil().setWidth(10)),
|
|
|
|
child: Text(
|
|
|
|
item.image.duration,
|
|
|
|
style: TextStyle(
|
|
|
|
color: MyColours.color_fefefe,
|
|
|
|
fontSize: ScreenUtil().setSp(24)),
|
|
|
|
)),
|
|
|
|
)
|
|
|
|
]))));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return temp;
|
|
|
|
}
|
|
|
|
|
|
|
|
///#相机拍照,单图选择
|
|
|
|
Future _getFromPictureOrCamera(UploadImgModel imgModel, imageSource) async {
|
|
|
|
Future _getFromPictureOrCamera(int index, imageSource) async {
|
|
|
|
final pickedFile = await picker.pickImage(source: imageSource);
|
|
|
|
if (pickedFile != null) {
|
|
|
|
UploadImgModel uploadImgModel = UploadImgModel(); //图
|
|
|
|
_uploadImageProvider.setDynamicValue('${data.length}', uploadImgModel);
|
|
|
|
|
|
|
|
AdditionModel additionModel = AdditionModel();
|
|
|
|
// additionModel.content = imgModel.qiniuUrl;
|
|
|
|
additionModel.type = '1';
|
|
|
|
// additionModel.order = data.length;
|
|
|
|
additionModel.image = uploadImgModel;
|
|
|
|
// additionModel.image.process = 1;
|
|
|
|
// additionModel.image.qiniuUrl =
|
|
|
|
// 'https://inews.gtimg.com/om_bt/OGlQWfsaAoKkuCcMZ2o9IVEPqd-72DQy5EAN02XBHUwfYAA/641';
|
|
|
|
|
|
|
|
data.add(additionModel);
|
|
|
|
File compressedFile = await FlutterNativeImage.compressImage(
|
|
|
|
pickedFile.path,
|
|
|
|
quality: 50,
|
|
|
|
percentage: 50);
|
|
|
|
UploadImgModel imgModel =
|
|
|
|
_uploadImageProvider.getDynamicValue('${index}');
|
|
|
|
setState(() {
|
|
|
|
if (pickedFile != null) {
|
|
|
|
imgModel.file = File(pickedFile.path);
|
|
...
|
...
|
@@ -143,23 +1203,38 @@ class _ChefIntroducePageState extends State<ChefIntroducePage> { |
|
|
|
// _uploadImageProvider.touxiang.qiniuUrl = null;
|
|
|
|
// } else {
|
|
|
|
// _uploadImageProvider.imgSizeErweima = 76;
|
|
|
|
_uploadImageProvider.firstImage.qiniuUrl = null;
|
|
|
|
imgModel.qiniuUrl = null;
|
|
|
|
// }
|
|
|
|
bool need = await Utils.sizeNeed(File(pickedFile.path));
|
|
|
|
File file = File(pickedFile.path);
|
|
|
|
if (need) {
|
|
|
|
file = File(compressedFile.absolute.path);
|
|
|
|
}
|
|
|
|
UploadImageUtil()
|
|
|
|
.startUploadOnly(context, file, 4, true, _uploadImageProvider, () {
|
|
|
|
imgAll.add(_uploadImageProvider.firstImage.qiniuUrl);
|
|
|
|
UploadImageUtil().startUploadOnlyAddition(
|
|
|
|
context, file, index, true, _uploadImageProvider, () {
|
|
|
|
UploadImgModel imgModel =
|
|
|
|
_uploadImageProvider.getDynamicValue('${index}');
|
|
|
|
AdditionModel additionModel = AdditionModel();
|
|
|
|
additionModel.content = imgModel.qiniuUrl;
|
|
|
|
additionModel.type = '1';
|
|
|
|
// additionModel.order = index;
|
|
|
|
additionModel.image = imgModel;
|
|
|
|
// additionModel.image.process = 1;
|
|
|
|
// additionModel.image.qiniuUrl =
|
|
|
|
// 'https://inews.gtimg.com/om_bt/OGlQWfsaAoKkuCcMZ2o9IVEPqd-72DQy5EAN02XBHUwfYAA/641';
|
|
|
|
|
|
|
|
data[index] = additionModel;
|
|
|
|
|
|
|
|
imgAll.add(imgModel.qiniuUrl);
|
|
|
|
setState(() {});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
///添加图片UI弹出
|
|
|
|
Future _openModalBottomSheet(context) async {
|
|
|
|
Future _openModalBottomSheet(context, int index,
|
|
|
|
{FileType fileType = FileType.image}) async {
|
|
|
|
final option = await showModalBottomSheet(
|
|
|
|
context: context,
|
|
|
|
backgroundColor: Colors.transparent,
|
|
...
|
...
|
@@ -177,15 +1252,12 @@ class _ChefIntroducePageState extends State<ChefIntroducePage> { |
|
|
|
children: <Widget>[
|
|
|
|
InkWell(
|
|
|
|
onTap: () {
|
|
|
|
// Utils.getPickPermission(context, () {
|
|
|
|
// _getFromPictureOrCamera(
|
|
|
|
// _uploadImageProvider.firstImage, ImageSource.camera);
|
|
|
|
|
|
|
|
// Navigator.pop(context);
|
|
|
|
// }, Permission.camera);
|
|
|
|
Utils.getPickPermission(context, () {
|
|
|
|
_getFromPictureOrCamera(
|
|
|
|
_uploadImageProvider.firstImage, ImageSource.camera);
|
|
|
|
if (fileType == FileType.image) {
|
|
|
|
_getFromPictureOrCamera(index, ImageSource.camera);
|
|
|
|
} else {
|
|
|
|
_getVideoFromPictureOrCamera(ImageSource.camera);
|
|
|
|
}
|
|
|
|
if (Navigator.canPop(context)) {
|
|
|
|
Navigator.pop(context);
|
|
|
|
}
|
|
...
|
...
|
@@ -193,6 +1265,17 @@ class _ChefIntroducePageState extends State<ChefIntroducePage> { |
|
|
|
Platform.isAndroid
|
|
|
|
? Permission.storage
|
|
|
|
: Permission.photos);
|
|
|
|
|
|
|
|
// Utils.getPickPermission(context, () {
|
|
|
|
// if (fileType == FileType.image) {
|
|
|
|
// _getImageFromPictureOrCamera(ImageSource.camera);
|
|
|
|
// } else {
|
|
|
|
// _getVideoFromPictureOrCamera(ImageSource.camera);
|
|
|
|
// }
|
|
|
|
// if (Navigator.canPop(context)) {
|
|
|
|
// Navigator.pop(context);
|
|
|
|
// }
|
|
|
|
// }, Permission.camera);
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
width: double.infinity,
|
|
...
|
...
|
@@ -223,9 +1306,13 @@ class _ChefIntroducePageState extends State<ChefIntroducePage> { |
|
|
|
// Platform.isAndroid
|
|
|
|
// ? Permission.storage
|
|
|
|
// : Permission.photos);
|
|
|
|
|
|
|
|
Utils.getPickPermission(context, () {
|
|
|
|
_getFromPictureOrCamera(
|
|
|
|
_uploadImageProvider.firstImage, ImageSource.gallery);
|
|
|
|
if (fileType == FileType.image) {
|
|
|
|
_getFromPictureOrCamera(index, ImageSource.gallery);
|
|
|
|
} else {
|
|
|
|
_getVideoFromPictureOrCamera(ImageSource.gallery);
|
|
|
|
}
|
|
|
|
if (Navigator.canPop(context)) {
|
|
|
|
Navigator.pop(context);
|
|
|
|
}
|
|
...
|
...
|
@@ -233,6 +1320,22 @@ class _ChefIntroducePageState extends State<ChefIntroducePage> { |
|
|
|
Platform.isAndroid
|
|
|
|
? Permission.storage
|
|
|
|
: Permission.photos);
|
|
|
|
|
|
|
|
// Utils.getPickPermission(context, () {
|
|
|
|
// if (fileType == FileType.image) {
|
|
|
|
// pickAsset(RequestType.image);
|
|
|
|
// } else {
|
|
|
|
// _getVideoFromPictureOrCamera(ImageSource.gallery);
|
|
|
|
// }
|
|
|
|
// // //
|
|
|
|
// // _getFromPictureOrCamera(ImageSource.gallery);
|
|
|
|
// if (Navigator.canPop(context)) {
|
|
|
|
// Navigator.pop(context);
|
|
|
|
// }
|
|
|
|
// },
|
|
|
|
// Platform.isAndroid
|
|
|
|
// ? Permission.storage
|
|
|
|
// : Permission.photos);
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
width: double.infinity,
|
|
...
|
...
|
@@ -276,244 +1379,101 @@ class _ChefIntroducePageState extends State<ChefIntroducePage> { |
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
Widget _uploadImage({EdgeInsets padding = EdgeInsets.zero}) {
|
|
|
|
return _uploadImageProvider.firstImage.file != null ||
|
|
|
|
(_uploadImageProvider.firstImage.qiniuUrl != null &&
|
|
|
|
_uploadImageProvider.firstImage.qiniuUrl != '')
|
|
|
|
? InkWell(
|
|
|
|
onTap: () {
|
|
|
|
double process;
|
|
|
|
String qiniuUrl;
|
|
|
|
List<String> tempList = [];
|
|
|
|
// if (title == '头像') {
|
|
|
|
process = _uploadImageProvider.firstImage.process;
|
|
|
|
qiniuUrl = _uploadImageProvider.firstImage.qiniuUrl;
|
|
|
|
// } else {
|
|
|
|
// process = _uploadImageProvider.erweima.process;
|
|
|
|
// qiniuUrl = _uploadImageProvider.erweima.qiniuUrl;
|
|
|
|
// }
|
|
|
|
|
|
|
|
if (qiniuUrl != null && qiniuUrl != '') {
|
|
|
|
// tempList.add(qiniuUrl);
|
|
|
|
|
|
|
|
// ///没有上传完成的不可以点击
|
|
|
|
// _showPhotoView(context, 0, tempList);
|
|
|
|
|
|
|
|
// _uploadImageProvider.firstImage.qiniuUrl = null;
|
|
|
|
// _uploadImageProvider.firstImage.process = 0;
|
|
|
|
// setState(() {});
|
|
|
|
FocusScope.of(context).requestFocus(FocusNode());
|
|
|
|
_openModalBottomSheet(context);
|
|
|
|
// Utils.getPickPermission(context, () {
|
|
|
|
// _getFromPictureOrCamera(
|
|
|
|
// _uploadImageProvider.firstImage,
|
|
|
|
// ImageSource.gallery);
|
|
|
|
// },
|
|
|
|
// Platform.isAndroid
|
|
|
|
// ? Permission.storage
|
|
|
|
// : Permission.photos);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
child: Stack(alignment: Alignment.bottomCenter, children: [
|
|
|
|
Stack(clipBehavior: Clip.none, children: [
|
|
|
|
_uploadImageProvider.firstImage.qiniuUrl != null &&
|
|
|
|
_uploadImageProvider.firstImage.qiniuUrl != ''
|
|
|
|
? Center(
|
|
|
|
child: Image.network(
|
|
|
|
_uploadImageProvider.firstImage.qiniuUrl,
|
|
|
|
fit: BoxFit.contain,
|
|
|
|
// width: double.infinity,
|
|
|
|
// width: ScreenUtil()
|
|
|
|
// .setWidth(imgSize * 2),
|
|
|
|
// height: ScreenUtil().setWidth(
|
|
|
|
// _uploadImageProvider.imgSizefirstImage * 2),
|
|
|
|
))
|
|
|
|
: Center(
|
|
|
|
child: Image.file(
|
|
|
|
_uploadImageProvider.firstImage.file,
|
|
|
|
fit: BoxFit.contain,
|
|
|
|
// width: double.infinity,
|
|
|
|
// width: ScreenUtil()
|
|
|
|
// .setWidth(imgSize * 2),
|
|
|
|
// height: ScreenUtil().setWidth(
|
|
|
|
// _uploadImageProvider.imgSizefirstImage * 2),
|
|
|
|
)),
|
|
|
|
Positioned(
|
|
|
|
left: 0,
|
|
|
|
top: 0,
|
|
|
|
right: padding.right,
|
|
|
|
child: (_uploadImageProvider.firstImage.file != null) &&
|
|
|
|
_uploadImageProvider.firstImage.process != 1 &&
|
|
|
|
_uploadImageProvider.firstImage.process != 0.01
|
|
|
|
? Container(
|
|
|
|
width: ScreenUtil().screenWidth,
|
|
|
|
height: w(_uploadImageProvider.imgSizefirstImage),
|
|
|
|
color: MyColours.color_4D000000,
|
|
|
|
child: Center(
|
|
|
|
child: Text('上传中',
|
|
|
|
style:
|
|
|
|
TextStyle(color: MyColours.color_F8F9FD)),
|
|
|
|
),
|
|
|
|
)
|
|
|
|
: Container()),
|
|
|
|
if (_uploadImageProvider.firstImage.process == 1)
|
|
|
|
Positioned(
|
|
|
|
top: 0,
|
|
|
|
right: 0,
|
|
|
|
child: GestureDetector(
|
|
|
|
child: Image.asset(
|
|
|
|
Utils.getImgPath("delete"),
|
|
|
|
width: ScreenUtil().setWidth(40),
|
|
|
|
height: ScreenUtil().setWidth(40),
|
|
|
|
),
|
|
|
|
onTap: () {
|
|
|
|
//已经传到服务器,弹提醒窗口,是否删除
|
|
|
|
//修改之前有内容,则弹框
|
|
|
|
DialogUtil.cupertinoAlertDialog(context,
|
|
|
|
title: "", content: "是否确定删除该照片?", lCallback: () {
|
|
|
|
print("取消");
|
|
|
|
}, rCallback: () {
|
|
|
|
_uploadImageProvider.firstImage.qiniuUrl = null;
|
|
|
|
_uploadImageProvider.firstImage.file = null;
|
|
|
|
_uploadImageProvider.firstImage.isUpload = false;
|
|
|
|
_uploadImageProvider.firstImage.process = 0.01;
|
|
|
|
setState(() {});
|
|
|
|
});
|
|
|
|
},
|
|
|
|
))
|
|
|
|
]),
|
|
|
|
_uploadImageProvider.firstImage.process == 1
|
|
|
|
? Container(
|
|
|
|
width: w(150),
|
|
|
|
height: w(30),
|
|
|
|
color: MyColours.color_4D000000,
|
|
|
|
alignment: Alignment.center,
|
|
|
|
margin: padding,
|
|
|
|
child: Text(
|
|
|
|
'点击图片可以更换',
|
|
|
|
style: TextStyle(
|
|
|
|
color: MyColours.color_F8F9FD,
|
|
|
|
fontSize: font(14),
|
|
|
|
fontWeight: FontWeight.bold),
|
|
|
|
))
|
|
|
|
: SizedBox(),
|
|
|
|
]))
|
|
|
|
: InkWell(
|
|
|
|
onTap: () {
|
|
|
|
// double process;
|
|
|
|
// String qiniuUrl;
|
|
|
|
// List<String> tempList = [];
|
|
|
|
// if (title == '头像') {
|
|
|
|
// process = _uploadImageProvider.touxiang.process;
|
|
|
|
// qiniuUrl = _uploadImageProvider.touxiang.qiniuUrl;
|
|
|
|
// } else {
|
|
|
|
// process = _uploadImageProvider.erweima.process;
|
|
|
|
// qiniuUrl = _uploadImageProvider.erweima.qiniuUrl;
|
|
|
|
// }
|
|
|
|
|
|
|
|
// if (qiniuUrl != null && qiniuUrl != '') {
|
|
|
|
// tempList.add(qiniuUrl);
|
|
|
|
|
|
|
|
// ///没有上传完成的不可以点击
|
|
|
|
// _showPhotoView(context, 0, tempList);
|
|
|
|
// } else {
|
|
|
|
// Utils.getPickPermission(context, () {
|
|
|
|
// _getFromPictureOrCamera(
|
|
|
|
// _uploadImageProvider.firstImage, ImageSource.gallery);
|
|
|
|
// }, Platform.isAndroid ? Permission.storage : Permission.photos);
|
|
|
|
FocusScope.of(context).requestFocus(FocusNode());
|
|
|
|
_openModalBottomSheet(context);
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
color: MyColours.color_d9d9d9,
|
|
|
|
width: double.infinity,
|
|
|
|
height: w(_uploadImageProvider.imgSizefirstImage),
|
|
|
|
margin: padding,
|
|
|
|
child: Column(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
|
|
children: [
|
|
|
|
// VEmptyView(80),
|
|
|
|
Image.asset(
|
|
|
|
Utils.getImgPath('add_img'),
|
|
|
|
width: w(63),
|
|
|
|
),
|
|
|
|
VEmptyView(28),
|
|
|
|
Container(
|
|
|
|
width: w(139),
|
|
|
|
height: w(60),
|
|
|
|
child: Text(
|
|
|
|
'点击上传照片\n为了更好的效果\n建议上传4:3照片',
|
|
|
|
textAlign: TextAlign.center,
|
|
|
|
style: TextStyle(
|
|
|
|
height: 1.4,
|
|
|
|
color: MyColours.color_ffffff,
|
|
|
|
fontSize: font(14),
|
|
|
|
fontWeight: FontWeight.bold),
|
|
|
|
))
|
|
|
|
],
|
|
|
|
),
|
|
|
|
));
|
|
|
|
}
|
|
|
|
|
|
|
|
///无介绍
|
|
|
|
Widget _noTextWidget() {
|
|
|
|
return SizedBox();
|
|
|
|
// return Column(
|
|
|
|
// children: [
|
|
|
|
// _uploadImage(),
|
|
|
|
// VEmptyView(18),
|
|
|
|
// ],
|
|
|
|
// );
|
|
|
|
}
|
|
|
|
|
|
|
|
///图文分开
|
|
|
|
Widget _separateWidget() {
|
|
|
|
return Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
|
|
|
// _introduceWidget(EdgeInsets.all(w(15)),
|
|
|
|
// boxDecoration: BoxDecoration(color: MyColours.color_ffffff)),
|
|
|
|
// VEmptyView(18),
|
|
|
|
_uploadImage(),
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
///视频
|
|
|
|
Future _getVideoFromPictureOrCamera(ImageSource imageSource) async {
|
|
|
|
final pickedFile = await picker.pickVideo(
|
|
|
|
source: imageSource, maxDuration: const Duration(minutes: 2));
|
|
|
|
if (pickedFile != null) {
|
|
|
|
int key = data.length; //上传变量key
|
|
|
|
// String ddd = Utils.getPicSuffix(pickedFile.path); //获取后缀MP4
|
|
|
|
// print(ddd);
|
|
|
|
await VideoCompress.setLogLevel(0);
|
|
|
|
final info = await VideoCompress.getMediaInfo(
|
|
|
|
pickedFile.path); //视频信息:时长、像素(宽高)、大小、path
|
|
|
|
String duration = '00:00';
|
|
|
|
if (info != null) {
|
|
|
|
//限制视频时长
|
|
|
|
if (info.duration > 30000 || info.duration < 0) {
|
|
|
|
Utils.showToast('请选择30秒以内的视频');
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
duration = VideoUtils.getDuration(
|
|
|
|
info.duration,
|
|
|
|
); //转化视频时长单位(00:13、 02:00)
|
|
|
|
}
|
|
|
|
UploadImgModel uploadImgModel = UploadImgModel(); //图
|
|
|
|
_uploadImageProvider.setDynamicValue('${key}', uploadImgModel);
|
|
|
|
|
|
|
|
Widget _item(String title, {bool select, GestureTapCallback onTap}) {
|
|
|
|
return InkWell(
|
|
|
|
onTap: onTap,
|
|
|
|
child: Container(
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
border: Border(
|
|
|
|
bottom: BorderSide(
|
|
|
|
color: MyColours.color_E7E7E7, width: w(0.5)))),
|
|
|
|
margin: EdgeInsets.only(left: w(16)),
|
|
|
|
padding: EdgeInsets.only(top: w(12), bottom: w(12), right: w(16)),
|
|
|
|
child: Row(
|
|
|
|
children: [
|
|
|
|
Text(
|
|
|
|
title,
|
|
|
|
style: TextStyle(
|
|
|
|
color: MyColours.color_515151,
|
|
|
|
fontSize: ScreenUtil().setWidth(32)),
|
|
|
|
),
|
|
|
|
Spacer(),
|
|
|
|
Container(
|
|
|
|
padding:
|
|
|
|
EdgeInsets.symmetric(horizontal: w(7), vertical: w(4)),
|
|
|
|
child: Image.asset(
|
|
|
|
Utils.getImgPath(select ? 'swich_on' : 'swich_off'),
|
|
|
|
width: w(44),
|
|
|
|
),
|
|
|
|
)
|
|
|
|
],
|
|
|
|
)));
|
|
|
|
AdditionModel additionModel = AdditionModel();
|
|
|
|
additionModel.type = '3';
|
|
|
|
additionModel.image = uploadImgModel;
|
|
|
|
data.add(additionModel);
|
|
|
|
//获取视频封面图
|
|
|
|
String thumbnailPathString =
|
|
|
|
await VideoUtils.getThumbnailFile(pickedFile.path);
|
|
|
|
File thumbnailPath = File(thumbnailPathString);
|
|
|
|
//视频数据赋值:封面、时长、类型、进度、path
|
|
|
|
UploadImgModel imgModel = _uploadImageProvider.getDynamicValue('${key}');
|
|
|
|
setState(() {
|
|
|
|
imgModel.file = File(pickedFile.path);
|
|
|
|
imgModel.process = 0.01;
|
|
|
|
imgModel.fileType = FileType.video;
|
|
|
|
imgModel.thumbnailPath = thumbnailPath;
|
|
|
|
imgModel.duration = duration;
|
|
|
|
imgModel.qiniuUrl = null;
|
|
|
|
});
|
|
|
|
//上传文件准备
|
|
|
|
File file = File(pickedFile.path);
|
|
|
|
//是否需要压缩
|
|
|
|
bool need = await VideoUtils.shouldCompress(pickedFile.path);
|
|
|
|
if (need) {
|
|
|
|
showCompress = true;
|
|
|
|
setState(() {});
|
|
|
|
//需要压缩
|
|
|
|
// 订阅压缩进度
|
|
|
|
_subscription = VideoCompress.compressProgress$.subscribe((progress) {
|
|
|
|
debugPrint('progress: $progress');
|
|
|
|
if (progress.toInt() == 100) {
|
|
|
|
//压缩完成
|
|
|
|
showCompress = false;
|
|
|
|
_subscription.unsubscribe(); // 取消订阅
|
|
|
|
setState(() {});
|
|
|
|
}
|
|
|
|
// 回调进度给外部
|
|
|
|
// if (onProgress != null) {
|
|
|
|
// onProgress!(progress);
|
|
|
|
// }
|
|
|
|
});
|
|
|
|
file = await VideoUtils.compress(pickedFile.path); //压缩后的文件
|
|
|
|
}
|
|
|
|
//开始上传任务
|
|
|
|
UploadImageUtil().startUploadOnlyAddition(
|
|
|
|
context, file, key, true, _uploadImageProvider, () {
|
|
|
|
//上传成功后赋值
|
|
|
|
UploadImgModel imgModel =
|
|
|
|
_uploadImageProvider.getDynamicValue('${key}');
|
|
|
|
AdditionModel additionModel = AdditionModel();
|
|
|
|
additionModel.content = imgModel.qiniuUrl;
|
|
|
|
additionModel.type = '3';
|
|
|
|
additionModel.image = imgModel;
|
|
|
|
data[key] = additionModel;
|
|
|
|
imgAll.add(imgModel.qiniuUrl);
|
|
|
|
setState(() {});
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
print('No image selected.');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
// _baseIndoProvider =
|
|
|
|
// Provider.of<StoreBaseIndoProvider>(context, listen: false);
|
|
|
|
_uploadImageProvider =
|
|
|
|
Provider.of<UploadImageProvider>(context, listen: true);
|
|
|
|
|
|
|
|
_marketingCenterProvider =
|
|
|
|
marketingCenterProvider =
|
|
|
|
Provider.of<MarketingCenterProvider>(context, listen: true);
|
|
|
|
bool hasVedio = data.any((element) => element.type == '3');
|
|
|
|
return KeyboardDismissOnTap(
|
|
|
|
child: Scaffold(
|
|
|
|
backgroundColor: MyColours.color_ffffff,
|
|
...
|
...
|
@@ -529,198 +1489,372 @@ class _ChefIntroducePageState extends State<ChefIntroducePage> { |
|
|
|
children: [
|
|
|
|
Expanded(
|
|
|
|
child: SingleChildScrollView(
|
|
|
|
controller: controller,
|
|
|
|
child: Column(
|
|
|
|
children: [
|
|
|
|
// _selectBtnWidget(),
|
|
|
|
// VEmptyView(24),
|
|
|
|
// Container(
|
|
|
|
// alignment: Alignment.centerLeft,
|
|
|
|
// padding: EdgeInsets.only(left: w(16)),
|
|
|
|
// height: w(48),
|
|
|
|
// child: Text(
|
|
|
|
// '效果预览',
|
|
|
|
// style: TextStyle(
|
|
|
|
// fontSize: font(16),
|
|
|
|
// color: MyColours.color_515151),
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// VEmptyView(24),
|
|
|
|
_item('预订安排通知中附加主厨文字介绍', select: addChefIntroduce,
|
|
|
|
_item('预订通知中展示主厨介绍', select: addStoreIntroduce,
|
|
|
|
onTap: () {
|
|
|
|
setState(() {
|
|
|
|
addChefIntroduce = !addChefIntroduce;
|
|
|
|
addStoreIntroduce = !addStoreIntroduce;
|
|
|
|
});
|
|
|
|
}),
|
|
|
|
|
|
|
|
VEmptyView(24),
|
|
|
|
//输入框
|
|
|
|
Container(
|
|
|
|
width: double.infinity,
|
|
|
|
margin: EdgeInsets.symmetric(
|
|
|
|
horizontal: ScreenUtil().setWidth(40)),
|
|
|
|
padding: EdgeInsets.symmetric(
|
|
|
|
horizontal: ScreenUtil().setWidth(40),
|
|
|
|
vertical: ScreenUtil().setWidth(20)),
|
|
|
|
alignment: Alignment.topLeft,
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: MyColours.color_ffffff,
|
|
|
|
border: Border.all(
|
|
|
|
color: MyColours.color_DBDBDB,
|
|
|
|
width: ScreenUtil().setWidth(2)),
|
|
|
|
borderRadius: BorderRadius.circular(
|
|
|
|
ScreenUtil().setWidth(20))),
|
|
|
|
child: TextField(
|
|
|
|
controller: chefIntroduceC,
|
|
|
|
focusNode: chefIntroduceNode,
|
|
|
|
style: TextStyle(
|
|
|
|
color: MyColours.color_515151,
|
|
|
|
fontSize: ScreenUtil().setSp(28),
|
|
|
|
textBaseline: TextBaseline.alphabetic),
|
|
|
|
textAlignVertical: TextAlignVertical.center,
|
|
|
|
maxLines: 5,
|
|
|
|
maxLength: 100,
|
|
|
|
decoration: InputDecoration(
|
|
|
|
hintText: "点击录入餐厅介绍文字信息,最多100个汉字。",
|
|
|
|
hintStyle: TextStyle(
|
|
|
|
color: MyColours.color_999999,
|
|
|
|
fontSize: ScreenUtil().setSp(28),
|
|
|
|
),
|
|
|
|
contentPadding: EdgeInsets.zero,
|
|
|
|
border: OutlineInputBorder(
|
|
|
|
borderSide: BorderSide.none),
|
|
|
|
),
|
|
|
|
keyboardType: TextInputType.multiline,
|
|
|
|
onChanged: (value) {
|
|
|
|
setState(() {
|
|
|
|
// currentRemark = value ?? "";
|
|
|
|
});
|
|
|
|
}),
|
|
|
|
_textfield(
|
|
|
|
'标题名称',
|
|
|
|
'请输入',
|
|
|
|
titleC,
|
|
|
|
titleCNode,
|
|
|
|
),
|
|
|
|
VEmptyView(24),
|
|
|
|
Padding(
|
|
|
|
padding: EdgeInsets.symmetric(horizontal: w(20)),
|
|
|
|
child: MyDivider(
|
|
|
|
double.infinity,
|
|
|
|
w(0.5),
|
|
|
|
color: MyColours.color_DBDBDB,
|
|
|
|
)),
|
|
|
|
VEmptyView(24),
|
|
|
|
// _selectBtnWidget(),
|
|
|
|
_item('预订安排通知中附加主厨介绍图片', select: addChefImge, onTap: () {
|
|
|
|
setState(() {
|
|
|
|
addChefImge = !addChefImge;
|
|
|
|
});
|
|
|
|
}),
|
|
|
|
|
|
|
|
VEmptyView(24),
|
|
|
|
_separateWidget(),
|
|
|
|
VEmptyView(24),
|
|
|
|
_item('主厨介绍文字显示在图片上', select: addAbove, onTap: () {
|
|
|
|
setState(() {
|
|
|
|
addAbove = !addAbove;
|
|
|
|
});
|
|
|
|
}),
|
|
|
|
if (data.length > 0)
|
|
|
|
Padding(
|
|
|
|
padding: EdgeInsets.symmetric(
|
|
|
|
// horizontal: ScreenUtil().setWidth(32),
|
|
|
|
vertical: ScreenUtil().setWidth(26)),
|
|
|
|
child: ReorderableListView(
|
|
|
|
shrinkWrap: true,
|
|
|
|
scrollController: controller,
|
|
|
|
children: _scrolleWidget(),
|
|
|
|
onReorder: (int oldIndex, int newIndex) async {
|
|
|
|
print(newIndex);
|
|
|
|
if (oldIndex < newIndex) {
|
|
|
|
newIndex -= 1;
|
|
|
|
}
|
|
|
|
print(newIndex);
|
|
|
|
|
|
|
|
// var childold = tableManagerModel.areas[oldIndex];
|
|
|
|
// Map<String, String> params = {
|
|
|
|
// 'sid': Provider.of<UserModel>(context, listen: false)
|
|
|
|
// .user
|
|
|
|
// .sellerid,
|
|
|
|
// 'regionid': childold.rid,
|
|
|
|
// 'order_o': tableManagerModel.areas[newIndex].orderId,
|
|
|
|
// 'sort': oldIndex < newIndex ? '2' : '1'
|
|
|
|
// };
|
|
|
|
var child = data.removeAt(oldIndex);
|
|
|
|
data.insert(newIndex, child);
|
|
|
|
setState(() {});
|
|
|
|
// await tableManagerModel.sortByRegion(context, params);
|
|
|
|
// //刷新前一页数据
|
|
|
|
// bus.emit('refresh_table_area');
|
|
|
|
},
|
|
|
|
)),
|
|
|
|
|
|
|
|
//输入框
|
|
|
|
// Container(
|
|
|
|
// width: double.infinity,
|
|
|
|
// margin: EdgeInsets.symmetric(
|
|
|
|
// horizontal: ScreenUtil().setWidth(40)),
|
|
|
|
// padding: EdgeInsets.symmetric(
|
|
|
|
// horizontal: ScreenUtil().setWidth(40),
|
|
|
|
// vertical: ScreenUtil().setWidth(20)),
|
|
|
|
// alignment: Alignment.topLeft,
|
|
|
|
// decoration: BoxDecoration(
|
|
|
|
// color: MyColours.color_ffffff,
|
|
|
|
// border: Border.all(
|
|
|
|
// color: MyColours.color_DBDBDB,
|
|
|
|
// width: ScreenUtil().setWidth(2)),
|
|
|
|
// borderRadius: BorderRadius.circular(
|
|
|
|
// ScreenUtil().setWidth(20))),
|
|
|
|
// child: TextField(
|
|
|
|
// controller: storeIntroduceC,
|
|
|
|
// focusNode: storeIntroduceNode,
|
|
|
|
// style: TextStyle(
|
|
|
|
// color: MyColours.color_515151,
|
|
|
|
// fontSize: ScreenUtil().setSp(28),
|
|
|
|
// textBaseline: TextBaseline.alphabetic),
|
|
|
|
// textAlignVertical: TextAlignVertical.center,
|
|
|
|
// maxLines: 5,
|
|
|
|
// maxLength: 500,
|
|
|
|
// decoration: InputDecoration(
|
|
|
|
// hintText: "点击录入餐厅介绍文字信息,最多100个汉字。",
|
|
|
|
// hintStyle: TextStyle(
|
|
|
|
// color: MyColours.color_999999,
|
|
|
|
// fontSize: ScreenUtil().setSp(28),
|
|
|
|
// ),
|
|
|
|
// contentPadding: EdgeInsets.zero,
|
|
|
|
// border: OutlineInputBorder(
|
|
|
|
// borderSide: BorderSide.none),
|
|
|
|
// ),
|
|
|
|
// keyboardType: TextInputType.multiline,
|
|
|
|
// onChanged: (value) {
|
|
|
|
// setState(() {
|
|
|
|
// // currentRemark = value ?? "";
|
|
|
|
// });
|
|
|
|
// }),
|
|
|
|
// ),
|
|
|
|
// VEmptyView(24),
|
|
|
|
// Padding(
|
|
|
|
// padding: EdgeInsets.symmetric(horizontal: w(20)),
|
|
|
|
// child: MyDivider(
|
|
|
|
// double.infinity,
|
|
|
|
// w(0.5),
|
|
|
|
// color: MyColours.color_DBDBDB,
|
|
|
|
// )),
|
|
|
|
// VEmptyView(24),
|
|
|
|
// // _selectBtnWidget(),
|
|
|
|
// _item('预订安排通知中附加餐厅介绍图片', select: addStoreImge, onTap: () {
|
|
|
|
// setState(() {
|
|
|
|
// addStoreImge = !addStoreImge;
|
|
|
|
// });
|
|
|
|
// }),
|
|
|
|
|
|
|
|
// VEmptyView(24),
|
|
|
|
// // Container(
|
|
|
|
// // alignment: Alignment.centerLeft,
|
|
|
|
// // padding: EdgeInsets.only(left: w(16)),
|
|
|
|
// // height: w(48),
|
|
|
|
// // child: Text(
|
|
|
|
// // '效果预览',
|
|
|
|
// // style: TextStyle(
|
|
|
|
// // fontSize: font(16),
|
|
|
|
// // color: MyColours.color_515151),
|
|
|
|
// // ),
|
|
|
|
// // ),
|
|
|
|
// // VEmptyView(24),
|
|
|
|
// // currIndex == 0
|
|
|
|
// // ? _noTextWidget()
|
|
|
|
// // : currIndex == 1
|
|
|
|
// // ? _mergingWidget()
|
|
|
|
// // :
|
|
|
|
// _separateWidget(),
|
|
|
|
// VEmptyView(24),
|
|
|
|
// _item('餐厅介绍文字显示在第一张图片上', select: addAbove, onTap: () {
|
|
|
|
// setState(() {
|
|
|
|
// addAbove = !addAbove;
|
|
|
|
// });
|
|
|
|
// }),
|
|
|
|
|
|
|
|
VEmptyView(24),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
)),
|
|
|
|
Container(
|
|
|
|
color: MyColours.color_ffffff,
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
left: w(45), right: w(45), top: w(12), bottom: w(25)),
|
|
|
|
child: RoundButton(
|
|
|
|
text: '保存',
|
|
|
|
gradientStart: MyColours.color_199095,
|
|
|
|
gradientEnd: MyColours.color_199095,
|
|
|
|
// borderColor: MyColours.color_999999,
|
|
|
|
radius: r(5),
|
|
|
|
fontSize: 34,
|
|
|
|
height: w(40),
|
|
|
|
isBold: true,
|
|
|
|
onPressed: () async {
|
|
|
|
FocusScope.of(context)
|
|
|
|
.requestFocus(FocusNode()); //点击空白处隐藏键盘
|
|
|
|
|
|
|
|
if (addChefIntroduce &&
|
|
|
|
chefIntroduceC.text.trim().length == 0) {
|
|
|
|
Utils.showToast('请输入主厨介绍文字!');
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if (addChefImge &&
|
|
|
|
_uploadImageProvider.firstImage.qiniuUrl == null) {
|
|
|
|
Utils.showToast('请上传图片!');
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
Column(
|
|
|
|
children: [
|
|
|
|
Container(
|
|
|
|
padding: EdgeInsets.only(top: w(15)),
|
|
|
|
child: Row(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
|
|
children: [
|
|
|
|
InkWell(
|
|
|
|
onTap: () {
|
|
|
|
if (!hasVedio) {
|
|
|
|
_openModalBottomSheet(context, data.length,
|
|
|
|
fileType: FileType.video);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
width: w(77),
|
|
|
|
height: w(34),
|
|
|
|
alignment: Alignment.center,
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
borderRadius: BorderRadius.circular(r(5)),
|
|
|
|
border: Border.all(
|
|
|
|
width: w(1),
|
|
|
|
color: hasVedio
|
|
|
|
? MyColours.color_999999
|
|
|
|
: MyColours.color_438E93)),
|
|
|
|
child: Text(
|
|
|
|
'+视频',
|
|
|
|
style: TextStyle(
|
|
|
|
color: hasVedio
|
|
|
|
? MyColours.color_999999
|
|
|
|
: MyColours.color_000000,
|
|
|
|
fontSize: font(14)),
|
|
|
|
),
|
|
|
|
)),
|
|
|
|
HEmptyView(20),
|
|
|
|
InkWell(
|
|
|
|
onTap: () {
|
|
|
|
_openModalBottomSheet(context, data.length);
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
width: w(77),
|
|
|
|
height: w(34),
|
|
|
|
alignment: Alignment.center,
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
borderRadius: BorderRadius.circular(r(5)),
|
|
|
|
border: Border.all(
|
|
|
|
width: w(1),
|
|
|
|
color: MyColours.color_438E93)),
|
|
|
|
child: Text(
|
|
|
|
'+图片',
|
|
|
|
style: TextStyle(
|
|
|
|
color: MyColours.color_000000,
|
|
|
|
fontSize: font(14)),
|
|
|
|
),
|
|
|
|
)),
|
|
|
|
HEmptyView(20),
|
|
|
|
InkWell(
|
|
|
|
onTap: () {
|
|
|
|
AdditionModel additionModel1 = AdditionModel();
|
|
|
|
// additionModel1.content =
|
|
|
|
// 'webenkjfkdfjakdfjaldfkjaldfjaldf';
|
|
|
|
additionModel1.type = '2';
|
|
|
|
// additionModel1.order = data.length;
|
|
|
|
|
|
|
|
if (addChefImge &&
|
|
|
|
_uploadImageProvider.firstImage.process < 1) {
|
|
|
|
Utils.showToast('正在上传图片,请稍等');
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
data.add(additionModel1);
|
|
|
|
setState(() {});
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
width: w(77),
|
|
|
|
height: w(34),
|
|
|
|
alignment: Alignment.center,
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
borderRadius: BorderRadius.circular(r(5)),
|
|
|
|
border: Border.all(
|
|
|
|
width: w(1),
|
|
|
|
color: MyColours.color_438E93)),
|
|
|
|
child: Text(
|
|
|
|
'+文字',
|
|
|
|
style: TextStyle(
|
|
|
|
color: MyColours.color_000000,
|
|
|
|
fontSize: font(14)),
|
|
|
|
),
|
|
|
|
)),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
VEmptyView(24),
|
|
|
|
Text(
|
|
|
|
'注:\n1. 为了保证客户访问速度,只能有1个视频,时常不超过2分钟\n2. 上下拖动可以调整展示顺序',
|
|
|
|
style: TextStyle(
|
|
|
|
height: 1.5,
|
|
|
|
color: MyColours.color_999999,
|
|
|
|
fontSize: font(12)),
|
|
|
|
),
|
|
|
|
Container(
|
|
|
|
color: MyColours.color_ffffff,
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
left: w(45), right: w(45), top: w(13), bottom: w(25)),
|
|
|
|
child: RoundButton(
|
|
|
|
text: '保存',
|
|
|
|
gradientStart: MyColours.color_199095,
|
|
|
|
gradientEnd: MyColours.color_199095,
|
|
|
|
// borderColor: MyColours.color_999999,
|
|
|
|
radius: r(5),
|
|
|
|
fontSize: 34,
|
|
|
|
height: w(40),
|
|
|
|
isBold: true,
|
|
|
|
onPressed: () async {
|
|
|
|
FocusScope.of(context)
|
|
|
|
.requestFocus(FocusNode()); //点击空白处隐藏键盘
|
|
|
|
|
|
|
|
// List<String> images = [];
|
|
|
|
// if (_uploadImageProvider.storeImage1.qiniuUrl != null &&
|
|
|
|
// _uploadImageProvider.storeImage1.qiniuUrl != '') {
|
|
|
|
// images.add(_uploadImageProvider.storeImage1.qiniuUrl);
|
|
|
|
// }
|
|
|
|
// if (_uploadImageProvider.storeImage2.qiniuUrl != null &&
|
|
|
|
// _uploadImageProvider.storeImage2.qiniuUrl != '') {
|
|
|
|
// images.add(_uploadImageProvider.storeImage2.qiniuUrl);
|
|
|
|
// }
|
|
|
|
// if (_uploadImageProvider.storeImage3.qiniuUrl != null &&
|
|
|
|
// _uploadImageProvider.storeImage3.qiniuUrl != '') {
|
|
|
|
// images.add(_uploadImageProvider.storeImage3.qiniuUrl);
|
|
|
|
// }
|
|
|
|
// if (_uploadImageProvider.storeImage3.qiniuUrl != null &&
|
|
|
|
// _uploadImageProvider.storeImage3.qiniuUrl != '') {
|
|
|
|
// images.add(_uploadImageProvider.storeImage3.qiniuUrl);
|
|
|
|
// }
|
|
|
|
// if (images.length == 0) {
|
|
|
|
// Utils.showToast('请至少上传一张图片!');
|
|
|
|
// return false;
|
|
|
|
// }
|
|
|
|
|
|
|
|
//接口
|
|
|
|
Map chefData = {
|
|
|
|
'introduce': chefIntroduceC.text,
|
|
|
|
'image': _uploadImageProvider.firstImage.qiniuUrl,
|
|
|
|
'is_introduce': addChefIntroduce ? '1' : '0',
|
|
|
|
'is_images': addChefImge ? '1' : '0',
|
|
|
|
'is_above': addAbove ? '1' : '0'
|
|
|
|
};
|
|
|
|
|
|
|
|
Map<String, String> params = {
|
|
|
|
'sid': Provider.of<UserModel>(context, listen: false)
|
|
|
|
.user
|
|
|
|
.sellerid,
|
|
|
|
'chef': json.encode(chefData)
|
|
|
|
};
|
|
|
|
|
|
|
|
bool success = await _marketingCenterProvider
|
|
|
|
.setSellerTemplateConf(context, params,
|
|
|
|
showLoading: true);
|
|
|
|
if (success) {
|
|
|
|
// imgAll和images 比较,挑出不一样的,删除七牛云
|
|
|
|
Set<String> difference = Set.from(imgAll)
|
|
|
|
..removeAll(
|
|
|
|
[_uploadImageProvider.firstImage.qiniuUrl]);
|
|
|
|
List<String> differenceList =
|
|
|
|
difference.toList(); //需要删除的图片
|
|
|
|
if (differenceList.length > 0) {
|
|
|
|
String delImgs =
|
|
|
|
Utils.listToStringEnglish(differenceList);
|
|
|
|
|
|
|
|
_uploadImageProvider.deleteImg(context, delImgs,
|
|
|
|
needToast: false);
|
|
|
|
}
|
|
|
|
Utils.showToast('保存成功');
|
|
|
|
if (Navigator.canPop(context)) {
|
|
|
|
Navigator.pop(context);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
),
|
|
|
|
if (titleC.text.trim().length == 0) {
|
|
|
|
Utils.showToast('请输入标题名称!');
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (addStoreIntroduce && data.length == 0) {
|
|
|
|
Utils.showToast('请录入主厨介绍!');
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
print(data);
|
|
|
|
|
|
|
|
bool can = true;
|
|
|
|
innerloop:
|
|
|
|
for (AdditionModel item in data) {
|
|
|
|
if (item.type == '1' && item.image.process < 1) {
|
|
|
|
Utils.showToast('正在上传,请稍等');
|
|
|
|
// return false;
|
|
|
|
can = false;
|
|
|
|
break innerloop;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
data.removeWhere((element) =>
|
|
|
|
element.type == '2' &&
|
|
|
|
(element.infoC.text.trim() == '' ||
|
|
|
|
element.infoC.text == null));
|
|
|
|
if (can) {
|
|
|
|
List temp = [];
|
|
|
|
List<String> delImgs = [];
|
|
|
|
// String text = '';
|
|
|
|
for (int i = 0; i < data.length; i++) {
|
|
|
|
AdditionModel element = data[i];
|
|
|
|
temp.add({
|
|
|
|
'type': element.type,
|
|
|
|
'content': element.type == '2'
|
|
|
|
? element.infoC.text
|
|
|
|
: element.image.qiniuUrl,
|
|
|
|
'duration': element.type == '3'
|
|
|
|
? element.image.duration
|
|
|
|
: ''
|
|
|
|
});
|
|
|
|
if (element.type == '2') {
|
|
|
|
// text += '${element.infoC.text}\n';
|
|
|
|
} else {
|
|
|
|
delImgs.add(element.image.qiniuUrl);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// List<String> images = [];
|
|
|
|
// for (int i = 0; i < data.length; i++) {
|
|
|
|
// ChangeModel imgModel = data[i];
|
|
|
|
// if (imgModel.image.qiniuUrl != null &&
|
|
|
|
// imgModel.image.qiniuUrl != '') {
|
|
|
|
// images.add(imgModel.image.qiniuUrl);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
|
|
|
|
// if (images.length == 0) {
|
|
|
|
// Utils.showToast('请至少上传一张图片!');
|
|
|
|
// return false;
|
|
|
|
// }
|
|
|
|
// if (text.trim().length > 0) {
|
|
|
|
// //同步店铺信息
|
|
|
|
// _setSellerInfoById(text); //同步店铺简介
|
|
|
|
// }
|
|
|
|
|
|
|
|
//接口
|
|
|
|
Map storeData = {
|
|
|
|
// 'style': currIndex.toString(),
|
|
|
|
// 'seller_name': sellername,
|
|
|
|
'content': jsonEncode(temp),
|
|
|
|
'title': titleC.text,
|
|
|
|
// 'images': json.encode(images),
|
|
|
|
'is_introduce_all':
|
|
|
|
addStoreIntroduce ? '1' : '0',
|
|
|
|
// 'is_images': addStoreImge ? '1' : '0',
|
|
|
|
// 'is_above': addAbove ? '1' : '0'
|
|
|
|
};
|
|
|
|
|
|
|
|
Map<String, String> params = {
|
|
|
|
'sid': Provider.of<UserModel>(context,
|
|
|
|
listen: false)
|
|
|
|
.user
|
|
|
|
.sellerid,
|
|
|
|
'chef': json.encode(storeData)
|
|
|
|
};
|
|
|
|
|
|
|
|
bool success = await marketingCenterProvider
|
|
|
|
.setSellerTemplateConf(context, params,
|
|
|
|
showLoading: true);
|
|
|
|
if (success) {
|
|
|
|
// await VideoUtils.clearTemporaryDirectory();
|
|
|
|
// imgAll和images 比较,挑出不一样的,删除七牛云
|
|
|
|
Set<String> difference = Set.from(imgAll)
|
|
|
|
..removeAll(delImgs);
|
|
|
|
List<String> differenceList =
|
|
|
|
difference.toList(); //需要删除的图片
|
|
|
|
if (differenceList.length > 0) {
|
|
|
|
String delImgs =
|
|
|
|
Utils.listToStringEnglish(differenceList);
|
|
|
|
|
|
|
|
_uploadImageProvider.deleteImg(
|
|
|
|
context, delImgs,
|
|
|
|
needToast: false);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (Navigator.canPop(context)) {
|
|
|
|
Navigator.pop(context);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}),
|
|
|
|
)
|
|
|
|
],
|
|
|
|
)
|
|
|
|
],
|
|
|
|
)));
|
...
|
...
|
|