<Flutter> Repository에 대해
- Developer/Flutter
- 2023. 7. 11.
반응형
Repository란 데이터에 액세스하는 방법을 추상화한 디자인 패턴입니다.
애플리케이션에서 데이터를 저장하고 검색하기 위해 사용되며, 일반적으로 애플리케이션의 비즈니스 로직을 데이터 소스와 분리합니다.
Repository 패턴을 사용하면 데이터 소스(예: 웹 서비스, 로컬 데이터베이스 등)를 변경하더라도 애플리케이션의 로직에 큰 영향을 미치지 않습니다.
Flutter에서 Repository를 만드는 방법을 Firebase와 함께 해보겠습니다.
먼저 Repository 인터페이스를 정의합니다.
abstract class UserRepository {
Future<List<User>> getUsers();
}
데이터 소스를 선택하고, 이를 사용하여 Repository 인터페이스를 구현합니다. 예를 들어, 아래 코드는 Firebase를 사용하는 UserRepository를 구현한 것입니다.
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:your_app/models/user.dart';
import 'package:your_app/repositories/user_repository.dart';
class FirebaseUserRepository implements UserRepository {
final userCollection = FirebaseFirestore.instance.collection('users');
@override
Future<List<User>> getUsers() async {
final querySnapshot = await userCollection.get();
return querySnapshot.docs.map((doc) => User.fromDocument(doc)).toList();
}
}
이제 애플리케이션의 비즈니스 로직에서 Repository를 사용하여 데이터에 액세스할 수 있습니다.
class UserController {
final UserRepository userRepository;
UserController({required this.userRepository});
Future<List<User>> fetchUsers() {
return userRepository.getUsers();
}
}
이상으로, 애플리케이션 내에서 데이터를 저장하고 검색하는데 사용되는 Repository 패턴을 사용하였습니다.
이렇게 함으로써 언제든지 데이터 소스를 변경할 수 있고 앱 로직에는 큰 영향을 끼치지 않습니다.
'Developer > Flutter' 카테고리의 다른 글
Flutter로 안드로이드 앱 빌드하기 (0) | 2023.07.18 |
---|---|
<Flutter> Hex를 Color에 적용하기 (0) | 2023.07.16 |
<Flutter> 비동기 처리 (0) | 2023.07.09 |
<Flutter> 리스트를 맵으로 바꾸기 (0) | 2023.07.07 |
<Flutter> Flutter에서 async와 await 이해하 (0) | 2023.07.07 |