Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- Linux
- 오류
- 유심
- virtualmachine
- postgres
- 가상머신
- SICP
- podman
- 객체지향프로그래밍
- ubuntu
- FreeBSD
- 티스토리챌린지
- 템플릿
- VM
- 잡담
- 주유소
- Flutter
- 리눅스
- DART
- 오블완
- 퇴근길
- USIM
- Bloc
- 휘발류
- 인프라
- 오토바이
- 주유
- VMware
- 일상
- 개발
Archives
- Today
- Total
sync86 블로그
[Dart/Flutter] 요즘 BLoC를 훑어보게 된 이유? 본문
728x90
가장 큰 이유는 Flutter로 앱 개발을 하고 있고, Provider를 사용하고 있는데 뭔가 불편함을 느끼고 있기 때문이다.
Flutter를 접하고 얼마되지 않아 상태 관리 라이브러리는 Provider를 처음 접하였고, Provider를 사용하여 앱 개발을 했었다. 좀 더 지나서 GetX, Riverpod, BLoC와 같은 라이브러리들을 알게 되었으며, 당시에 Provider를 이미 상당히 많은 코드를 작성하였기에 다른 라이브러리로 갈아타기엔 조금 늦은감이 있었다.
아래의 Provider를 사용하면 아래의 간단한 예제이다.
class Counter with ChangeNotifier {
int _count = 0;
int get count => _count;
void increase() {
_count++;
notifyListeners();
}
void decrease() {
_count--;
notifyListeners();
}
}
위에서 언급한 간단한 예제 보다는 API 호출로 전달 받은 JSON을 객체로 변환한 후 객체의 필드 변수에 직접 접근하는 경우가 많았다.
class User {
static User empty() => User(id: 0, name: '');
final int id;
final String name;
User({required this.id, required this.name})
}
class UserProvider with ChangeNotifier {
User user;
UserProvider({required this.user});
void updateUser(User user) {
this.user = user;
notifyListeners();
}
}
아래의 코드와 같은 형태로 코드를 작성하게 되었다.
class MyPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
UserProvider userProvider = Provider.of<UserProvider>(context);
User user = userProvider.user;
return ListView(
children: [
ListTile(
title: Text('${user.id}'),
subtitle: Text(user.name),
)
],
);
}
}
Provider에 생성되어 있는 User 객체를 가져와서 user.id, user.name과 같이 직접 필드 변수에 접근하고 있는 것이다.
이렇게 작성했더니 지금 데이터베이스의 필드가 변경되면 전체 코드가 흔들려서 진척이 더뎌지는 문제가 생겼다. 그래서 이를 조금이나마 해소할 수 있는 방법을 모색하던 중 현재까지 BLoC를 사용하면 해결할 수 있을까? 기대를 가지고 BLoC "시작하기 가이드"를 읽고 있다.
요약하자면, 실력이 없어서 도구(Provider)탓을 하고 있는 것이다. ㅠㅠ
728x90
'개발기' 카테고리의 다른 글
[Dart/Flutter] Provider로 구성한 프로젝트가 너무 빈번히 업데이트가 된다. (0) | 2024.11.21 |
---|---|
[Dart/Flutter] Cubit과 BLoC가 공존하는 이유! (0) | 2024.10.17 |
[Dart/Flutter] BLoC Concepts - 훑어보기 (3) (0) | 2024.10.15 |
[Dart/Flutter] BLoC Concepts - 훑어보기 (2) (0) | 2024.10.14 |
[Dart/Flutter] BLoC Concepts - 훑어보기 (1) (0) | 2024.10.13 |