반응형
플러터(Flutter)를 사용하여 앱의 테마를 관리하는 것은 중요한 작업 중 하나입니다. 이 글에서는 Riverpod와 Hive를 결합하여 효과적으로 앱 테마를 관리하는 방법에 대해 알아보겠습니다. 테마 관리는 사용자 경험을 크게 향상시킬 수 있는 핵심 요소 중 하나입니다. 앱의 테마를 동적으로 변경하면 사용자가 앱의 외관을 사용자 정의할 수 있으며, 어두운 모드와 밝은 모드 등과 같은 다양한 환경에서 더 나은 가독성을 제공할 수 있습니다. Riverpod와 Hive 소개 Riverpod: Riverpod은 플러터 앱에서 상태 관리를 위한 강력한 도구 중 하나입니다. Provider 패키지를 기반으로 하며, 의존성 주입 및 상태 관리를 쉽게 구현할 수 있도록 도와줍니다. Hive: Hive는 플러터의 로..
현재 OpenAI에서 공식 Dart/Flutter 라이브러리는 제공하고 있지 않습니다. 그래서 OpenAI API 문서를 보고 HTTP 요청을 직접 구현하거나, pub.dev에서 오픈 소스를 찾아서 사용해야 합니다. dart_openai dart_openai는 오픈 소스이며 가장 인기있는 OpenAI 클라이언트 패키지입니다. 이 라이브러리를 사용하면 OpenAI의 최신 AI 모델을 Dart/Flutter 애플리케이션에 쉽게 구현할 수 있습니다. 이 라이브러리는 GPT-3 언어 모델과 DALL-E 이미지 생성 등 OpenAI의 다양한 API를 쉽게 요청할 수 있는 간단하고 직관적인 함수를 제공합니다. 이 패키지는 가볍고 사용하기 쉽도록 설계되었기 때문에 HTTP 요청 처리로 인한 복잡성과 오류를 걱정할 필..
Provider Provider는 프로바이더 중에서 가장 기본적인 프로바이더이며, 값을 동기적으로 생성해 줍니다. Provider는 일반적으로 다음과 같은 용도로 사용됩니다. 계산 결과를 캐싱 다른 공급자(Repository또는 HttpClient)에 값 노출 테스트 또는 위젯이 값을 재정의할 수 있는 방법을 제공 select를 사용하지 않고도 프로바이더 및 위젯 리빌드를 줄 일 수 있습니다. Provider를 사용하여 계산 결과를 캐시하기 Provider는 ref.watch와 함께 사용하면 동기식 작업을 캐싱할 수 있습니다. 예를 들면 Todo 목록에 필터를 적용하는 경우입니다. 목록을 필터링하는 데에는 약간의 비용이 발생 할 수 있습니다. 그렇기 때문에 화면을 다시 렌더링될 할마다 Todo 목록은 다..
불변성(Immutability)이란? 불변성(Immutability)은 Object의 모든 필드가 final 또는 late final인 경우입니다. 객체 생성할 때 정확히 한 번만 설정됩니다. 불변성은 여러 가지 이유로 바람직합니다. 참조 평등(reference equality)보다 가치 평등(value equality) 코드 조각에 대한 로컬 추론 멀리 떨어진 코드 조각은 참조(reference)를 통해 바로 아래에서 객체를 변경할 수 없습니다. 비동기 및 병렬 작업에 대한 추론이 더 쉬워집니다. 다른 코드는 작업 중간에 객체를 변경할 수 없습니다. API의 안전성 메서드에 전달하는 내용은 호출자/수신자가 변경할 수 없습니다. copyWith 메서드는 몇 가지만 변경하여 새로운 객체를 만들 때 장황한 ..
프로바이더는 언제 생성되고 언제 폐기될까? 모든 유형의 프로바이더가 가질 수 있는 상태는 동일합니다. Uninitialized(초기화되지 않은 상태) Alive(활성화 상태) Paused(일시 중지 상태) Disposed(폐기 상태) 폐기됨/초기화되지 않음 초기화되지 않거나 폐기된 프로바이더는 상태가 초기화되지 않았기 때문에 메모리를 차지하지 않습니다. 기본적으로 필요할 때 프로바이더의 상태를 생성하는 방법에 대한 정의일 뿐입니다. 이 상태는 UI의 활성 프로바이더 또는 WidgetRef가 읽거나(reads), 구독(watches)하거나, 수신(listens)할 때까지 그대로 유지됩니다 . Creating → Alive 초기화되지 않은 프로바이더를 사용할 때(read, listen, watch) 상태가 ..
ProviderObserver는 ProviderContainer 내에서 발생하는 변화를 모니터링합니다. ProviderObserver를 상속하는 클래스를 작성하고, 메소드를 오버라이드(override)하여 사용합니다. ProviderObserver에는 3개의 메소드가 있습니다. didAddProvider: 프로바이더가 초기화될 때마다 호출됩니다. 노출되는 값은 value입니다. didDisposeProvider: 프로바이더가 disposed될 때마다 호출됩니다. didUpdateProvider: 프로바이더가 알림을 전송할 때마다 호출됩니다. 사용법: ProviderObserver는 didUpdateProvider를 오버라이딩 하여 프로바이더들(providers)의 변화를 로깅할 수 있습니다. // Lo..