You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
2.0 KiB

import 'package:get/get.dart';
import '../../../data/models/goods.dart';
String _localeTag() {
final l = Get.locale;
if (l == null) return 'zh-CN';
final cc = l.countryCode;
return cc != null && cc.isNotEmpty
? '${l.languageCode}-${cc.toUpperCase()}'
: l.languageCode;
}
String localizedGoodsName(DBGoods item) {
final info = item.localInfo(_localeTag());
final ln = (info['name'] as String?)?.trim() ?? '';
if (ln.isNotEmpty) return ln;
final id = item.id.trim();
switch (id) {
case 'ai_001':
return 'ai_001_name'.tr;
case 'ai_002':
return 'ai_002_name'.tr;
case 'ai_003':
return 'ai_003_name'.tr;
case 'meet_001':
return 'meet_001_name'.tr;
case 'meet_002':
return 'meet_002_name'.tr;
case 'meet_003':
return 'meet_003_name'.tr;
case 'trade_001':
return 'trans_001_name'.tr;
case 'trade_002':
return 'trans_002_name'.tr;
case 'trade_003':
return 'trans_003_name'.tr;
default:
final name = item.name.trim();
return name.isNotEmpty ? name : 'unknown'.tr;
}
}
String localizedGoodsDesc(DBGoods item) {
final id = item.id.trim();
switch (id) {
case 'ai_001':
return 'ai_001_desc'.tr;
case 'ai_002':
return 'ai_002_desc'.tr;
case 'ai_003':
return 'ai_003_desc'.tr;
case 'meet_001':
return 'meet_001_desc'.tr;
case 'meet_002':
return 'meet_002_desc'.tr;
case 'meet_003':
return 'meet_003_desc'.tr;
case 'trade_001':
return 'trans_001_desc'.tr;
case 'trade_002':
return 'trans_002_desc'.tr;
case 'trade_003':
return 'trans_003_desc'.tr;
default:
return '';
}
}
String goodsDisplayPrice(DBGoods item) {
final info = item.localInfo(_localeTag());
final cur = (info['currency'] as String?)?.trim();
final p = info['price'];
final symbol = (cur != null && cur.isNotEmpty) ? cur : '¥';
double v;
if (p is num) {
v = p.toDouble();
} else {
v = item.priceYuan;
}
return '$symbol${v.toStringAsFixed(2)}';
}