본문 바로가기

분류 전체보기

(354)
riverpod 과 MVVM 활용 - 데이터 접근 계층인 PostRepository 만들어 보자(4) Repository라는 이름을 붙이는 이유는 데이터 접근 계층을 나타내기 위해서이다다. 주요 목적은? Repository는 API, 데이터베이스, 로컬 파일, 캐시(데이터 소스) 등에서 데이터를 동일한 인터페이스를 통해 접근할 수 있도록 해준다. 즉, 특정 데이터 소스에 종속되지 않고 일관된 방식으로 데이터를 사용할 수 있게 설계할 수 있다. 의존성 역전 원칙(Dependency Inversion Principle)을 실현 - DIP 상위 레벨의 비즈니스 로직(서비스 계층)이 하위 레벨의 데이터 접근 세부사항(API, 데이터베이스 등)에 직접적으로 의존하지 않고 Repository 인터페이스에 의존하게 된다. 단일 책임 원칙(SRP)Repository는 데이터를 가져오거나 저장하는 하나의 책임만 가집니다..
riverpod 과 MVVM 활용 - API에서 사용할 데이터 구조를 정의하기 위해 Post 클래스를 만들어 보자.(모델링 작업)(3) API에서 받아올 데이터의 구조를 정의하고, 이를 Dart 객체로 변환하는 작업을 수행하자.\Post 클래스를 정의하고, 이 클래스에서 JSON 데이터를 객체로 변환하는 메서드(fromJson)와 객체를 JSON으로 변환하는 메서드(toJson)를 구현을 해보자. import 'package:equatable/equatable.dart';/// Post 데이터를 표현하는 모델 클래스입니다./// 서버로부터 받은 JSON 데이터를 Dart 객체로 변환하거나,/// Dart 객체를 JSON으로 변환할 때 사용됩니다./// Equatable을 사용하여 값 기반 비교를 지원합니다.class Post extends Equatable { final int? userId; final int? id; final ..
riverpod 과 MVVM 활용 - Http 통신 클라이언트 Dio 객체를 만들어 보자(2) REST API 호출: Dio는 GET, POST, PUT, DELETE 등 다양한 HTTP 요청을 지원한다.비동기 네트워크 처리: 비동기적으로 네트워크 요청을 처리하여 애플리케이션의 응답성을 유지한다.에러 처리: HTTP 상태 코드에 따라 쉽게 에러 처리를 할 수 있다. lib/providers/provider/dio_provider.dart 파일 생성import 'package:dio/dio.dart';import 'package:flutter_riverpod/flutter_riverpod.dart';/// Http 통신을 위한 Dio 인스턴스를 굳이 매번 생성할 필요가 없다/// 그래서 싱글톤 인스턴으를 생성해서 애플리케이션 전역에서 재사용 하기로 한다.// 전역에서 재사용 가능한 Dio 싱글톤 인..
riverpod 과 MVVM 활용 - 플러터 프로젝트 생성(1) 이번 프로젝트에 목적은 Flutter를 사용해서 MVVM 패턴과 riverpod 프레임워크를 학습하는데 있다.Provider 계열Provider: 객체의 의존성 주입을 관리하는 데 사용된다. 주로 서비스 클래스나 리포지토리 같은 비상태적인 객체를 제공하는 역할을 합니다. 상태 변경이 필요 없는 경우에 적합한다.StateNotifierProvider: 상태 관리를 위해 StateNotifier를 제공하는 데 사용된다. 상태의 변경을 관리하고, 그에 따라 UI를 업데이트하는 역할을 한다.notifier 계열StateNotifier: 상태 변경을 관리하는 객체이다. 내부적으로 상태를 유지하고, 상태가 변경될 때 이를 구독하는 UI에 알린다. 주로 복잡한 상태 로직을 처리하거나 상태 변화가 빈번한 경우에 사용된..
riverpod 과 MVVM 활용 - riverpod 개념 정리 Riverpod 이란?Riverpod은 Flutter 애플리케이션에서 상태 관리와 의존성 주입을 효율적으로 처리하기 위한 강력한 라이브러리이다. 기존의 Provider 패키지의 단점을 개선하고, 추가적인 기능과 안전성을 제공한다. Riverpod의 주요 특징컴파일 타임 안전성: Riverpod은 컴파일 시점에 많은 오류를 잡아내어 런타임 에러를 최소화한다.Widget 트리에 의존하지 않음: Provider와 달리, Riverpod은 Widget 트리에 의존하지 않으므로 애플리케이션 어디에서든 상태에 접근하고 관리할 수 있다.상태의 불변성: Riverpod은 불변 상태를 지향하여 상태 관리의 예측 가능성과 안정성을 높입니다. 필요에 따라 가변 상태도 관리할 수 있다.의존성 주입의 용이성: Provider ..
당근 마켓 만들어 보기 https://github.com/insertvalue2/class_carrot_market GitHub - insertvalue2/class_carrot_marketContribute to insertvalue2/class_carrot_market development by creating an account on GitHub.github.com폴더 및 파일 만들기pubspec.ymal 파일 설정기본 코드 입력앱 테마 설정main.dart 파일 완성dependencies: flutter: sdk: flutter # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class..
MVVM 패턴과 상태 관리 Monolithic (모노리스) 구조의 특징하나의 코드 파일에 UI, 비즈니스 로직, 프레젠테이션 로직을 모두 넣는 형식을 흔히 Monolithic Architecture 또는 간단히 Monolith라고 부른다.  먼저 MVVM 패턴 없이 간단한 구조로 코드를 작성해보자. 모든 로직과 상태 관리를 하나의 파일에 통합하여, UI와 데이터 처리가 한 클래스에서 이루어지는 방식으로 코드를 작성할 수 있다. 이 방식은 MVVM과 같은 디자인 패턴이 없어도 간단한 앱에서는 빠르게 개발할 수 있는 장점이 있다.    TODOimport 'package:flutter/material.dart';void main() => runApp(TodoApp());class TodoApp extends StatelessWidge..
플러터 기본기 다지기 - 4 (Flutter의 위젯과 Element 트리 그리고 Key) Flutter의 위젯과 Element 트리 그리고 Key의 역할과 사용 방법Flutter는 각 위젯마다 Element 객체를 생성해 트리 구조를 만든다.Element는 위젯의 타입, 위치 정보를 저장하고 자식 Element와 연결되어 전체 트리를 구성한다. import 'package:flutter/material.dart';void main() { runApp(MaterialApp(home: MyHomePage()));}class MyHomePage extends StatefulWidget { const MyHomePage({super.key}); @override State createState() => _MyHomePageState();}class _MyHomePageState extends..

728x90