feat: 优化

This commit is contained in:
2026-03-23 00:43:19 +08:00
parent ae1aa21445
commit 7be22da0f0
15 changed files with 1369 additions and 1270 deletions

View File

@@ -1,9 +1,10 @@
import 'package:flutter/material.dart';
import '../core/network/api_response.dart';
import '../core/network/dio_client.dart';
import '../data/models/account_models.dart';
import '../data/models/order_models.dart';
import '../data/services/asset_service.dart';
import '../data/services/fund_service.dart';
import '../core/network/dio_client.dart';
/// 资产状态管理
class AssetProvider extends ChangeNotifier {
@@ -20,6 +21,11 @@ class AssetProvider extends ChangeNotifier {
bool _isLoadingOrders = false;
String? _error;
// 加载状态标记,防止重复加载
bool _overviewLoaded = false;
bool _fundAccountLoaded = false;
bool _tradeAccountLoaded = false;
AssetProvider(this._assetService, this._fundService);
// Getters
@@ -35,7 +41,12 @@ class AssetProvider extends ChangeNotifier {
String? get error => _error;
/// 加载资产总览
Future<void> loadOverview() async {
Future<void> loadOverview({bool force = false}) async {
// 如果已经加载过且不是强制刷新,则跳过
if (_overviewLoaded && !force && _overview != null) {
return;
}
_isLoading = true;
_error = null;
notifyListeners();
@@ -44,6 +55,7 @@ class AssetProvider extends ChangeNotifier {
final response = await _assetService.getOverview();
if (response.success) {
_overview = response.data;
_overviewLoaded = true;
} else {
_error = response.message;
}
@@ -56,11 +68,17 @@ class AssetProvider extends ChangeNotifier {
}
/// 加载资金账户
Future<void> loadFundAccount() async {
Future<void> loadFundAccount({bool force = false}) async {
// 如果已经加载过且不是强制刷新,则跳过
if (_fundAccountLoaded && !force && _fundAccount != null) {
return;
}
try {
final response = await _assetService.getFundAccount();
if (response.success) {
_fundAccount = response.data;
_fundAccountLoaded = true;
notifyListeners();
}
} catch (_) {
@@ -69,11 +87,17 @@ class AssetProvider extends ChangeNotifier {
}
/// 加载交易账户
Future<void> loadTradeAccount() async {
Future<void> loadTradeAccount({bool force = false}) async {
// 如果已经加载过且不是强制刷新,则跳过
if (_tradeAccountLoaded && !force && _tradeAccounts.isNotEmpty) {
return;
}
try {
final response = await _assetService.getTradeAccount();
if (response.success) {
_tradeAccounts = response.data ?? [];
_tradeAccountLoaded = true;
notifyListeners();
}
} catch (_) {
@@ -114,10 +138,10 @@ class AssetProvider extends ChangeNotifier {
amount: amount,
);
if (response.success) {
// 刷新数据
await loadOverview();
await loadFundAccount();
await loadTradeAccount();
// 强制刷新数据
await loadOverview(force: true);
await loadFundAccount(force: true);
await loadTradeAccount(force: true);
}
return response;
} catch (e) {
@@ -130,8 +154,8 @@ class AssetProvider extends ChangeNotifier {
try {
final response = await _fundService.deposit(amount: amount, remark: remark);
if (response.success) {
await loadOverview();
await loadFundAccount();
await loadOverview(force: true);
await loadFundAccount(force: true);
}
return response;
} catch (e) {
@@ -167,8 +191,8 @@ class AssetProvider extends ChangeNotifier {
remark: remark,
);
if (response.success) {
await loadOverview();
await loadFundAccount();
await loadOverview(force: true);
await loadFundAccount(force: true);
}
return response;
} catch (e) {
@@ -214,11 +238,25 @@ class AssetProvider extends ChangeNotifier {
}
/// 刷新所有资产数据
Future<void> refreshAll() async {
Future<void> refreshAll({bool force = false}) async {
await Future.wait([
loadOverview(),
loadFundAccount(),
loadTradeAccount(),
loadOverview(force: force),
loadFundAccount(force: force),
loadTradeAccount(force: force),
]);
}
/// 重置加载状态(用于退出登录时)
void resetLoadState() {
_overviewLoaded = false;
_fundAccountLoaded = false;
_tradeAccountLoaded = false;
_overview = null;
_fundAccount = null;
_tradeAccounts = [];
_flows = [];
_fundOrders = [];
_error = null;
notifyListeners();
}
}

View File

@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import '../core/network/api_response.dart';
import '../core/network/dio_client.dart';
import '../core/storage/local_storage.dart';
import '../data/models/user.dart';

View File

@@ -12,6 +12,7 @@ class MarketProvider extends ChangeNotifier {
String _searchKeyword = '';
bool _isLoading = false;
String? _error;
bool _coinsLoaded = false; // 标记是否已加载
MarketProvider(this._marketService);
@@ -24,7 +25,12 @@ class MarketProvider extends ChangeNotifier {
String get searchKeyword => _searchKeyword;
/// 加载币种列表
Future<void> loadCoins() async {
Future<void> loadCoins({bool force = false}) async {
// 如果已经加载过且不是强制刷新,则跳过
if (_coinsLoaded && !force && _allCoins.isNotEmpty) {
return;
}
_isLoading = true;
_error = null;
notifyListeners();
@@ -35,6 +41,7 @@ class MarketProvider extends ChangeNotifier {
if (response.success) {
_allCoins = response.data ?? [];
_filterCoins();
_coinsLoaded = true;
} else {
_error = response.message;
}
@@ -100,6 +107,15 @@ class MarketProvider extends ChangeNotifier {
/// 刷新
Future<void> refresh() async {
await loadCoins();
await loadCoins(force: true);
}
/// 重置加载状态(用于退出登录时)
void resetLoadState() {
_coinsLoaded = false;
_allCoins = [];
_filteredCoins = [];
_error = null;
notifyListeners();
}
}