오늘은 riverpod 실습에 나섰다.
혼자 코드를 작성해보며 동작 원리를 익히는데에 중점을 뒀다.
오늘 flutter pub add를 통해 라이브러리를 추가하는 과정에서 여러 오류가 발생했다.
pubspec.yaml 파일을 뜯어 직접 확인해보니 dependencies와 dev:dependencies 두 가지로 나뉘어 있었다.
dependencies는 우리가 흔히 사용하는 flutter pub add 명령어를 통해 추가되는 라이브러리들을 의미한다.
코드에 남아있으며, 앱 실행 시 반드시 필요한 부분들이 담겨있다.
예를 들어, riverpod annotation, http 등 실행에 있어 없으면 안되는 부분들을 말한다.
반면 dev: dependencies는 코드에 남아있지 않아도 되는 라이브러리들을 의미한다.
flutter pub add dev: 명령어를 통해 라이브러리를 추가할 수 있으며, 앱 실행과는 무관한 부분을 의미한다.
예를 들어, riverpod, build_runner, lints 등이 여기에 속한다.
riverpod 중에서도 generator를 사용했다.
채택한 가장 큰 이유는 build_runner에 의한 자동 Provider 생성이다.
외의 부분도 매력적이었지만, 위의 이유가 가장 컸다.
abstract class User with _$User {
const factory User({
required String gender,
required String email,
// required String picture,
}) = _User;
factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
}
freezed를 통해 만든 User 객체이다.
해당 객체에서도 볼 수 있듯이, buildrunner에게 코드 생성을 맡기려면 $ class명을 통해 알려주어야 한다.
build_runner는 코드 자동 생성 로봇이다.
part를 통해 연결고리를 만들어주고, 해당 고리를 통해 여러 파일들간의 관계를 관리한다.
대표적으로, freezed 파일과 g 파일이 있다.