"[Flutter] 블로그 만들기 - 서버 통신의 모든 것 (Dio 활용)
·
Flutter/App
이번 글에서는 Flutter 블로그 프로젝트에서 Dio를 활용한 서버 통신 구현을 다룹니다.서버와 데이터를 주고받기 위한 Dio 설정, UserRepository 설계, 테스트 코드 작성까지 모든 과정을 설명과 함께 정리합니다.1. 사전 지식: JSON과 Flutter의 데이터 처리서버와 통신할 때 주로 사용하는 데이터 형식인 JSON을 Flutter에서 처리하는 방법을 먼저 이해해 봅시다.  JSON 데이터의 두 가지 타입  JSON Object{ "status": "success", "users": [ { "username": "ssar", "password": 1234 }, { "username": "cos", "password": 5678 } ]}JSON Object는 Map 구조..
[Flutter] 상태 관리 앱 만들기 (StatefulWidget 사용)
·
Flutter/App
2단계: 도서 관리 앱으로 상태 변화 관리하기 💡 도서 관리 앱 - 위젯 트리 구조 (StatefulWidget을 이용한 상태 관리)homePage (StatefulWidget)| ├── 공유 상태: 대출 목록에 추가된 도서 목록 (공유 상태)|├── Library (Store 역할)| ├── Book 1 (도서 목록)| ├── Book 2| ├── Book 3| └── Book 4|└── BorrowList (Cart 역할) ├── Book 2 (대출 목록에 추가된 책) └── Book 4 코드 구성 main.dart import 'package:flutter/material.dart';import 'home_screen.dart';void main()..
Dart 비동기 프로그래밍
·
Flutter/Dart 언어
학습 목표1. Dart 비동기 프로그래밍에 대한 개념을 이해하기2. Future 타입에 대해 이해하고 사용하는 방법 익히기3. Future.delayed 함수를 사용해 비동기 작업을 처리하기 Dart 비동기 처리와 콜백 함수 활용Dart에서 비동기 프로그래밍은 프로그램이 다른 작업을 기다리지 않고 동시에 여러 작업을 처리할 수 있도록 도와주는 방식입니다. Future 타입을 사용하면 미래에 결과가 반환될 것이라는 약속을 나타낼 수 있습니다. ★ 키워드 묶음 ★   async / await / Future : 1회만 응답을 돌려 받는 경우Future 타입이 뭘까?Future 객체는 미래에 어떤 값이나 오류를 반환할 것이라는 약속을 나타냅니다. async 키워드가 붙은 함수 내부에서 await 키워드를 사용..
[Dart] dart의 추상 클래스
·
Flutter/Dart 언어
Dart의 추상 클래스추상 클래스란?추상적인 클래스이기 때문에 **인스턴스화(객체 생성)**할 수 없습니다.완전한 구현을 제공하지 않으며, 이를 상속받는 클래스가 구체적인 동작을 구현하도록 강제합니다.특징공통된 속성과 메서드 정의여러 클래스에서 공유할 속성과 메서드를 정의합니다.구현 강제추상 메서드를 선언하여, 상속받은 클래스에서 반드시 구현하도록 강제합니다.일반화된 개념 표현구체적인 동작이 아니라 일반적인 동작을 정의합니다✔ 우리 회사는 유아용 동물 소리 프로그램을 만듭니다. 그리고 팀장님께서 물고기 소리 나는 프로그램을 만들어 달라 요청을 했다면 어떻게 될까요?(Dog 클래스와 Cat 클래스는 이미 설계되어 있음) // 팀장이 물고기 소리 나는 프로그램을 만들어 달라 요청을 했다면?class Dog ..
[Dart] 상속과 super
·
Flutter/Dart 언어
상속과 다형성이란? 상속은 부모 클래스의 속성과 메서드를 자식 클래스가 물려받는 기능다형성은 자식 클래스 객체를 부모 클래스 타입으로 참조할 수 있는 능력을 의미※ 추가설명만약 BMW 클래스와 제네시스 클래스가 엔진클래스를 상속한다면 과연 그것은 정상적인 설계가 맞을까요??다형성이 성립하지 않기 때문에 잘못된 상속이라고 할 수 있습니다!즉, 다형성이란 BMW에게 너 엔진이야? 라고 물었을 때 어 나 엔진이야 라고 답을 할 수 있어야 합니다. (즉, 잘못된 상속이다!)부모클래스가 먼저 호출되고 자식클래스가 호출된다. 예시 코드class Burger { String? b_name; // 생성자 Burger() { print('나는 버거'); }}class CheeseBurger extends B..
[Dart] Sound Null Safety
·
Flutter/Dart 언어
다트의 사운드 널 세이프티 (Sound Null Safety) 다트의 사운드 널 세이프티는 null 참조 오류를 방지하는 기능입니다.컴파일 시점에 null 여부를 확인해, NullPointerException 같은 런타임 에러를 예방합니다.null 가능성을 타입으로 명확히 구분.안정적이고 안전한 코드 작성 가능.결론: null 에러 걱정 없이 개발할 수 있습니다.Null safety 란? 개발자가 널 에러를 피할 수 있도록 도와주는 다트 언어의 기능이다.※  학습목표널 체크 연산자( ?. ) 와 널 병합 연산자( ?? ) 에 대해서 알아 보자.// 코드의 시작점void main() { String name = '길동'; int age = 30; // String? 옵셔널 타입이다. //null 값..
[Dart] 클래스와 인스턴스
·
Flutter/Dart 언어
클래스와 객체란?클래스(Class)클래스는 객체를 정의하는 설계도입니다.클래스 = 설계도예: 자동차의 설계도객체(Object)객체는 클래스를 기반으로 생성된 실제 인스턴스를 의미합니다.객체 = 설계도를 바탕으로 만들어진 실제 자동차객체는 속성(상태)과 행위(메서드)를 가질 수 있습니다.속성: 자동차의 색상, 모델, 속도행위: 가속, 정지객체 지향 프로그래밍(OOP)객체 지향 프로그래밍은 객체 간의 관계와 상호작용을 통해 애플리케이션을 설계하고 구현하는 프로그래밍 패러다임입니다.객체 간의 협력을 중심으로 문제를 해결합니다.OOP의 주요 목적: 복잡한 문제를 더 작은 객체로 나누어 해결하기 쉽고 유지보수 가능한 프로그램을 만드는 것.클래스 생성 //Dog d1 = new Dog(); // 인스턴스화 되었다..
[Dart] dart 기본 문법 익히기 (3) - 익명함수, 람다표현식
·
Flutter/Dart 언어
익명함수// 익명 함수// 코드의 시작점void main() { // 1단계 - 이름이 없는 함수 (선언을 하더라도 외부에서 사용할 방법이 없다.) // 변수에 할당하지 않고 바로 익명 함수를 호출하는 것은 dart에서 불가능 하다. (int number) { return 100 + number; }; // 2 단계 - 함수를 변수에 담을 수 있다. // dart 함수에 타입은 Funtion 이다. Function() square = () { return 10 * 10; }; // 3 단계 var sub = (int number1, int number2) { return number1 - number2; }; // 4 단계 - dart 에서는 매개변수 데이터 타입도 ..