Flutter 57

레코드 문법과 tyepdef 에 대해 알아 보자.

1. Record 문법이란?개념 설명Record는 마치 투명한 보관함과 같습니다. 기존의 클래스가 잘 포장된 선물 상자라면, Record는 내용물이 한눈에 보이는 투명한 케이스입니다. 필요한 데이터를 간단하게 묶어서 전달할 수 있는 가벼운 데이터 컨테이너라고 생각하면 됩니다.Record 문법의 특징Record는 항상 소괄호 () 로 시작합니다!이는 Record를 다른 데이터 타입과 구별하는 가장 중요한 문법적 특징입니다. 마치 수학에서 좌표를 (x, y)로 표현하는 것처럼, Dart의 Record도 괄호 안에 데이터를 담아 표현합니다.기본 문법//Record 타입 정의(String, int) userInfo = ('홍길동', 25);// Named Record({String name, int age}) ..

Flutter 2025.09.05

블로그 프로젝트 - 게시글 수정하기

Postimport 'package:flutter_blog/data/models/user.dart';class Post { // TODO - (댓글은 추후 추가) int id; // 게시물 ID String title; String content; DateTime createdAt; // 생성일시 DateTime updatedAt; // 수정일시 User user; // 작성자 (관계형 데이터) int bookmarkCount; // 북마크 수 // 현재 사용자의 북마크 여부 (로그인 상태에 따라 달라짐) bool? isBookmark; // post.createdAt.year - 2025 // post.createdAt.month - 5 // DateTime.now().diffe..

Flutter 2025.09.05

블로그 프로젝트 - 게시글 상세 보기 구현 하기

사전 기본 개념Family Provider vs 일반 Provider// 일반 Provider: 앱 전체에서 하나의 인스턴스만 사용final userProvider = NotifierProvider(() { return UserNotifier();});// 사용: ref.watch(userProvider) - 항상 같은 사용자 정보// Family Provider: 매개변수별로 다른 인스턴스 생성final postDetailProvider = AutoDisposeNotifierProvider.family(() { return PostDetailNotifier();});// 사용: ref.watch(postDetailProvider(1)) - 게시글 1번// ref.watch(postDetai..

Flutter 2025.09.05

블로그 프로젝트 - 게시글 쓰기 구현 하기 ( Riverpod 상태관리 )

사전 기반 지식1. 왜 글쓰기 폼에서 상태관리가 필요한가?// 나쁜 예: 상태관리 없이 구현하면...void writePost() { // 버튼을 여러 번 눌러도 막을 방법이 없음 // 성공/실패 상태를 관리하기 어려움 // 다른 화면과 데이터 동기화 불가능}// 좋은 예: 상태관리로 구현하면...enum PostWriteStatus { initial, loading, success, failure }// 각 단계별 상태를 명확히 관리// UI가 상태에 따라 자동으로 업데이트 2. Riverpod의 핵심 개념Provider: 상태를 제공하는 객체Notifier: 상태를 변경하는 로직을 담당Consumer: Provider의 상태를 감시하는 위젯 재사용 가능한 위젯 개선 CustomTextFormFi..

Flutter 2025.09.04

블로그 프로젝트 - 로그아웃 기능 연결 및 UI 수정

CustomNavigationimport 'package:flutter/material.dart';import 'package:flutter_blog/_core/constants/size.dart';import 'package:flutter_blog/providers/global/session_notifier.dart';import 'package:flutter_riverpod/flutter_riverpod.dart';// 창고에 접근할 수 있는 위젯으로 확장해야 한다.class CustomNavigation extends ConsumerWidget { final scaffoldKey; const CustomNavigation(this.scaffoldKey, {Key? key}) : super(key..

Flutter 2025.09.04

블로그 프로젝트 - 사용자 세션(로그인 상태) 관리 하기

왜 세션 상태 관리가 필요한가? 실제 앱에서는 이런 요구사항들이 있습니다: - 사용자가 앱을 껐다 켜도 로그인 상태 유지 - 여러 화면에서 로그인한 사용자 정보 공유 - 로그인 상태에 따라 다른 화면 표시 - 로그아웃시 모든 사용자 데이터 정리 - 토큰 만료시 자동 처리 이런 복잡한 로직을 체계적으로 관리하기 위해 전용 상태 관리 클래스를 만듭니다. 핵심 개념들세션(Session): 사용자가 앱에 로그인한 상태를 유지하는 것자동 로그인: 앱을 다시 켤 때, 이전 로그인 정보로 자동으로 로그인되는 기능토큰 관리: 서버에서 받은 인증 토큰을 저장하고 관리하는 것전역 상태 관리: 로그인 상태를 앱의 모든 화면에서 사용할 수 있게 관리session_notifier 에 로그인 기능을 완성해 보자 (추가 개발 ..

Flutter 2025.09.01

블로그 프로젝트 - 회원가입 폼 상태 관리

CustomAuthTextFormField 코드 수정 import 'package:flutter/material.dart';import 'package:flutter_blog/_core/constants/size.dart';class CustomAuthTextFormField extends StatelessWidget { final String title; // 라벨 제목 final String errorText; // 검증 실패시 표시될 에러 메세지 final Function(String)? onChanged; // 사용자 입력값이 변경될 때 호출되는 콜백 함수 final bool obscureText; CustomAuthTextFormField({ required this.title, ..

Flutter 2025.08.22