Commit ee8fa1e15de2934e05974f099c63dcc59f177ec9

Authored by wdn127929
1 parent 842836d6

iOS视频[拍摄,麦克风权限申请 && 优惠券菜品图5:4裁剪压缩

... ... @@ -78,6 +78,7 @@ post_install do |installer|
'PERMISSION_NOTIFICATIONS=1',
# dart: PermissionGroup.mediaLibrary
'PERMISSION_MEDIA_LIBRARY=1',
'PERMISSION_MICROPHONE=1',
]
end
end
... ...
... ... @@ -402,6 +402,6 @@ SPEC CHECKSUMS:
webview_flutter: 3603125dfd3bcbc9d8d418c3f80aeecf331c068b
WechatOpenSDK-XCFramework: 36fb2bea0754266c17184adf4963d7e6ff98b69f
PODFILE CHECKSUM: 9f0bd7dbe9f70039fe4541e505d6b5d2ad23ffd6
PODFILE CHECKSUM: 1cefd2e71f0fcfa4f2430db723fe500dadb93e92
COCOAPODS: 1.16.2
... ...
... ... @@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objectVersion = 50;
objects = {
/* Begin PBXBuildFile section */
... ... @@ -547,9 +547,9 @@
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/RunnerProfile.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 534;
CURRENT_PROJECT_VERSION = 5420;
DEVELOPMENT_TEAM = 8J59HM8B82;
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 8J59HM8B82;
ENABLE_BITCODE = NO;
... ... @@ -566,12 +566,12 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
MARKETING_VERSION = 5.3.4;
MARKETING_VERSION = 5.4.2;
PODS_ROOT = "$(inherited)";
PRODUCT_BUNDLE_IDENTIFIER = com.naji.reserveLine;
PRODUCT_NAME = Runner;
PROVISIONING_PROFILE_SPECIFIER = "11.12 naji";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "11.12 naji appstore";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "11.12 naji";
SWIFT_ENABLE_BATCH_MODE = NO;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
... ... @@ -701,13 +701,13 @@
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = "Runner/一键订Debug.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 534;
CURRENT_PROJECT_VERSION = 5420;
DEVELOPMENT_TEAM = 8J59HM8B82;
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 8J59HM8B82;
ENABLE_BITCODE = NO;
FLUTTER_BUILD_MODE = release;
FLUTTER_BUILD_MODE = debug;
FLUTTER_ROOT = /Users/naji2021/Documents/flutter;
FLUTTER_TARGET = "/Users/naji2021/Desktop/Flutter-ReserveApp/lib/main.dart";
FRAMEWORK_SEARCH_PATHS = (
... ... @@ -721,13 +721,13 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
MARKETING_VERSION = 5.3.4;
MARKETING_VERSION = 5.4.2;
PACKAGE_CONFIG = "/Users/naji2021/Desktop/Flutter-ReserveApp/.dart_tool/package_config.json";
PODS_ROOT = "$(inherited)";
PRODUCT_BUNDLE_IDENTIFIER = com.naji.reserveLine;
PRODUCT_NAME = Runner;
PROVISIONING_PROFILE_SPECIFIER = "11.12 naji";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "11.12 naji appstore";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "11.12 naji";
SWIFT_ENABLE_BATCH_MODE = NO;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
... ... @@ -746,9 +746,9 @@
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 534;
CURRENT_PROJECT_VERSION = 5420;
DEVELOPMENT_TEAM = 8J59HM8B82;
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 8J59HM8B82;
ENABLE_BITCODE = NO;
... ... @@ -765,12 +765,12 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
MARKETING_VERSION = 5.3.4;
MARKETING_VERSION = 5.4.2;
PODS_ROOT = "$(inherited)";
PRODUCT_BUNDLE_IDENTIFIER = com.naji.reserveLine;
PRODUCT_NAME = Runner;
PROVISIONING_PROFILE_SPECIFIER = "11.12 naji";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "11.12 naji appstore";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "11.12 naji";
SWIFT_ENABLE_BATCH_MODE = NO;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
... ...
... ... @@ -78,6 +78,9 @@
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>NSMicrophoneUsageDescription</key>
<string>需要您的同意,APP才能使用您的麦克风来录制店铺视频介绍</string>
<key>NSAppleMusicUsageDescription</key>
<string>需要您的同意,APP才能访问媒体资料库</string>
<key>NSCalendarsUsageDescription</key>
... ...
... ... @@ -337,11 +337,20 @@ class MarkStoreModel {
if (json['content'] != null) {
content = [];
if (jsonDecode(json['content']) is List) {
List temp = jsonDecode(json['content']);
if (json['content'] is List) {
List temp = json['content'];
temp.forEach((element) {
content.add(ContentModel.fromJson(element));
});
} else {
if (jsonDecode(json['content']) is List) {
List temp = jsonDecode(json['content']);
temp.forEach((element) {
content.add(ContentModel.fromJson(element));
});
}
}
}
... ... @@ -408,11 +417,18 @@ class MarkChefModel {
isImages = json['is_images'];
if (json['content'] != null) {
content = [];
if (jsonDecode(json['content']) is List) {
List temp = jsonDecode(json['content']);
if (json['content'] is List) {
List temp = json['content'];
temp.forEach((element) {
content.add(ContentModel.fromJson(element));
});
} else {
if (jsonDecode(json['content']) is List) {
List temp = jsonDecode(json['content']);
temp.forEach((element) {
content.add(ContentModel.fromJson(element));
});
}
}
}
... ... @@ -466,11 +482,18 @@ class MarkSignboardModel {
}
if (json['content'] != null) {
content = [];
if (jsonDecode(json['content']) is List) {
List temp = jsonDecode(json['content']);
if (json['content'] is List) {
List temp = json['content'];
temp.forEach((element) {
content.add(ContentModel.fromJson(element));
});
} else {
if (jsonDecode(json['content']) is List) {
List temp = jsonDecode(json['content']);
temp.forEach((element) {
content.add(ContentModel.fromJson(element));
});
}
}
}
... ...
... ... @@ -93,9 +93,10 @@ class _ChefIntroducePageState extends State<ChefIntroducePage> {
FocusNode titleCNode = FocusNode();
final picker = ImagePicker();
Subscription _subscription; //展示压缩进度
bool showCompress = false;
// String compressProcess = '压缩进度:';
@override
void initState() {
... ... @@ -1252,20 +1253,37 @@ class _ChefIntroducePageState extends State<ChefIntroducePage> {
children: <Widget>[
InkWell(
onTap: () {
Utils.getPickPermission(context, () {
if (Platform.isAndroid) {
Utils.getPickPermission(context, () {
if (fileType == FileType.image) {
_getFromPictureOrCamera(index, ImageSource.camera);
} else {
_getVideoFromPictureOrCamera(ImageSource.camera);
}
if (Navigator.canPop(context)) {
Navigator.pop(context);
}
}, Permission.storage);
} else {
if (fileType == FileType.image) {
_getFromPictureOrCamera(index, ImageSource.camera);
Utils.getPickPermission(context, () {
_getFromPictureOrCamera(index, ImageSource.camera);
if (Navigator.canPop(context)) {
Navigator.pop(context);
}
}, Permission.photos);
} else {
_getVideoFromPictureOrCamera(ImageSource.camera);
}
if (Navigator.canPop(context)) {
Navigator.pop(context);
Utils.getPickPermission(context, () async {
Utils.getPickPermission(context, () {
_getVideoFromPictureOrCamera(ImageSource.camera);
if (Navigator.canPop(context)) {
Navigator.pop(context);
}
}, Permission.microphone);
}, Permission.camera);
}
},
Platform.isAndroid
? Permission.storage
: Permission.photos);
}
// Utils.getPickPermission(context, () {
// if (fileType == FileType.image) {
// _getImageFromPictureOrCamera(ImageSource.camera);
... ... @@ -1427,24 +1445,29 @@ class _ChefIntroducePageState extends State<ChefIntroducePage> {
//是否需要压缩
bool need = await VideoUtils.shouldCompress(pickedFile.path);
if (need) {
Subscription _subscription; //展示压缩进度
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);
// }
});
debugPrint('progress: $progress');
// compressProcess = '压缩进度: ${progress.toStringAsFixed(1)}%';
setState(() {});
}, onDone: () {}, onError: (error) {}, cancelOnError: true);
file = await VideoUtils.compress(pickedFile.path); //压缩后的文件
if (file != null) {
//压缩完成
showCompress = false;
_subscription.unsubscribe(); // 取消订阅
setState(() {});
} else {
data.removeLast();
_subscription.unsubscribe(); // 取消订阅
setState(() {});
throw Exception('Failed to compress video');
}
}
//开始上传任务
UploadImageUtil().startUploadOnlyAddition(
... ... @@ -1718,7 +1741,7 @@ class _ChefIntroducePageState extends State<ChefIntroducePage> {
),
VEmptyView(24),
Text(
'注:\n1. 为了保证客户访问速度,只能有1个视频,时常不超过2分钟\n2. 上下拖动可以调整展示顺序',
'注:\n1. 为了保证客户访问速度,只能有1个视频,时常不超过30秒\n2. 上下拖动可以调整展示顺序',
style: TextStyle(
height: 1.5,
color: MyColours.color_999999,
... ...
... ... @@ -93,7 +93,7 @@ class _DishShowPageState extends State<DishShowPage> {
FocusNode titleCNode = FocusNode();
final picker = ImagePicker();
Subscription _subscription; //展示压缩进度
// String compressProcess = '压缩进度:';
bool showCompress = false;
... ... @@ -1257,19 +1257,37 @@ class _DishShowPageState extends State<DishShowPage> {
children: <Widget>[
InkWell(
onTap: () {
Utils.getPickPermission(context, () {
if (Platform.isAndroid) {
Utils.getPickPermission(context, () {
if (fileType == FileType.image) {
_getFromPictureOrCamera(index, ImageSource.camera);
} else {
_getVideoFromPictureOrCamera(ImageSource.camera);
}
if (Navigator.canPop(context)) {
Navigator.pop(context);
}
}, Permission.storage);
} else {
if (fileType == FileType.image) {
_getFromPictureOrCamera(index, ImageSource.camera);
Utils.getPickPermission(context, () {
_getFromPictureOrCamera(index, ImageSource.camera);
if (Navigator.canPop(context)) {
Navigator.pop(context);
}
}, Permission.photos);
} else {
_getVideoFromPictureOrCamera(ImageSource.camera);
}
if (Navigator.canPop(context)) {
Navigator.pop(context);
Utils.getPickPermission(context, () async {
Utils.getPickPermission(context, () {
_getVideoFromPictureOrCamera(ImageSource.camera);
if (Navigator.canPop(context)) {
Navigator.pop(context);
}
}, Permission.microphone);
}, Permission.camera);
}
},
Platform.isAndroid
? Permission.storage
: Permission.photos);
}
// Utils.getPickPermission(context, () {
// if (fileType == FileType.image) {
... ... @@ -1431,25 +1449,30 @@ class _DishShowPageState extends State<DishShowPage> {
File file = File(pickedFile.path);
//是否需要压缩
bool need = await VideoUtils.shouldCompress(pickedFile.path);
if (need) {
if (need) {
Subscription _subscription; //展示压缩进度
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);
// }
});
debugPrint('progress: $progress');
// compressProcess = '压缩进度: ${progress.toStringAsFixed(1)}%';
setState(() {});
}, onDone: () {}, onError: (error) {}, cancelOnError: true);
file = await VideoUtils.compress(pickedFile.path); //压缩后的文件
if (file != null) {
//压缩完成
showCompress = false;
_subscription.unsubscribe(); // 取消订阅
setState(() {});
} else {
data.removeLast();
_subscription.unsubscribe(); // 取消订阅
setState(() {});
throw Exception('Failed to compress video');
}
}
//开始上传任务
UploadImageUtil().startUploadOnlyAddition(
... ... @@ -1722,7 +1745,7 @@ class _DishShowPageState extends State<DishShowPage> {
),
VEmptyView(24),
Text(
'注:\n1. 为了保证客户访问速度,只能有1个视频,时常不超过2分钟\n2. 上下拖动可以调整展示顺序',
'注:\n1. 为了保证客户访问速度,只能有1个视频,时常不超过30秒\n2. 上下拖动可以调整展示顺序',
style: TextStyle(
height: 1.5,
color: MyColours.color_999999,
... ...
... ... @@ -92,7 +92,7 @@ class _ParkInfoPageState extends State<ParkInfoPage> {
FocusNode titleCNode = FocusNode();
final picker = ImagePicker();
Subscription _subscription; //展示压缩进度
// String compressProcess = '压缩进度:';
bool showCompress = false;
... ... @@ -164,10 +164,11 @@ class _ParkInfoPageState extends State<ParkInfoPage> {
? true
: false;
if (marketingCenterProvider.markDataModel.reserve.parkInfo != null &&marketingCenterProvider.markDataModel.reserve.parkInfo
.trim()
.length >
0) {
if (marketingCenterProvider.markDataModel.reserve.parkInfo != null &&
marketingCenterProvider.markDataModel.reserve.parkInfo
.trim()
.length >
0) {
//文字
AdditionModel additionModel = AdditionModel();
... ... @@ -1211,19 +1212,37 @@ class _ParkInfoPageState extends State<ParkInfoPage> {
children: <Widget>[
InkWell(
onTap: () {
Utils.getPickPermission(context, () {
if (Platform.isAndroid) {
Utils.getPickPermission(context, () {
if (fileType == FileType.image) {
_getFromPictureOrCamera(index, ImageSource.camera);
} else {
_getVideoFromPictureOrCamera(ImageSource.camera);
}
if (Navigator.canPop(context)) {
Navigator.pop(context);
}
}, Permission.storage);
} else {
if (fileType == FileType.image) {
_getFromPictureOrCamera(index, ImageSource.camera);
Utils.getPickPermission(context, () {
_getFromPictureOrCamera(index, ImageSource.camera);
if (Navigator.canPop(context)) {
Navigator.pop(context);
}
}, Permission.photos);
} else {
_getVideoFromPictureOrCamera(ImageSource.camera);
}
if (Navigator.canPop(context)) {
Navigator.pop(context);
Utils.getPickPermission(context, () async {
Utils.getPickPermission(context, () {
_getVideoFromPictureOrCamera(ImageSource.camera);
if (Navigator.canPop(context)) {
Navigator.pop(context);
}
}, Permission.microphone);
}, Permission.camera);
}
},
Platform.isAndroid
? Permission.storage
: Permission.photos);
}
// Utils.getPickPermission(context, () {
// if (fileType == FileType.image) {
... ... @@ -1386,24 +1405,29 @@ class _ParkInfoPageState extends State<ParkInfoPage> {
//是否需要压缩
bool need = await VideoUtils.shouldCompress(pickedFile.path);
if (need) {
Subscription _subscription; //展示压缩进度
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);
// }
});
debugPrint('progress: $progress');
// compressProcess = '压缩进度: ${progress.toStringAsFixed(1)}%';
setState(() {});
}, onDone: () {}, onError: (error) {}, cancelOnError: true);
file = await VideoUtils.compress(pickedFile.path); //压缩后的文件
if (file != null) {
//压缩完成
showCompress = false;
_subscription.unsubscribe(); // 取消订阅
setState(() {});
} else {
data.removeLast();
_subscription.unsubscribe(); // 取消订阅
setState(() {});
throw Exception('Failed to compress video');
}
}
//开始上传任务
UploadImageUtil().startUploadOnlyAddition(
... ... @@ -1677,7 +1701,7 @@ class _ParkInfoPageState extends State<ParkInfoPage> {
),
VEmptyView(24),
Text(
'注:\n1. 为了保证客户访问速度,只能有1个视频,时常不超过2分钟\n2. 上下拖动可以调整展示顺序',
'注:\n1. 为了保证客户访问速度,只能有1个视频,时常不超过30秒\n2. 上下拖动可以调整展示顺序',
style: TextStyle(
height: 1.5,
color: MyColours.color_999999,
... ...
... ... @@ -93,9 +93,8 @@ class _StoreIntroducePageState extends State<StoreIntroducePage> {
FocusNode titleCNode = FocusNode();
final picker = ImagePicker();
Subscription _subscription; //展示压缩进度
bool showCompress = false;
// String compressProcess = '压缩进度:';
@override
void initState() {
... ... @@ -118,7 +117,7 @@ class _StoreIntroducePageState extends State<StoreIntroducePage> {
// _uploadImageProvider.storeImage2 = UploadImgModel();
// _uploadImageProvider.storeImage3 = UploadImgModel();
// _uploadImageProvider.storeImage4 = UploadImgModel();
// _subscription?.unsubscribe(); // 取消订阅
super.dispose();
}
... ... @@ -1252,19 +1251,37 @@ class _StoreIntroducePageState extends State<StoreIntroducePage> {
children: <Widget>[
InkWell(
onTap: () {
Utils.getPickPermission(context, () {
if (Platform.isAndroid) {
Utils.getPickPermission(context, () {
if (fileType == FileType.image) {
_getFromPictureOrCamera(index, ImageSource.camera);
} else {
_getVideoFromPictureOrCamera(ImageSource.camera);
}
if (Navigator.canPop(context)) {
Navigator.pop(context);
}
}, Permission.storage);
} else {
if (fileType == FileType.image) {
_getFromPictureOrCamera(index, ImageSource.camera);
Utils.getPickPermission(context, () {
_getFromPictureOrCamera(index, ImageSource.camera);
if (Navigator.canPop(context)) {
Navigator.pop(context);
}
}, Permission.photos);
} else {
_getVideoFromPictureOrCamera(ImageSource.camera);
}
if (Navigator.canPop(context)) {
Navigator.pop(context);
Utils.getPickPermission(context, () async {
Utils.getPickPermission(context, () {
_getVideoFromPictureOrCamera(ImageSource.camera);
if (Navigator.canPop(context)) {
Navigator.pop(context);
}
}, Permission.microphone);
}, Permission.camera);
}
},
Platform.isAndroid
? Permission.storage
: Permission.photos);
}
// Utils.getPickPermission(context, () {
// if (fileType == FileType.image) {
... ... @@ -1393,7 +1410,7 @@ class _StoreIntroducePageState extends State<StoreIntroducePage> {
String duration = '00:00';
if (info != null) {
//限制视频时长
if (info.duration > 120000 || info.duration < 0) {
if (info.duration >= 120000 || info.duration < 0) {
Utils.showToast('请选择2分钟以内的视频');
return;
}
... ... @@ -1427,24 +1444,29 @@ class _StoreIntroducePageState extends State<StoreIntroducePage> {
//是否需要压缩
bool need = await VideoUtils.shouldCompress(pickedFile.path);
if (need) {
Subscription _subscription; //展示压缩进度
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);
// }
});
debugPrint('progress: $progress');
// compressProcess = '压缩进度: ${progress.toStringAsFixed(1)}%';
setState(() {});
}, onDone: () {}, onError: (error) {}, cancelOnError: true);
file = await VideoUtils.compress(pickedFile.path); //压缩后的文件
if (file != null) {
//压缩完成
showCompress = false;
_subscription.unsubscribe(); // 取消订阅
setState(() {});
} else {
data.removeLast();
_subscription.unsubscribe(); // 取消订阅
setState(() {});
throw Exception('Failed to compress video');
}
}
//开始上传任务
UploadImageUtil().startUploadOnlyAddition(
... ...
... ... @@ -103,7 +103,10 @@ class _ImgPickerWidgetState extends DisposableState<ImgPickerWidget> {
//从相册选取照片后进行裁剪压缩
File yourFile = File(pickedFile.path);
Uint8List afterImg = await yourFile.readAsBytes();
Uint8List newImg = await Utils.testFromFileComporessList(context, afterImg);
Uint8List newImg = await Utils.testFromFileComporessList(context, afterImg,
needResize:
widget.uploadType == UploadType.CouponDishType ? true : false);
String path = await Utils.saveImage(newImg);
if (path == null) {
// File compressedFile = await FlutterNativeImage.compressImage(
... ... @@ -246,8 +249,10 @@ class _ImgPickerWidgetState extends DisposableState<ImgPickerWidget> {
//从相册选取照片后进行裁剪压缩
File yourFile = file;
Uint8List afterImg = await yourFile.readAsBytes();
Uint8List newImg =
await Utils.testFromFileComporessList(context, afterImg);
Uint8List newImg = await Utils.testFromFileComporessList(
context, afterImg,
needResize:
widget.uploadType == UploadType.CouponDishType ? true : false);
String path = await Utils.saveImage(newImg);
// File compressedFile;
if (path == null) {
... ...
... ... @@ -1190,6 +1190,8 @@ class Utils {
title = '相机';
} else if (permissionGroup == Permission.location) {
title = '位置';
} else if (permissionGroup == Permission.microphone) {
title = '麦克风';
}
PermissionStatus status = await permissionStatus(permissionGroup);
if (status == PermissionStatus.permanentlyDenied) {
... ... @@ -2523,7 +2525,8 @@ class Utils {
}
String _title =
"您预订的${Provider.of<UserModel>(context, listen: false).user.sellername},已经安排,点击查看详情";
// String _title =
// "${Provider.of<UserModel>(context, listen: false).user.sellername}-全体员工恭候您的光临!预订详情,请点击查看";
// if (Provider.of<UserModel>(context, listen: false).user.sellerid == '677') {
// //京厨九跳转新的邀请函地址
// _path =
... ...