top_trader.dart 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import '../../../core/utils/avatar_urls.dart';
  2. /// 顶级交易员数据模型
  3. class TopTrader {
  4. final String id;
  5. final String nickname;
  6. final String avatar;
  7. final double dayYield30; // 近14天收益率(来自 dayYield14 字段)
  8. final double profitAmount; // 近14天收益 USDT(与跟单列表 profit30d 同源)
  9. final int followCustomer;
  10. const TopTrader({
  11. this.id = '',
  12. required this.nickname,
  13. required this.avatar,
  14. required this.dayYield30,
  15. required this.profitAmount,
  16. this.followCustomer = 0,
  17. });
  18. factory TopTrader.fromJson(Map<String, dynamic> json) {
  19. double _d(String key) =>
  20. double.tryParse((json[key] ?? '0').toString()) ?? 0.0;
  21. return TopTrader(
  22. id: json['id']?.toString() ?? json['userId']?.toString() ?? '',
  23. nickname: json['nickname'] as String? ?? '',
  24. avatar:
  25. resolvedAvatarUrlFromRecord(Map<String, dynamic>.from(json)) ?? '',
  26. dayYield30: _d('dayYield14'),
  27. profitAmount: _d('profitAmount'),
  28. followCustomer: json['followCustomer'] as int? ?? 0,
  29. );
  30. }
  31. /// 头像首字母
  32. String get avatarLetter =>
  33. nickname.isNotEmpty ? nickname[0].toUpperCase() : 'T';
  34. }