dart:async 라이브러리

dart:async는 Dart 비동기 프로그래밍의 핵심 기능인 Future, Stream을 제공합니다. 두 가지 핵심 개념: Future 1. async / await 가장 권장하는 방식으로, .then() 체인 호출보다 가독성이 좋습니다 2. .then() / .catchError() …

dart:io

참고 주의 dart:io는 웹 플랫폼에서 사용할 수 없습니다!지원 환경: Dart 명령줄 프로그램, 서버, 비웹 Flutter 앱(Android/iOS/Windows/macOS/Linux). 파일 및 디렉터리 작업 FileSystemEntity는 부모 클래스이며 File(파일), Directory(디렉터리)가 이를 상속받습니다. 1. 파일 읽기 …

dart:core 핵심 라이브러리

dart:core는 Dart에서 자동으로 암시적 가져오기되는 표준 핵심 라이브러리로 언어 동작에 필수적인 기본 기능을 제공합니다. 모듈별로 핵심 기능과 예제 코드를 정리했습니다. 다시 말해 개발자가 직접 가져오기 코드를 작성하지 않아도 라이브러리가 자동으로 …

dart:convert 라이브러리

Dart dart:convert 라이브러리의 핵심 기능을 알아봅니다. dart:convert 라이브러리는 JSON, UTF-8 변환기를 제공하며 사용자 정의 변환기도 지원합니다. JSON: 구조화된 객체와 컬렉션을 표현하기 위한 간결한 텍스트 형식입니다. UTF-8: 가변 길이 인코딩 방식으로, …

dart:math 라이브러리

Dart에는 내장 라이브러리가 제공되며, 이 라이브러리를 활용해 여러 기능을 구현할 수 있습니다. 수학 연산에 사용하는 라이브러리가 그 예시입니다. 자주 사용하는 상수 삼각함수 sin() cos() tan() 매개변수: 호도법(라디안). 각도 ↔ 라디안 …

Class Modifiers 클래스 수식자

외부 라이브러리의 클래스 상속, 구현, 인스턴스 생성 권한을 통제하고 타입 본문을 제약합니다 수식자 작성 순서 [abstract] [base/interface/final/sealed] [mixin] class;일부 수식자는 서로 배타적입니다 1. 수식자 없음 어느 라이브러리에서든 인스턴스 생성, 상속, …

Extension Types

컴파일 타임에 래핑되며 런타임에 추가 객체가 생성되지 않습니다(제로 오버헤드). 기존 타입에 새로운 정적 인터페이스를 부여하고 사용 가능한 메서드를 제한하는 목적으로 활용합니다. 일반 Extension과의 차이점: 일반 확장은 원본 타입의 모든 인스턴스에 …

확장 메서드 (Extension methods)

확장 메서드는 기존 타입, 서드파티 라이브러리 타입에 새 기능을 추가할 수 있으며 원본 클래스 소스 코드를 수정할 필요가 없습니다. IDE 코드 자동 완성에서 네이티브 메서드와 함께 확장 메서드가 표시됩니다. 다른 …

Dot shorthands(점 축약 문법)

.foo 점 축약 문법은 타입 이름을 생략할 수 있습니다. 컴파일러가 문맥으로부터 대상 타입을 추론할 수 있다면 더 간결한 Dart 코드를 작성할 수 있습니다. 열거형 값, 정적 멤버, 생성자에 접근할 때 …

열거형

열거형은 특수한 클래스로, 개수가 고정된 상수 집합을 표현할 때 사용합니다. 모든 열거형은 자동으로 Enum 클래스를 상속받습니다. 또한 열거형은 봉인 타입(sealed)이므로 상속하거나 구현, 믹스인할 수 없고 명시적으로 직접 인스턴스를 생성할 수도 …

Mixins

Mixin이란 무엇인가 Mixin은 코드 재사용 기법으로, 서로 상속 관계 없는 클래스 계열에서 코드를 공유할 수 있게 해줍니다. 여러 클래스에 일괄적으로 멤버 구현을 제공하는 것이 목표입니다. 다중 상속과 비슷해 보이지만, 본래 …

클래스 상속과 멤버 재정의

클래스 상속 Extend a class extends 키워드를 사용해 부모 클래스(상위 클래스)로부터 자식 클래스(하위 클래스)를 파생합니다. super 키워드를 이용하면 자식 클래스 안에서 부모 클래스의 멤버(메서드, 생성자 등)를 호출할 수 있습니다. 예를 …

Method(메서드)

메서드는 객체에 동작을 제공하는 함수로, 크게 4가지 유형으로 나뉩니다: 인스턴스 메서드, 연산자 오버로딩, Getter/Setter, 추상 메서드. 1. Instance methods 인스턴스 메서드 2. Operators 연산자 오버로딩 연산자 오버로딩을 통해 숫자처럼 두 …

Primary Constructors(주 생성자)

개념 파악하기 최소 Dart 언어 버전 3.13 기능: 클래스 선언 첫 줄에 필드 + 주 생성자를 한 번에 선언할 수 있어 상용구 코드를 크게 줄입니다. 런타임 동작 방식은 기존 일반 …

생성자

생성자란 무엇인가 생성자는 클래스 인스턴스를 생성하기 위한 특수 함수로, 주로 속성 초기화에 사용됩니다. 기본 생성자를 제외한 모든 생성자는 클래스명과 동일한 이름을 가집니다. Dart 생성자 분류: 1. 생성형 생성자 Generative Constructor …

클래스 class

클래스와 객체란 무엇인가 클래스는 사물을 분류하고 추상화하는 개념입니다. 주변 현실의 대상을 하나의 타입으로 묶어 정의하는데, 전 세계 모든 사람들을 ‘사람’이라는 클래스로 추상화한다고 생각하면 쉽게 이해할 수 있습니다. Bob, Tom처럼 구체적인 …

Libraries 라이브러리

모든 Dart 파일은 자체적으로 라이브러리입니다 library 지시자를 적지 않아도 적용됨; 접근 권한 규칙:식별자가 밑줄 _로 시작하면 라이브러리 전용(private)으로, 같은 라이브러리 내에서만 보이고 다른 파일/라이브러리에서는 접근 불가; Dart에는 public/protected/private 키워드가 없으며 …

메타데이터 어노테이션

메타데이터 어노테이션이란 무엇인가 @로 시작하며 코드에 정적 부가 정보를 첨부합니다. 컴파일러, IDE, 정적 분석기가 읽으며 실행 로직에 영향을 주지 않습니다. 합법적인 작성 방식은 두 가지입니다: 주로 클래스, 메서드, 변수, 함수, …

Function

Dart 언어에서 함수 역시 객체로 취급되는데, 이는 다른 프로그래밍 언어와 약간 차이가 있습니다. 함수는 일급 객체 Dart는 완전한 객체지향 언어로, 함수 자체가 객체이며 타입은 Function입니다. 변수에 할당하거나 다른 함수의 인자로 …

예외 오류 처리

Dart의 모든 예외는비검사 예외로, 함수에 던질 타입을 선언할 필요가 없으며 반드시 포착해야 하는 규칙도 없습니다. 크게 두 가지로 분류됩니다. 널이 아닌 모든 객체는 throw로 던질 수 있지만 실무 프로젝트 규칙상 …