개발 15

[Flutter] Riverpod 상태관리 - ConsumerStatefulWidget 가이드

✅ ConsumerStatefulWidget을 사용해야 하는 경우ConsumerStatefulWidget은 setState()와 Riverpod 상태 관리를 동시에 사용해야 할 때 필요하다.예를 들어, 사용자가 버튼을 클릭할 때마다 UI가 변경되지만, 추가적인 상태(예: 애니메이션 컨트롤러, 텍스트 필드 입력 등)도 관리해야 할 경우 ConsumerStatefulWidget을 사용하면 적절하다.🛠 ConsumerStatefulWidget 예제 코드 (텍스트 필드 + 상태 관리)import 'package:flutter/material.dart';import 'package:flutter_riverpod/flutter_riverpod.dart';/// 상태 관리 (카운터)class CounterNotif..

개발/Android 2025.04.02

[Flutter] Riverpod 상태관리 - watch vs read 차이

Riverpod watch vs read 차이와 UI 빌드 영향 분석🔍 watch vs read 차이watch (ref.watch)ref.watch(provider)를 사용하면 해당 provider의 값이 변경될 때마다 UI가 자동으로 리빌드됨.주로 UI에 실시간으로 반영해야 하는 상태 값을 구독할 때 사용.read (ref.read)ref.read(provider)는 현재 상태 값만 한 번 읽고 끝.이후 provider 값이 변경되더라도 UI가 리빌드되지 않음.주로 이벤트 기반 로직 (ex. 버튼 클릭 시 상태 변경)에서 사용.사용 방식 리빌드 여부 설명ref.watch(provider)✅ 리빌드됨provider의 값이 변경될 때마다 UI가 다시 빌드됨. (자동 감지)ref.read(provider)..

개발/Android 2025.04.02

[Flutter] Riverpod 상태관리 - ConsumerWidget 가이드

🔍 ConsumerWidget이란?ConsumerWidget은 flutter_riverpod에서 제공하는 위젯으로, Consumer와 동일한 역할을 하지만 더 간결한 코드 작성을 가능하게 한다.Consumer vs ConsumerWidget ConsumerConsumerWidget사용 방식Consumer(builder: (context, ref, child) {...})build 메서드에서 ref.watch 사용 가능코드 구조StatelessWidget + Consumer 조합 필요StatelessWidget을 대체하여 더 간결함위젯 성능특정 부분만 리빌드 가능특정 부분만 리빌드 가능추천 사용처위젯의 특정 부분만 ref.watch가 필요할 때전체 위젯에서 ref.watch를 사용할 때 1. Consum..

개발/Android 2025.04.02

[Flutter] 간단한 ToDo앱에서 MethodChannel 응용

Flutter 앱과 안드로이드 네이티브 코드(Kotlin) 간의 통신을 위한 플러그인(Platform Channel) 구현 코드📌 주요 역할Flutter에서 보낸 메소드 호출(Method Call) 을 안드로이드 네이티브에서 처리할 일 목록(To-Do List)을 저장하고 불러오는 기능 제공SharedPreferences를 이용해 데이터를 저장 및 관리📂 코드 상세 설명1. 기본 클래스 및 변수 선언class MainActivity : FlutterActivity() { private val CHANNEL_NAME = "com.example.to_do_list/task_channel" private val TAG = "MainActivity"MainActivity는 FlutterActivi..

개발/Android 2025.03.10

[Flutter] MethodChannel이란 ?

Flutter에서 MethodChannel은 Flutter와 네이티브 플랫폼(Android, iOS) 간에 데이터와 메서드를 주고받는 데 사용됩니다. 이를 통해 Flutter 앱 내에서 네이티브 코드(예: Java, Kotlin, Objective-C, Swift)와 상호작용할 수 있습니다. MethodChannel을 사용하면 Flutter와 네이티브 간에 기능을 확장하거나 네이티브 API를 활용할 수 있습니다.1. MethodChannel이란?MethodChannel은 Flutter와 네이티브 플랫폼 간에 메서드 호출과 결과를 전달하는 채널입니다.Flutter에서는 MethodChannel을 사용하여 네이티브 코드에 메서드를 호출하거나 네이티브 코드에서 결과를 Flutter로 반환할 수 있습니다.2. ..

개발/Android 2025.03.10

[Flutter] Riverpod 상태관리 라이브러리

Riverpod 개요Riverpod는 기존 Provider 패키지의 한계를 보완하여 더욱 유연하고 안정적인 상태 관리를 제공하는 라이브러리이다.컴파일 타임에 오류를 감지할 수 있어, 개발 중 발생할 수 있는 실수를 줄일 수 있으며, 반응형 패러다임을 기반으로 한다.특징Riverpod는 다음과 같은 핵심 개념을 기반으로 동작한다.Providers: 데이터의 원본을 선언하는 역할을 한다.Consumers: Provider를 구독하여 데이터의 변경 사항에 따라 UI를 재구성한다.Notifiers: Provider의 상태를 업데이트하는 역할을 한다.또한, 내부적으로 스트림을 활용하여 Provider의 상태 변화가 발생하면 자동으로 Consumer가 업데이트된다.기존 Provider보다 타입 안정성이 향상되었으며..

개발/Android 2025.02.20

[자바 ORM 표준 JPA 프로그래밍] JPA란?

JPA(Java Persistence API)는 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다.즉, 실제적으로 구현된 것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다.JPA를 구현한 대표적인 오픈소스로는 Hibernate가 있다. 자바 진영의 ORM 기술 표준이란?객체 관계 매핑객체는 객체대로 설계 & 관계형 데이터베이스는 관계형 데이터베이스대로 설계ORM 프레임워크가 중간에서 매핑 (패더라임 불일치 해결해 줌)대중적인 언어에는 대부분 ORM 기술이 존재JPA는 표준 명세JPA는 인터페이스의 모음 JPA는 애플리케이션과 JDBC 사이에서 동작 JPA 동작 - 저장JPA에서 멤버 회원 객체를 저장해 주라며 JPA에 ..

개발/Spring 2025.01.11

[Spring] 스프링 입문 - (회원 관리 예제)웹 MVC 개발

[ 회원 웹 기능 - 홈 화면 추가 ]홈 컨트롤러 추가 회원 관리용 홈 Hello Spring 회원 기능 회원 가입 회원 목록  컨트롤러가 정적 파일보다 우선순위가 높음 localhost::8080 요청이 들어오면1. controller을 찾고 없으면 !2. static 파일을 찾음 [ 회원 웹 기능 - 등록 ]1. 회원 등록 폼 개발회원 등록 폼 컨트롤러@Controllerpublic class MemberController { private MemberService memberService; @Autowired public void setMemberService(MemberSer..

개발/Spring 2024.11.10

[Spring] 스프링 입문 - 자바 코들 직접 스프링 빈 등록하기

회원 서비스와 회원 리포지토리의 @Service, @Repository, @Autowired 애노테이션을 제거하고 진행하나하나 직접 스프링한테 등록하기 ! @Bean 어노테이션과 @Configuration 어노테이션 ]만약 다음과 같은 클래스를 스프링 컨테이너에 등록하고자 한다면,public MemberRepository memberRepository() { return new MemoryMemberRepository();} 설정 클래스에서 @Bean 어노테이션을 사용하여 수동으로 스프링 컨테이너에 빈을 등록한다.이때 설정 클래스에서는 @Configuration 어노테이션을 클래스에 붙여준다.@Bean을 사용해 수동으로 빈을 등록해줄 때에는 메소드 이름으로 빈 이름이 결정된다. 그러므로 중복된 빈 ..

개발/Spring 2024.11.07

[Spring] 스프링 입문 - 컴포넌트 스캔과 자동 의존관계 설정

회원 컨트롤러가 회원 서비스, 리포지토리를 사용할 수 있게 의존관계를 준비한다. @Controller 사용!!private final MemberService memberService = new MemberService();DI (Dependency Injection), 의존성 주입: 객체 의존관계를 외부에서 넣어주는 것만약 여러 컨트롤러를 사용할 때, 매번 new MemberService로 불러올 필요가 없다 !!@Controllerpublic class MemberController { private final MemberService memberService; @Autowired public MemberController(MemberService memberService) { ..

개발/Spring 2024.11.07