feat(mobile-app): add DST network support to deposit page

- Add DST to NetworkType enum
- Add dstAddress field to DepositAddressResponse
- Update deposit_service to fetch and cache DST address
- Add DST network button in deposit page UI

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
hailin 2025-12-08 19:25:29 -08:00
parent c6c4a75984
commit e8be584336
2 changed files with 33 additions and 7 deletions

View File

@ -7,12 +7,14 @@ import '../storage/storage_keys.dart';
class DepositAddressResponse {
final String? kavaAddress;
final String? bscAddress;
final String? dstAddress;
final bool isValid;
final String? message;
DepositAddressResponse({
this.kavaAddress,
this.bscAddress,
this.dstAddress,
required this.isValid,
this.message,
});
@ -21,6 +23,7 @@ class DepositAddressResponse {
return DepositAddressResponse(
kavaAddress: json['kavaAddress'],
bscAddress: json['bscAddress'],
dstAddress: json['dstAddress'],
isValid: json['isValid'] ?? false,
message: json['message'],
);
@ -96,13 +99,16 @@ class DepositService {
//
final kavaAddress = await _secureStorage.read(key: StorageKeys.walletAddressKava);
final bscAddress = await _secureStorage.read(key: StorageKeys.walletAddressBsc);
final dstAddress = await _secureStorage.read(key: StorageKeys.walletAddressDst);
if (kavaAddress != null && kavaAddress.isNotEmpty &&
bscAddress != null && bscAddress.isNotEmpty) {
debugPrint('从本地存储获取充值地址: kava=$kavaAddress, bsc=$bscAddress');
bscAddress != null && bscAddress.isNotEmpty &&
dstAddress != null && dstAddress.isNotEmpty) {
debugPrint('从本地存储获取充值地址: kava=$kavaAddress, bsc=$bscAddress, dst=$dstAddress');
return DepositAddressResponse(
kavaAddress: kavaAddress,
bscAddress: bscAddress,
dstAddress: dstAddress,
isValid: true,
);
}
@ -120,8 +126,9 @@ class DepositService {
if (addresses != null) {
final kava = addresses['kava'] as String?;
final bsc = addresses['bsc'] as String?;
final dst = addresses['dst'] as String?;
debugPrint('从服务器获取充值地址成功: kava=$kava, bsc=$bsc');
debugPrint('从服务器获取充值地址成功: kava=$kava, bsc=$bsc, dst=$dst');
//
if (kava != null && kava.isNotEmpty) {
@ -130,12 +137,16 @@ class DepositService {
if (bsc != null && bsc.isNotEmpty) {
await _secureStorage.write(key: StorageKeys.walletAddressBsc, value: bsc);
}
if (dst != null && dst.isNotEmpty) {
await _secureStorage.write(key: StorageKeys.walletAddressDst, value: dst);
}
return DepositAddressResponse(
kavaAddress: kava,
bscAddress: bsc,
isValid: kava != null && bsc != null,
message: (kava == null || bsc == null) ? '部分地址未生成' : null,
dstAddress: dst,
isValid: kava != null && bsc != null && dst != null,
message: (kava == null || bsc == null || dst == null) ? '部分地址未生成' : null,
);
}
} else if (data != null && data['status'] == 'generating') {

View File

@ -9,6 +9,7 @@ import '../../../../core/di/injection_container.dart';
enum NetworkType {
kava,
bsc,
dst,
}
/// USDT
@ -36,6 +37,9 @@ class _DepositUsdtPageState extends ConsumerState<DepositUsdtPage> {
/// BSC
String? _bscAddress;
/// DST
String? _dstAddress;
@override
void initState() {
super.initState();
@ -71,6 +75,7 @@ class _DepositUsdtPageState extends ConsumerState<DepositUsdtPage> {
_kavaAddress = addressResponse.kavaAddress;
_bscAddress = addressResponse.bscAddress;
_dstAddress = addressResponse.dstAddress;
//
try {
@ -115,6 +120,8 @@ class _DepositUsdtPageState extends ConsumerState<DepositUsdtPage> {
return _kavaAddress ?? '';
case NetworkType.bsc:
return _bscAddress ?? '';
case NetworkType.dst:
return _dstAddress ?? '';
}
}
@ -287,7 +294,7 @@ class _DepositUsdtPageState extends ConsumerState<DepositUsdtPage> {
// KAVA
Expanded(
child: _buildNetworkButton(
label: 'KAVA 网络',
label: 'KAVA',
network: NetworkType.kava,
isSelected: _selectedNetwork == NetworkType.kava,
),
@ -295,11 +302,19 @@ class _DepositUsdtPageState extends ConsumerState<DepositUsdtPage> {
// BSC
Expanded(
child: _buildNetworkButton(
label: 'BSC 网络',
label: 'BSC',
network: NetworkType.bsc,
isSelected: _selectedNetwork == NetworkType.bsc,
),
),
// DST
Expanded(
child: _buildNetworkButton(
label: 'DST',
network: NetworkType.dst,
isSelected: _selectedNetwork == NetworkType.dst,
),
),
],
),
),