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:
parent
c6c4a75984
commit
e8be584336
|
|
@ -7,12 +7,14 @@ import '../storage/storage_keys.dart';
|
||||||
class DepositAddressResponse {
|
class DepositAddressResponse {
|
||||||
final String? kavaAddress;
|
final String? kavaAddress;
|
||||||
final String? bscAddress;
|
final String? bscAddress;
|
||||||
|
final String? dstAddress;
|
||||||
final bool isValid;
|
final bool isValid;
|
||||||
final String? message;
|
final String? message;
|
||||||
|
|
||||||
DepositAddressResponse({
|
DepositAddressResponse({
|
||||||
this.kavaAddress,
|
this.kavaAddress,
|
||||||
this.bscAddress,
|
this.bscAddress,
|
||||||
|
this.dstAddress,
|
||||||
required this.isValid,
|
required this.isValid,
|
||||||
this.message,
|
this.message,
|
||||||
});
|
});
|
||||||
|
|
@ -21,6 +23,7 @@ class DepositAddressResponse {
|
||||||
return DepositAddressResponse(
|
return DepositAddressResponse(
|
||||||
kavaAddress: json['kavaAddress'],
|
kavaAddress: json['kavaAddress'],
|
||||||
bscAddress: json['bscAddress'],
|
bscAddress: json['bscAddress'],
|
||||||
|
dstAddress: json['dstAddress'],
|
||||||
isValid: json['isValid'] ?? false,
|
isValid: json['isValid'] ?? false,
|
||||||
message: json['message'],
|
message: json['message'],
|
||||||
);
|
);
|
||||||
|
|
@ -96,13 +99,16 @@ class DepositService {
|
||||||
// 先尝试从本地存储读取
|
// 先尝试从本地存储读取
|
||||||
final kavaAddress = await _secureStorage.read(key: StorageKeys.walletAddressKava);
|
final kavaAddress = await _secureStorage.read(key: StorageKeys.walletAddressKava);
|
||||||
final bscAddress = await _secureStorage.read(key: StorageKeys.walletAddressBsc);
|
final bscAddress = await _secureStorage.read(key: StorageKeys.walletAddressBsc);
|
||||||
|
final dstAddress = await _secureStorage.read(key: StorageKeys.walletAddressDst);
|
||||||
|
|
||||||
if (kavaAddress != null && kavaAddress.isNotEmpty &&
|
if (kavaAddress != null && kavaAddress.isNotEmpty &&
|
||||||
bscAddress != null && bscAddress.isNotEmpty) {
|
bscAddress != null && bscAddress.isNotEmpty &&
|
||||||
debugPrint('从本地存储获取充值地址: kava=$kavaAddress, bsc=$bscAddress');
|
dstAddress != null && dstAddress.isNotEmpty) {
|
||||||
|
debugPrint('从本地存储获取充值地址: kava=$kavaAddress, bsc=$bscAddress, dst=$dstAddress');
|
||||||
return DepositAddressResponse(
|
return DepositAddressResponse(
|
||||||
kavaAddress: kavaAddress,
|
kavaAddress: kavaAddress,
|
||||||
bscAddress: bscAddress,
|
bscAddress: bscAddress,
|
||||||
|
dstAddress: dstAddress,
|
||||||
isValid: true,
|
isValid: true,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -120,8 +126,9 @@ class DepositService {
|
||||||
if (addresses != null) {
|
if (addresses != null) {
|
||||||
final kava = addresses['kava'] as String?;
|
final kava = addresses['kava'] as String?;
|
||||||
final bsc = addresses['bsc'] 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) {
|
if (kava != null && kava.isNotEmpty) {
|
||||||
|
|
@ -130,12 +137,16 @@ class DepositService {
|
||||||
if (bsc != null && bsc.isNotEmpty) {
|
if (bsc != null && bsc.isNotEmpty) {
|
||||||
await _secureStorage.write(key: StorageKeys.walletAddressBsc, value: bsc);
|
await _secureStorage.write(key: StorageKeys.walletAddressBsc, value: bsc);
|
||||||
}
|
}
|
||||||
|
if (dst != null && dst.isNotEmpty) {
|
||||||
|
await _secureStorage.write(key: StorageKeys.walletAddressDst, value: dst);
|
||||||
|
}
|
||||||
|
|
||||||
return DepositAddressResponse(
|
return DepositAddressResponse(
|
||||||
kavaAddress: kava,
|
kavaAddress: kava,
|
||||||
bscAddress: bsc,
|
bscAddress: bsc,
|
||||||
isValid: kava != null && bsc != null,
|
dstAddress: dst,
|
||||||
message: (kava == null || bsc == null) ? '部分地址未生成' : null,
|
isValid: kava != null && bsc != null && dst != null,
|
||||||
|
message: (kava == null || bsc == null || dst == null) ? '部分地址未生成' : null,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else if (data != null && data['status'] == 'generating') {
|
} else if (data != null && data['status'] == 'generating') {
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import '../../../../core/di/injection_container.dart';
|
||||||
enum NetworkType {
|
enum NetworkType {
|
||||||
kava,
|
kava,
|
||||||
bsc,
|
bsc,
|
||||||
|
dst,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 充值 USDT 页面
|
/// 充值 USDT 页面
|
||||||
|
|
@ -36,6 +37,9 @@ class _DepositUsdtPageState extends ConsumerState<DepositUsdtPage> {
|
||||||
/// BSC 网络充值地址
|
/// BSC 网络充值地址
|
||||||
String? _bscAddress;
|
String? _bscAddress;
|
||||||
|
|
||||||
|
/// DST 网络充值地址
|
||||||
|
String? _dstAddress;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
|
@ -71,6 +75,7 @@ class _DepositUsdtPageState extends ConsumerState<DepositUsdtPage> {
|
||||||
|
|
||||||
_kavaAddress = addressResponse.kavaAddress;
|
_kavaAddress = addressResponse.kavaAddress;
|
||||||
_bscAddress = addressResponse.bscAddress;
|
_bscAddress = addressResponse.bscAddress;
|
||||||
|
_dstAddress = addressResponse.dstAddress;
|
||||||
|
|
||||||
// 查询实时余额
|
// 查询实时余额
|
||||||
try {
|
try {
|
||||||
|
|
@ -115,6 +120,8 @@ class _DepositUsdtPageState extends ConsumerState<DepositUsdtPage> {
|
||||||
return _kavaAddress ?? '';
|
return _kavaAddress ?? '';
|
||||||
case NetworkType.bsc:
|
case NetworkType.bsc:
|
||||||
return _bscAddress ?? '';
|
return _bscAddress ?? '';
|
||||||
|
case NetworkType.dst:
|
||||||
|
return _dstAddress ?? '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -287,7 +294,7 @@ class _DepositUsdtPageState extends ConsumerState<DepositUsdtPage> {
|
||||||
// KAVA 网络按钮
|
// KAVA 网络按钮
|
||||||
Expanded(
|
Expanded(
|
||||||
child: _buildNetworkButton(
|
child: _buildNetworkButton(
|
||||||
label: 'KAVA 网络',
|
label: 'KAVA',
|
||||||
network: NetworkType.kava,
|
network: NetworkType.kava,
|
||||||
isSelected: _selectedNetwork == NetworkType.kava,
|
isSelected: _selectedNetwork == NetworkType.kava,
|
||||||
),
|
),
|
||||||
|
|
@ -295,11 +302,19 @@ class _DepositUsdtPageState extends ConsumerState<DepositUsdtPage> {
|
||||||
// BSC 网络按钮
|
// BSC 网络按钮
|
||||||
Expanded(
|
Expanded(
|
||||||
child: _buildNetworkButton(
|
child: _buildNetworkButton(
|
||||||
label: 'BSC 网络',
|
label: 'BSC',
|
||||||
network: NetworkType.bsc,
|
network: NetworkType.bsc,
|
||||||
isSelected: _selectedNetwork == NetworkType.bsc,
|
isSelected: _selectedNetwork == NetworkType.bsc,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
// DST 网络按钮
|
||||||
|
Expanded(
|
||||||
|
child: _buildNetworkButton(
|
||||||
|
label: 'DST',
|
||||||
|
network: NetworkType.dst,
|
||||||
|
isSelected: _selectedNetwork == NetworkType.dst,
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue