282 lines
6.8 KiB
Dart
282 lines
6.8 KiB
Dart
// 音色项类
|
||
import 'package:get/get.dart';
|
||
|
||
class TimbreItem {
|
||
final String timbre;
|
||
final String name;
|
||
final String timbrePackUrl;
|
||
|
||
TimbreItem({
|
||
required this.timbre,
|
||
required this.name,
|
||
required this.timbrePackUrl,
|
||
});
|
||
|
||
factory TimbreItem.fromJson(Map<String, dynamic> json) {
|
||
return TimbreItem(
|
||
timbre: json['timbre'] ?? '',
|
||
name: json['name'] ?? '',
|
||
timbrePackUrl: json['timbrePackUrl'] ?? '',
|
||
);
|
||
}
|
||
|
||
Map<String, dynamic> toJson() {
|
||
return {
|
||
'timbre': timbre,
|
||
'name': name,
|
||
'timbrePackUrl': timbrePackUrl,
|
||
};
|
||
}
|
||
|
||
@override
|
||
String toString() {
|
||
return 'TimbreItem{timbre: $timbre, name: $name, timbrePackUrl: $timbrePackUrl}';
|
||
}
|
||
}
|
||
|
||
// 透传项主类
|
||
class PassthroughItem {
|
||
final String lang;
|
||
final List<TimbreItem> timbres;
|
||
|
||
PassthroughItem({
|
||
required this.lang,
|
||
required this.timbres,
|
||
});
|
||
|
||
factory PassthroughItem.fromJson(Map<String, dynamic> json) {
|
||
var timbresJson = json['timbres'] as List<dynamic>?;
|
||
List<TimbreItem> timbresList = timbresJson != null
|
||
? timbresJson
|
||
.map((e) => TimbreItem.fromJson(e as Map<String, dynamic>))
|
||
.toList()
|
||
: <TimbreItem>[];
|
||
return PassthroughItem(
|
||
lang: json['lang'] ?? '',
|
||
timbres: timbresList,
|
||
);
|
||
}
|
||
|
||
Map<String, dynamic> toJson() {
|
||
return {
|
||
'lang': lang,
|
||
'timbres': timbres.map((e) => e.toJson()).toList(),
|
||
};
|
||
}
|
||
|
||
@override
|
||
String toString() {
|
||
return 'PassthroughItem{lang: $lang, timbres: $timbres}';
|
||
}
|
||
}
|
||
|
||
class PassthroughListResponse {
|
||
PassthroughListResponse({
|
||
this.description,
|
||
this.errorCode,
|
||
this.data,
|
||
this.errorMsg,
|
||
});
|
||
|
||
String? description;
|
||
int? errorCode;
|
||
List<PassthroughItem>? data;
|
||
String? errorMsg;
|
||
|
||
PassthroughListResponse.fromJson(dynamic json) {
|
||
description = json['description'];
|
||
errorCode = json['errorCode'];
|
||
if (json['data'] != null && json['data'] is List) {
|
||
data = (json['data'] as List)
|
||
.map((e) => PassthroughItem.fromJson(e as Map<String, dynamic>))
|
||
.toList();
|
||
} else {
|
||
data = null;
|
||
}
|
||
errorMsg = json['errorMsg'];
|
||
}
|
||
|
||
Map<String, dynamic> toJson() {
|
||
final map = <String, dynamic>{};
|
||
map['description'] = description;
|
||
map['errorCode'] = errorCode;
|
||
if (data != null) {
|
||
map['data'] = data!.map((e) => e.toJson()).toList();
|
||
}
|
||
map['errorMsg'] = errorMsg;
|
||
return map;
|
||
}
|
||
}
|
||
|
||
/// 工具方法:通过语言编码获取本地化文本
|
||
/// 例如:'zh_CN' -> '简体中文'.tr,'en_US' -> '英文'.tr
|
||
class PassthroughLangHelper {
|
||
static String getLangText(String langCode) {
|
||
switch (langCode.toLowerCase()) {
|
||
case 'zh_cn':
|
||
return '简体中文'.tr;
|
||
case 'zh_tw':
|
||
return '繁体中文(中国台湾)'.tr;
|
||
case 'zh_hk':
|
||
return '繁体中文(中国香港)'.tr;
|
||
case 'en_us':
|
||
return '英文'.tr;
|
||
case 'fr_fr':
|
||
return '法语'.tr;
|
||
case 'ru_ru':
|
||
return '俄语'.tr;
|
||
case 'de_de':
|
||
return '德语'.tr;
|
||
case 'ja_jp':
|
||
return '日语'.tr;
|
||
case 'ko_kr':
|
||
return '韩语'.tr;
|
||
case 'it_it':
|
||
return '意大利语'.tr;
|
||
case 'pt_pt':
|
||
return '葡萄牙语'.tr;
|
||
case 'es_es':
|
||
return '西班牙语'.tr;
|
||
case 'ar_sa':
|
||
return '阿拉伯语'.tr;
|
||
case 'vi_vn':
|
||
return '越南语'.tr;
|
||
case 'ms_my':
|
||
return '马来语'.tr;
|
||
case 'nl_nl':
|
||
return '荷兰语'.tr;
|
||
case 'ro_ro':
|
||
return '罗马尼亚语'.tr;
|
||
case 'lt_lt':
|
||
return '立陶宛语'.tr;
|
||
case 'sv_se':
|
||
return '瑞典语'.tr;
|
||
case 'et_ee':
|
||
return '爱沙尼亚语'.tr;
|
||
case 'pl_pl':
|
||
return '波兰语'.tr;
|
||
case 'sk_sk':
|
||
return '斯洛伐克语'.tr;
|
||
case 'cs_cz':
|
||
return '捷克语'.tr;
|
||
case 'el_gr':
|
||
return '希腊语'.tr;
|
||
case 'he_il':
|
||
return '希伯来语'.tr;
|
||
case 'sr_rs':
|
||
return '塞尔维亚语'.tr;
|
||
case 'tr_tr':
|
||
return '土耳其语'.tr;
|
||
case 'hu_hu':
|
||
return '匈牙利语'.tr;
|
||
case 'bg_bg':
|
||
return '保加利亚语'.tr;
|
||
case 'kk_kz':
|
||
return '哈萨克斯坦语'.tr;
|
||
case 'bn_bd':
|
||
return '孟加拉语'.tr;
|
||
case 'hr_hr':
|
||
return '克罗地亚语'.tr;
|
||
case 'th_th':
|
||
return '泰语'.tr;
|
||
case 'id_id':
|
||
return '印度尼西亚语'.tr;
|
||
case 'fi_fi':
|
||
return '芬兰语'.tr;
|
||
case 'da_dk':
|
||
return '丹麦语'.tr;
|
||
case 'uk_ua':
|
||
return '乌克兰语'.tr;
|
||
case 'hi_in':
|
||
return '印地语'.tr;
|
||
case 'ur_pk':
|
||
return '乌尔都语'.tr;
|
||
case 'hy_am':
|
||
return '亚美尼亚语'.tr;
|
||
case 'ka_ge':
|
||
return '格鲁吉亚语'.tr;
|
||
default:
|
||
return '未知语言'.tr;
|
||
}
|
||
}
|
||
}
|
||
|
||
class ValidityPeriodResponse {
|
||
ValidityPeriodResponse({
|
||
this.description,
|
||
this.errorCode,
|
||
this.data,
|
||
this.errorMsg,
|
||
});
|
||
|
||
String? description;
|
||
int? errorCode;
|
||
ValidityPeriod? data;
|
||
String? errorMsg;
|
||
|
||
ValidityPeriodResponse.fromJson(dynamic json) {
|
||
description = json['description'];
|
||
errorCode = json['errorCode'];
|
||
if (json['data'] != null) {
|
||
data = ValidityPeriod.fromJson(json['data']);
|
||
} else {
|
||
data = null;
|
||
}
|
||
errorMsg = json['errorMsg'];
|
||
}
|
||
|
||
Map<String, dynamic> toJson() {
|
||
final map = <String, dynamic>{};
|
||
map['description'] = description;
|
||
map['errorCode'] = errorCode;
|
||
if (data != null) {
|
||
map['data'] = data!.toJson();
|
||
}
|
||
map['errorMsg'] = errorMsg;
|
||
return map;
|
||
}
|
||
}
|
||
|
||
class ValidityPeriod {
|
||
final int lockId;
|
||
final int status;
|
||
final String validityPeriodStart;
|
||
final String validityPeriodEnd;
|
||
final int rollingStorageDays;
|
||
final int remainingDays;
|
||
|
||
ValidityPeriod({
|
||
required this.lockId,
|
||
required this.status,
|
||
required this.validityPeriodStart,
|
||
required this.validityPeriodEnd,
|
||
required this.rollingStorageDays,
|
||
required this.remainingDays,
|
||
});
|
||
|
||
// 反序列化方法
|
||
factory ValidityPeriod.fromJson(Map<String, dynamic> json) {
|
||
return ValidityPeriod(
|
||
lockId: json['lockId'] as int? ?? 0,
|
||
// 默认值为 0
|
||
status: json['status'] as int? ?? 0,
|
||
validityPeriodStart: json['validityPeriodStart'] as String? ?? '',
|
||
validityPeriodEnd: json['validityPeriodEnd'] as String? ?? '',
|
||
rollingStorageDays: json['rollingStorageDays'] as int? ?? 0,
|
||
remainingDays: json['remainingDays'] as int? ?? 0,
|
||
);
|
||
}
|
||
|
||
// 序列化方法
|
||
Map<String, dynamic> toJson() {
|
||
return {
|
||
'lockId': lockId,
|
||
'status': status,
|
||
'validityPeriodStart': validityPeriodStart,
|
||
'validityPeriodEnd': validityPeriodEnd,
|
||
'rollingStorageDays': rollingStorageDays,
|
||
'remainingDays': remainingDays,
|
||
};
|
||
}
|
||
}
|