본문 바로가기

앱개발/flutter7

[Flutter] flutter 상태 관리 패키지 : Riverpod(Provier, Notifier, ref) Riverpod Riverpod이란?flutter의 강력한 상태 관리 라이브러리Provider의 단점을 개선MVVM 아키텍처에서 ViewModel을 쉽게 구현할 수 있고, View에서 ViewModel의 관찰을 쉽게 하게 해줌 Riverpod의 주요 특징타입 안전성 및 컴파일 타임 오류 감지반응형 상태 관리 : 데이터 변경 시 UI 자동 업데이트 및 불필요한 리빌드 방지의존성 주입 : Provider를 통해 여러 곳에서 동일한 인스턴스 공유 가능데이터 캐싱 및 API 관리 : 원격 데이터 소스를 효율적으로 가져옴전역 접근 가능 : context 없이도 어디서든 상태에 접근 가능테스트 친화적Provider와 Notifier Provider 종류Provider 종류특징사용 예시Provider읽기 전용 데이터.. 2025. 3. 23.
[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] TextField, TextFormField, TextEditingController TextField특징사용자 입력을 받을 때 사용되는 가장 기본적인 위젯주로 단순한 텍스트 입력, 실시간 데이터 처리에 사용됨. 예시코드import 'package:flutter/material.dart';class TextFieldExample extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('TextField 예제'), ), body: TextField( decoration: InputDecoration( labelText: '이름', hintText.. 2025. 3. 20.
[Flutter] 레이아웃 관련 위젯(2) : Row, Column, Stack Row특징자식 위젯을 가로 방향(수평)으로 나열하는 위젯 예시코드import 'package:flutter/material.dart';class RowExample extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Row 예제'), ), body: Row( mainAxisAlignment: MainAxisAlignment.spaceAround, // 가로 방향으로 균등한 간격 유지 crossAxisAlignment: CrossAxisAlignment.center, // 세.. 2025. 3. 19.
[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.
[Flutter] flutter로 레이더 차트 만들기 레이더 차트의 구성레이더 차트를 만들기 위해서 많은 요소가 필요하지만 그 중에서 레이더 차트를 구성하는 기본 요소들이 있다.ticks: 레이더 차트의 눈금값(여기서 빨간색 글자로 20, 40, 60...으로 표시된 것들) features: 레이더 차트의 각 축에 해당되는 라벨(여기서 파란색 글자로 창의력, 실행력...으로 표시된 것들)data: 실제 데이터 값. 이 값들을 기준으로 그래프가 그려지게 됨(검정색 글자로 50, 60, 70...으로 표시된 것들)sides: 다각형의 변의 개수(여기서는 육각형이므로 sides = 6이다.) 주의할 점만약 sides의 값이 features나 data값의 개수보다 작거나 크면 차트가 제대로 생성되지 않는 오류가 발생할 수 있다.이러한 오류들을 방지해주기 위해서는 .. 2024. 10. 25.