import '../../core/constants/api_endpoints.dart'; import '../../core/network/api_response.dart'; import '../../core/network/dio_client.dart'; import '../models/coin.dart'; /// 行情服務 class MarketService { final DioClient _client; MarketService(this._client); /// 獲取幣種列表 Future>> getCoinList() async { final response = await _client.get>( ApiEndpoints.coinList, ); if (response.success && response.data != null) { final list = response.data!['list'] as List?; final coins = list?.map((e) => Coin.fromJson(e as Map)).toList() ?? []; return ApiResponse.success(coins, response.message); } return ApiResponse.fail(response.message ?? '獲取幣種列表失敗'); } /// 獲取幣種詳情 Future> getCoinDetail(String code) async { final response = await _client.get>( ApiEndpoints.coinDetail, queryParameters: {'code': code}, ); if (response.success && response.data != null) { return ApiResponse.success( Coin.fromJson(response.data!), response.message, ); } return ApiResponse.fail(response.message ?? '獲取幣種詳情失敗'); } /// 搜索幣種 Future>> searchCoins(String keyword) async { final response = await _client.get>( ApiEndpoints.coinSearch, queryParameters: {'keyword': keyword}, ); if (response.success && response.data != null) { final list = response.data!['list'] as List?; final coins = list?.map((e) => Coin.fromJson(e as Map)).toList() ?? []; return ApiResponse.success(coins, response.message); } return ApiResponse.fail(response.message ?? '搜索失敗'); } }