fix:参考金值,研听,研值工程通用通用工程公共能力,重点对比网络请求、登录认证、状态管理、本地存储、WebView、推送、版本更新、一键登录、主题/UI 等模块,确定后续统一整改方案

This commit is contained in:
jingyun committed 2026-09-10 09:52:36 +08:00
1 parent 6997a65c96
commit d364c6d908
46 files changed
+2060 -395

No files matched your search

@@ -1,16 +1,29 @@
import 'package:hooks_riverpod/hooks_riverpod.dart';
import '../../../common/domain/metal_type.dart';
import '../../auth/application/auth_controller.dart';
import '../../auth/data/auth_models.dart';
import '../../market/data/mock_market_repository.dart';
import '../data/asset_models.dart';
import '../data/mock_asset_repository.dart';
final assetPortfolioControllerProvider =
StateNotifierProvider<AssetPortfolioController, PortfolioSummary>((ref) {
final holdings = ref.watch(mockAssetRepositoryProvider).loadHoldings();
final repository = ref.watch(mockAssetRepositoryProvider);
final authState = ref.watch(authProvider).valueOrNull;
final accountScope = switch (authState) {
LoggedInAuthState(:final user) => MockAssetRepository.accountScope(
userId: user.id,
phone: user.phone,
),
_ => MockAssetRepository.guestAccountScope,
};
final holdings = repository.loadHoldings(accountScope);
final market = ref.watch(mockMarketRepositoryProvider);
return AssetPortfolioController(
holdings: holdings,
repository: repository,
accountScope: accountScope,
spotPriceFor: (metal) => market.quoteFor(metal).spotPrice,
changeFor: (metal) => market.quoteFor(metal).changeAmount,
);
@@ -19,10 +32,14 @@ final assetPortfolioControllerProvider =
class AssetPortfolioController extends StateNotifier<PortfolioSummary> {
AssetPortfolioController({
required List<GoldAssetHolding> holdings,
required MockAssetRepository repository,
required String accountScope,
required double Function(MetalType metal) spotPriceFor,
required double Function(MetalType metal) changeFor,
this.recycleDiscount = 0.97,
}) : _holdings = holdings,
_repository = repository,
_accountScope = accountScope,
_spotPriceFor = spotPriceFor,
_changeFor = changeFor,
super(
@@ -35,12 +52,25 @@ class AssetPortfolioController extends StateNotifier<PortfolioSummary> {
);
final List<GoldAssetHolding> _holdings;
final MockAssetRepository _repository;
final String _accountScope;
final double Function(MetalType metal) _spotPriceFor;
final double Function(MetalType metal) _changeFor;
final double recycleDiscount;
void addHolding(GoldAssetHolding holding) {
Future<void> addHolding(GoldAssetHolding holding) async {
_holdings.add(holding);
await _repository.saveHoldings(_accountScope, _holdings);
state = _buildSummary(
holdings: _holdings,
spotPriceFor: _spotPriceFor,
changeFor: _changeFor,
recycleDiscount: recycleDiscount,
);
}
void clearHoldings() {
_holdings.clear();
state = _buildSummary(
holdings: _holdings,
spotPriceFor: _spotPriceFor,