import 'package:dio/dio.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:nawa_app/models/keyword_model.dart';
import 'package:nawa_app/services/crypto.dart';
import '../config/enviroment.dart';
import '../models/common_model.dart';
import '../services/firebase.dart';
class ApiProviders<T> {
// <out , in>
static FutureProviderFamily<ResModel, ReqModel> post = FutureProvider.family<ResModel, ReqModel>((ref, credentials) async {
final storage = FlutterSecureStorage();
final token = await storage.read(key: 'token');
final dio = Dio(BaseOptions(
baseUrl: env.serverUrl,
headers: {
'authorization': 'Bearer $token',
},
));
try {
final response = await dio.post(
credentials.params,
data: credentials.data,
);
return ResModel.fromJson(response.data);
} catch (e) {
print('Error occurred: $e');
throw e;
}
});
}
. family :
동일한 로직을 매개변수에 따라 여러 번 재사용하고 싶을 때 사용합니다.
Family는 같은 유형의 데이터를 다루지만, 매개변수에 따라 다르게 동작해야 할 때 유용합니다.
참조 : https://riverpod.dev/ko/docs/concepts/modifiers/family
.family | Riverpod
본 문서를 읽기 전에 프로바이더란와 프로바이더 읽기문서를
riverpod.dev
. autodisopose
class ApiProviders<T> {
// <out , in>
static AutoDisposeFutureProviderFamily<ResModel, ReqModel> post = FutureProvider.autoDispose.family<ResModel, ReqModel>((ref, credentials) async {
final storage = FlutterSecureStorage();
final token = await storage.read(key: 'token');
final dio = Dio(BaseOptions(
baseUrl: env.serverUrl,
headers: {
'authorization': 'Bearer $token',
},
));
try {
final response = await dio.post(
credentials.params,
data: credentials.data,
);
return ResModel.fromJson(response.data);
} catch (e) {
print('Error occurred: $e');
throw e;
}
});
}
'코딩(coding)일지 > flutter' 카테고리의 다른 글
[ flutter ] riverpod (0) | 2023.12.25 |
---|---|
[ flutter ]google 애널리틱스 연동 (0) | 2022.10.02 |
[ flutter ]dart.io 접근 함수 (0) | 2022.09.04 |
[ flutter ]dart.io 폴더 접근 (0) | 2022.09.04 |
[ flutter ] 생명주기 (0) | 2022.05.28 |