[Flutter] MVVM 아키텍처(Model-View-ViewModel)
MVVM 아키텍처 MVVM 아키텍처란?Model - View - ViewModel의 약자UI와 비지니스 로직을 효율적으로 분리해 구조화하는 디자인 패턴유지보수성, 재사용성이 좋음.역할이 분리되어 있어 테스트가 용이함. MVVM 구조의 핵심 요소Model데이터와 비지니스 로직을 관리하는 레이어데이터의 CRUD 작업(생성, 읽기, 수정, 삭제), 직렬화/역직렬화 로직이 이 레이어에 포함View와 직접적으로 연결되지 않으며, ViewModel하고만 소통서버 API, 데이터베이스, 로컬 저장소 등의 데이터 소스를 다룸예 : 사용자 정보, 상품 목록 등View사용자 인터페이스(UI)를 담당ViewModel에서 데이터를 가져와 화면에 표시사용자 입력을 ViewModel로 전달하며, Model에 직접 접근하지 않음...
2025. 3. 23.
[Flutter] JSON, jsonEncode(toJson), jsonDecode(fromJson)
JSON JSON이란?JavaScript의 객체 표기 방식 기반Flutter에서 서버와 데이터를 주고 받을 때 가장 많이 사용되는 데이터 형식 JSON 사용이유가볍고 빠르기 때문에 서버와 통신 시 부담이 적음.언어의 독립성으로 인해 Python, Dart, JavaScript 등 다양한 언어에서 사용 가능키-값 쌍 구조로 가독성이 높음.많은 REST API들이 JSON 형식을 기본으로 제공 JSON 예시{ "name" : "flutter" "age" : 10}중괄호 안에 key-value 쌍key는 반드시 문자열value에는 다양한 타입이 들어갈 수 있다.String, Number(int, double), Boolean(bool), Array(대괄호), Object(중괄호), nullJSON 데이터 ..
2025. 3. 21.
[Flutter] 레이아웃 관련 위젯(1) : Container, SizedBox, Card
Container특징가장 유연한 스타일링 위젯 : 여백, 패딩, 정렬, 크기, 배경색, 테두리, 그림자 등 다양한 기능 제공복잡한 디자인을 구현할 때 유리커스텀 스타일링 최적화남발할 경우 성능 저하 우려 예시 코드import 'package:flutter/material.dart';class CustomContainer extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Container'), ), body: Container( width: double.infinity, // 가로 길이..
2025. 3. 18.