app-starlock/lib/main/lockDetail/lockDetail/passthrough_item.dart

282 lines
6.8 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 音色项类
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,
};
}
}