parent
c5ffb51db4
commit
e8581eff61
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@ -0,0 +1,154 @@
|
|||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:image_picker/image_picker.dart';
|
||||||
|
|
||||||
|
// import 'package:image_picker/image_picker.dart';
|
||||||
|
import 'package:project_telephony/utils/headers.dart';
|
||||||
|
import 'package:velocity_x/velocity_x.dart';
|
||||||
|
// import 'package:velocity_x/velocity_x.dart';
|
||||||
|
|
||||||
|
class CloudImagePicker {
|
||||||
|
static Future<List<File>> pickMultiImage(
|
||||||
|
{required String title,
|
||||||
|
double maxWidth = 1000,
|
||||||
|
double maxHeight = 1000}) async {
|
||||||
|
List<XFile>? files = [];
|
||||||
|
files = await ImagePicker().pickMultiImage();
|
||||||
|
if (files == null) {
|
||||||
|
return <File>[];
|
||||||
|
} else {
|
||||||
|
return files.map((e) => File(e.path)).toList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static Future<List<File>> pickMultiAndSingleImage(
|
||||||
|
{required String title,
|
||||||
|
double maxWidth = 1000,
|
||||||
|
double maxHeight = 1000}) async {
|
||||||
|
List<XFile>? files = [];
|
||||||
|
// _files = await ImagePicker().pickMultiImage();
|
||||||
|
|
||||||
|
files = await Get.bottomSheet(CupertinoActionSheet(
|
||||||
|
title: title.text.isIntrinsic.make(),
|
||||||
|
actions: [
|
||||||
|
CupertinoDialogAction(
|
||||||
|
onPressed: () async {
|
||||||
|
await ImagePicker().pickMultiImage().then((value) {
|
||||||
|
if (value != null) {
|
||||||
|
Get.back(
|
||||||
|
result: value,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
const Icon(CupertinoIcons.photo),
|
||||||
|
30.wb,
|
||||||
|
'相册(长按图片多选)'.text.isIntrinsic.make(),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
CupertinoDialogAction(
|
||||||
|
onPressed: () async {
|
||||||
|
await ImagePicker()
|
||||||
|
.pickImage(
|
||||||
|
source: ImageSource.camera,
|
||||||
|
maxHeight: maxHeight,
|
||||||
|
maxWidth: maxWidth,
|
||||||
|
)
|
||||||
|
.then((value) {
|
||||||
|
if (value != null) {
|
||||||
|
XFile pickFile = value;
|
||||||
|
List<XFile> files = [];
|
||||||
|
files.add(pickFile);
|
||||||
|
Get.back(
|
||||||
|
result: files,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
const Icon(CupertinoIcons.camera),
|
||||||
|
30.wb,
|
||||||
|
'相机'.text.isIntrinsic.make(),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
cancelButton: CupertinoDialogAction(
|
||||||
|
onPressed: Get.back,
|
||||||
|
child: '取消'.text.isIntrinsic.make(),
|
||||||
|
),
|
||||||
|
));
|
||||||
|
if (files == null) {
|
||||||
|
return <File>[];
|
||||||
|
} else {
|
||||||
|
return files.map((e) => File(e.path)).toList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static Future<File?> pickSingleImage(
|
||||||
|
{required String title,
|
||||||
|
double maxWidth = 1000,
|
||||||
|
double maxHeight = 1000}) async {
|
||||||
|
XFile? xFile = await Get.bottomSheet(CupertinoActionSheet(
|
||||||
|
title: title.text.isIntrinsic.make(),
|
||||||
|
actions: [
|
||||||
|
CupertinoDialogAction(
|
||||||
|
onPressed: () async {
|
||||||
|
await ImagePicker()
|
||||||
|
.pickImage(
|
||||||
|
source: ImageSource.gallery,
|
||||||
|
maxHeight: maxHeight,
|
||||||
|
maxWidth: maxWidth,
|
||||||
|
)
|
||||||
|
.then((value) {
|
||||||
|
Get.back(
|
||||||
|
result: value,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
const Icon(CupertinoIcons.photo),
|
||||||
|
30.wb,
|
||||||
|
'相册'.text.isIntrinsic.make(),
|
||||||
|
],
|
||||||
|
)),
|
||||||
|
CupertinoDialogAction(
|
||||||
|
onPressed: () async {
|
||||||
|
await ImagePicker()
|
||||||
|
.pickImage(
|
||||||
|
source: ImageSource.camera,
|
||||||
|
maxHeight: maxHeight,
|
||||||
|
maxWidth: maxWidth,
|
||||||
|
)
|
||||||
|
.then((value) {
|
||||||
|
Get.back(
|
||||||
|
result: value,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
const Icon(CupertinoIcons.camera),
|
||||||
|
30.wb,
|
||||||
|
'相机'.text.isIntrinsic.make(),
|
||||||
|
],
|
||||||
|
)),
|
||||||
|
],
|
||||||
|
cancelButton: CupertinoDialogAction(
|
||||||
|
onPressed: Get.back,
|
||||||
|
child: '取消'.text.isIntrinsic.make(),
|
||||||
|
),
|
||||||
|
));
|
||||||
|
if (xFile != null) {
|
||||||
|
return File(xFile.path);
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,166 @@
|
|||||||
|
// import 'dart:async';
|
||||||
|
// import 'dart:convert';
|
||||||
|
|
||||||
|
// import 'package:bot_toast/bot_toast.dart';
|
||||||
|
// import 'package:cloud_car/model/pay/wx_pay_model.dart';
|
||||||
|
// import 'package:cloud_car/utils/new_work/api_client.dart';
|
||||||
|
// import 'package:cloud_car/utils/toast/cloud_toast.dart';
|
||||||
|
// import 'package:dio/dio.dart';
|
||||||
|
// import 'package:flutter/foundation.dart';
|
||||||
|
// import 'package:fluwx/fluwx.dart';
|
||||||
|
// import 'package:power_logger/power_logger.dart';
|
||||||
|
// import 'package:tobias/tobias.dart';
|
||||||
|
|
||||||
|
// import '../model/pay/pay_model.dart';
|
||||||
|
|
||||||
|
// enum PAYTYPE {
|
||||||
|
// ///支付宝
|
||||||
|
// ali,
|
||||||
|
|
||||||
|
// ///微信
|
||||||
|
// wx,
|
||||||
|
|
||||||
|
// ///现金
|
||||||
|
// cash,
|
||||||
|
|
||||||
|
// ///pos
|
||||||
|
// pos
|
||||||
|
// }
|
||||||
|
|
||||||
|
// class PayUtil {
|
||||||
|
// static final PayUtil _instance = PayUtil._();
|
||||||
|
|
||||||
|
// factory PayUtil() => _instance;
|
||||||
|
|
||||||
|
// PayUtil._();
|
||||||
|
|
||||||
|
// void resultSatus(String status) {
|
||||||
|
// switch (status) {
|
||||||
|
// case '8000':
|
||||||
|
// BotToast.showText(text: '正在处理中');
|
||||||
|
// break;
|
||||||
|
// case '4000':
|
||||||
|
// BotToast.showText(text: '订单支付失败');
|
||||||
|
// break;
|
||||||
|
// case '5000':
|
||||||
|
// BotToast.showText(text: '重复请求');
|
||||||
|
// break;
|
||||||
|
// case '6001':
|
||||||
|
// BotToast.showText(text: ' 用户中途取消');
|
||||||
|
// break;
|
||||||
|
// case '6002':
|
||||||
|
// BotToast.showText(text: '网络连接出错');
|
||||||
|
// break;
|
||||||
|
// case '6004':
|
||||||
|
// BotToast.showText(text: '支付结果未知,请查询商户订单列表中订单的支付状态');
|
||||||
|
// break;
|
||||||
|
// default:
|
||||||
|
// BotToast.showText(text: '其他支付错误');
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// String _resultStatus = '';
|
||||||
|
|
||||||
|
// ///支付宝支付
|
||||||
|
// ///传入订单信息和确认订单请求地址
|
||||||
|
// Future<bool> callAliPay(String order, {String? apiPath}) async {
|
||||||
|
// var install = await isAliPayInstalled();
|
||||||
|
// if (!install) {
|
||||||
|
// BotToast.showText(text: '未安装支付宝!');
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
// Map<dynamic, dynamic> result = {};
|
||||||
|
// try {
|
||||||
|
// result = await aliPay(order);
|
||||||
|
// } catch (e) {
|
||||||
|
// if (kDebugMode) {
|
||||||
|
// print(e.toString());
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// _resultStatus = result['resultStatus'];
|
||||||
|
// if (_resultStatus == '9000') {
|
||||||
|
// String res = result['result'];
|
||||||
|
// PayModel model = PayModel.fromJson(jsonDecode(res));
|
||||||
|
// if (apiPath != null) {
|
||||||
|
// bool confirmResult = await _confirmPayResult(
|
||||||
|
// apiPath, model.aliPayTradeAppPayResponse.outTradeNo);
|
||||||
|
// return confirmResult;
|
||||||
|
// } else {
|
||||||
|
// CloudToast.show('支付成功');
|
||||||
|
// return true;
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// resultSatus(_resultStatus);
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Future<bool> _confirmPayResult(String path, String code) async {
|
||||||
|
// try {
|
||||||
|
// int status = 0;
|
||||||
|
// for (var i = 0; i < 3; i++) {
|
||||||
|
// await Future.delayed(const Duration(milliseconds: 1000), () async {
|
||||||
|
// Response response = await apiClient.dio.get(path, queryParameters: {
|
||||||
|
// "code": code,
|
||||||
|
// });
|
||||||
|
// status = response.data['status'] as int;
|
||||||
|
// });
|
||||||
|
// if (status == 2) {
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// if (status == 2) {
|
||||||
|
// BotToast.showText(text: '交易成功');
|
||||||
|
// return true;
|
||||||
|
// } else {
|
||||||
|
// BotToast.showText(text: '交易失败 错误码$status');
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
// } catch (e) {
|
||||||
|
// BotToast.showText(text: '网络请求错误');
|
||||||
|
// LoggerData.addData(e);
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// ///微信支付
|
||||||
|
|
||||||
|
// StreamSubscription? _wxPayStream;
|
||||||
|
|
||||||
|
// void wxPayAddListener(
|
||||||
|
// {required VoidCallback paySuccess,
|
||||||
|
// Function(BaseWeChatResponse)? payError}) {
|
||||||
|
// _wxPayStream = weChatResponseEventHandler.listen((event) {
|
||||||
|
// if (kDebugMode) {
|
||||||
|
// print('errorCode:${event.errCode} errorStr:${event.errStr}');
|
||||||
|
// }
|
||||||
|
// if (event.errCode == 0) {
|
||||||
|
// paySuccess();
|
||||||
|
// } else {
|
||||||
|
// LoggerData.addData(
|
||||||
|
// 'errorCode:${event.errCode} errorStr:${event.errStr ?? '支付失败'}');
|
||||||
|
// CloudToast.show(event.errStr ?? '支付失败');
|
||||||
|
// if (payError != null) payError(event);
|
||||||
|
// //payError == null ? null : payError(event);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
|
||||||
|
// void removeWxPayListener() {
|
||||||
|
// _wxPayStream?.cancel();
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Future callWxPay({
|
||||||
|
// required WxPayModel payModel,
|
||||||
|
// }) async {
|
||||||
|
// await payWithWeChat(
|
||||||
|
// appId: 'wx9bc3ffb23a749254',
|
||||||
|
// partnerId: payModel.partnerId,
|
||||||
|
// prepayId: payModel.prepayId,
|
||||||
|
// packageValue: payModel.package,
|
||||||
|
// nonceStr: payModel.nonceStr,
|
||||||
|
// timeStamp: int.parse(payModel.timeStamp),
|
||||||
|
// sign: payModel.sign);
|
||||||
|
// }
|
||||||
|
// }
|
@ -0,0 +1,16 @@
|
|||||||
|
|
||||||
|
|
||||||
|
import 'package:bot_toast/bot_toast.dart';
|
||||||
|
import 'package:permission_handler/permission_handler.dart';
|
||||||
|
|
||||||
|
class PermissionUtils {
|
||||||
|
static Future requestAllPermission() async {
|
||||||
|
Map<Permission, PermissionStatus> permission =
|
||||||
|
await [Permission.phone, Permission.sms].request();
|
||||||
|
if (await Permission.phone.isGranted) {
|
||||||
|
BotToast.showText(text: "手机申请通过");
|
||||||
|
} else {
|
||||||
|
BotToast.showText(text: "手机申请不通过");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,62 @@
|
|||||||
|
part of './grind.dart';
|
||||||
|
|
||||||
|
@Task('打包Android项目')
|
||||||
|
buildApk() async {
|
||||||
|
await runAsync(
|
||||||
|
'fvm',
|
||||||
|
arguments: [
|
||||||
|
'flutter',
|
||||||
|
'build',
|
||||||
|
'apk',
|
||||||
|
'--target-platform=android-arm64',
|
||||||
|
'--dart-define',
|
||||||
|
'BUILD_TYPE=PRODUCT',
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
|
String date = DateUtil.formatDate(DateTime.now(), format: 'yy_MM_dd_HH_mm');
|
||||||
|
String version = await getVersion();
|
||||||
|
await runAsync('rm', arguments: ['-rf', Config.apkDir]);
|
||||||
|
await runAsync('mkdir', arguments: ['-p', Config.apkDir]);
|
||||||
|
await runAsync('mv', arguments: [
|
||||||
|
Config.buildPath,
|
||||||
|
'${Config.apkDir}/${Config.packageName}_${version}_release_$date.apk'
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Task('打包Android项目')
|
||||||
|
buildApkDev() async {
|
||||||
|
await runAsync(
|
||||||
|
'fvm',
|
||||||
|
arguments: [
|
||||||
|
'flutter',
|
||||||
|
'build',
|
||||||
|
'apk',
|
||||||
|
'--target-platform=android-arm64',
|
||||||
|
'--dart-define',
|
||||||
|
'BUILD_TYPE=Dev',
|
||||||
|
],
|
||||||
|
);
|
||||||
|
String date = DateUtil.formatDate(DateTime.now(), format: 'yy_MM_dd_HH_mm');
|
||||||
|
String version = await getVersion();
|
||||||
|
await runAsync('rm', arguments: ['-rf', Config.apkDevDir]);
|
||||||
|
await runAsync('mkdir', arguments: ['-p', Config.apkDevDir]);
|
||||||
|
await runAsync('mv', arguments: [
|
||||||
|
Config.buildPath,
|
||||||
|
'${Config.apkDevDir}/${Config.packageName}_${version}_beta_$date.apk'
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Task('打包iOS项目')
|
||||||
|
buildIos() async {
|
||||||
|
await runAsync(
|
||||||
|
'fvm',
|
||||||
|
arguments: [
|
||||||
|
'flutter',
|
||||||
|
'build',
|
||||||
|
'ios',
|
||||||
|
'--dart-define',
|
||||||
|
'BUILD_TYPE=PRODUCT',
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,64 @@
|
|||||||
|
part of './grind.dart';
|
||||||
|
|
||||||
|
@Task('import 排序')
|
||||||
|
void sort() {
|
||||||
|
Pub.run('import_sorter:main');
|
||||||
|
}
|
||||||
|
|
||||||
|
@Task('格式化dart代码')
|
||||||
|
void format() {
|
||||||
|
DartFmt.format(libDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Task('自动提交修改')
|
||||||
|
@Depends(sort, format, gitPush)
|
||||||
|
void git() {
|
||||||
|
log(' commit to git');
|
||||||
|
run(
|
||||||
|
'git',
|
||||||
|
arguments: [
|
||||||
|
'commit',
|
||||||
|
'-a',
|
||||||
|
'-m',
|
||||||
|
'[auto task] sort & format',
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Task('推送代码')
|
||||||
|
void gitPush() {
|
||||||
|
log(' push to git');
|
||||||
|
run(
|
||||||
|
'git',
|
||||||
|
arguments: ['push'],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Task('build runner')
|
||||||
|
void gen() async {
|
||||||
|
await runAsync(
|
||||||
|
'fvm',
|
||||||
|
arguments: [
|
||||||
|
'flutter',
|
||||||
|
'pub',
|
||||||
|
'run',
|
||||||
|
'build_runner',
|
||||||
|
'build',
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Task('build runner clean')
|
||||||
|
void genClean() async {
|
||||||
|
await runAsync(
|
||||||
|
'fvm',
|
||||||
|
arguments: [
|
||||||
|
'flutter',
|
||||||
|
'pub',
|
||||||
|
'run',
|
||||||
|
'build_runner',
|
||||||
|
'build',
|
||||||
|
'--delete-conflicting-outputs'
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:flustars/flustars.dart';
|
||||||
|
import 'package:grinder/grinder.dart';
|
||||||
|
import 'package:path/path.dart';
|
||||||
|
import 'package:pub_semver/pub_semver.dart';
|
||||||
|
import 'package:yaml/yaml.dart';
|
||||||
|
|
||||||
|
import 'config.dart';
|
||||||
|
import 'version_tool.dart';
|
||||||
|
|
||||||
|
part '_build.dart';
|
||||||
|
part '_project_manage.dart';
|
||||||
|
|
||||||
|
main(args) => grind(args);
|
||||||
|
|
||||||
|
@Task('add minor version number')
|
||||||
|
void addVersion() async {
|
||||||
|
String projectPath = Directory('.').absolute.path;
|
||||||
|
String yamlPath = join(projectPath, 'pubspec.yaml');
|
||||||
|
String yamlContent = await File(yamlPath).readAsString();
|
||||||
|
dynamic content = loadYaml(yamlContent);
|
||||||
|
String version = content['version'];
|
||||||
|
//rename version
|
||||||
|
|
||||||
|
Version resultVersion = VersionTool.fromText(version).nextMinorTag('dev');
|
||||||
|
|
||||||
|
String result = yamlContent.replaceFirst(version, resultVersion.toString());
|
||||||
|
await File(yamlPath).writeAsString(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Task('add path version number')
|
||||||
|
void addVersionPatch() async {
|
||||||
|
String projectPath = Directory('.').absolute.path;
|
||||||
|
String yamlPath = join(projectPath, 'pubspec.yaml');
|
||||||
|
String yamlContent = await File(yamlPath).readAsString();
|
||||||
|
dynamic content = loadYaml(yamlContent);
|
||||||
|
String version = content['version'];
|
||||||
|
//rename version
|
||||||
|
|
||||||
|
Version resultVersion = VersionTool.fromText(version).nextPatchTag('dev');
|
||||||
|
|
||||||
|
String result = yamlContent.replaceFirst(version, resultVersion.toString());
|
||||||
|
await File(yamlPath).writeAsString(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Task('add major version number')
|
||||||
|
void addVersionMajor() async {
|
||||||
|
String projectPath = Directory('.').absolute.path;
|
||||||
|
String yamlPath = join(projectPath, 'pubspec.yaml');
|
||||||
|
String yamlContent = await File(yamlPath).readAsString();
|
||||||
|
dynamic content = loadYaml(yamlContent);
|
||||||
|
String version = content['version'];
|
||||||
|
//rename version
|
||||||
|
|
||||||
|
Version resultVersion = VersionTool.fromText(version).nextMajorTag('dev');
|
||||||
|
|
||||||
|
String result = yamlContent.replaceFirst(version, resultVersion.toString());
|
||||||
|
await File(yamlPath).writeAsString(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Task()
|
||||||
|
Future<String> getVersion() async {
|
||||||
|
String projectPath = Directory('.').absolute.path;
|
||||||
|
String yamlPath = join(projectPath, 'pubspec.yaml');
|
||||||
|
String yamlContent = await File(yamlPath).readAsString();
|
||||||
|
dynamic content = loadYaml(yamlContent);
|
||||||
|
String version = content['version'];
|
||||||
|
return version;
|
||||||
|
}
|
@ -0,0 +1,59 @@
|
|||||||
|
import 'package:pub_semver/pub_semver.dart';
|
||||||
|
|
||||||
|
enum VersionNumber {
|
||||||
|
major,
|
||||||
|
minor,
|
||||||
|
patch,
|
||||||
|
}
|
||||||
|
|
||||||
|
class VersionTool {
|
||||||
|
Version version;
|
||||||
|
VersionTool(this.version);
|
||||||
|
VersionTool.fromText(String text) : version = Version.parse(text);
|
||||||
|
|
||||||
|
Version get nextMajor => _addBuildNumber(VersionNumber.major);
|
||||||
|
Version get nextMinor => _addBuildNumber(VersionNumber.minor);
|
||||||
|
Version get nextPatch => _addBuildNumber(VersionNumber.patch);
|
||||||
|
|
||||||
|
Version nextMajorTag(String tag) => _addBuildNumber(
|
||||||
|
VersionNumber.major,
|
||||||
|
tag: tag,
|
||||||
|
);
|
||||||
|
Version nextMinorTag(String tag) => _addBuildNumber(
|
||||||
|
VersionNumber.minor,
|
||||||
|
tag: tag,
|
||||||
|
);
|
||||||
|
Version nextPatchTag(String tag) => _addBuildNumber(
|
||||||
|
VersionNumber.patch,
|
||||||
|
tag: tag,
|
||||||
|
);
|
||||||
|
|
||||||
|
Version _addBuildNumber(VersionNumber type, {String? tag}) {
|
||||||
|
switch (type) {
|
||||||
|
case VersionNumber.major:
|
||||||
|
return Version(
|
||||||
|
version.major,
|
||||||
|
version.minor,
|
||||||
|
version.patch + 1,
|
||||||
|
pre: tag,
|
||||||
|
build: '${(version.build.first as int) + 1}',
|
||||||
|
);
|
||||||
|
case VersionNumber.minor:
|
||||||
|
return Version(
|
||||||
|
version.major,
|
||||||
|
version.minor + 1,
|
||||||
|
0,
|
||||||
|
pre: tag,
|
||||||
|
build: '${(version.build.first as int) + 1}',
|
||||||
|
);
|
||||||
|
case VersionNumber.patch:
|
||||||
|
return Version(
|
||||||
|
version.major + 1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
pre: tag,
|
||||||
|
build: '${(version.build.first as int) + 1}',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue