123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- import 'package:dio/dio.dart';
- import 'package:naiyouwl/app/data/model/LoginMode.dart';
- import 'package:naiyouwl/app/data/model/NodeMode.dart';
- import '../data/model/SysConfig.dart';
- import '../data/model/UserMode.dart';
- import 'dio_client.dart';
- class ApiService {
- static final ApiService _instance = ApiService._internal();
- final DioClient _dioClient = DioClient();
- factory ApiService() => _instance;
- ApiService._internal();
- Future<SysConfig> fetchSysConfig(String path) async {
- final data = await _requestWrapper(() => _dioClient.get(path));
- return SysConfig.fromJson(data);
- }
- Future<LoginMode> login(String path, {Map<String, dynamic>? data}) async {
- final retData =await _requestWrapper(() => _dioClient.post(path,data: data));
- return LoginMode.fromJson(retData);
- }
- Future<User> userinfo(String path) async {
- final retData =await _requestWrapper(() => _dioClient.get(path));
- return User.fromJson(retData);
- }
- Future<List<nodeMode>> getNode(String path) async {
- final retData =await _requestWrapper(() => _dioClient.get(path));
- if (retData is List) {
- // 遍历List并为每一项调用NodeMode.fromJson
- return (retData as List).map((item) {
- return nodeMode.fromJson(item);
- }).toList();
- } else {
- throw Exception("Expected a list but received ${retData.runtimeType}");
- }
- }
- Future<Map<String, dynamic>> fetchData(String path, {Map<String, dynamic>? queryParameters}) async {
- return await _dioClient.get(path, queryParameters: queryParameters);
- }
- Future<Map<String, dynamic>> createData(String path, {Map<String, dynamic>? data}) async {
- return await _dioClient.post(path, data: data);
- }
- Future<Map<String, dynamic>> updateData(String path, {Map<String, dynamic>? data}) async {
- return await _dioClient.put(path, data: data);
- }
- Future<void> downloadFile(String urlPath, String savePath) async {
- await _dioClient.download(urlPath, savePath);
- }
- Future<dynamic> _requestWrapper(Future<dynamic> Function() apiCall) async {
- try {
- return await apiCall();
- } catch (e) {
- if (e is DioError && e.error is AppException) {
- throw e.error; // 抛出自定义的AppException
- } else {
- throw Exception('API request failed: $e');
- }
- }
- }
- }
|