우리가 학습하고 있는 플러터(flutter)는 프레임워크(Framework)에 해당하고
다트(Dart)는 이 플러터 프레임워크에서 사용하는 구글의 프로그래밍 언어입니다..
따라서 플러터를 사용하려면 다트를 알아야 사용할 수 있습니다.
프로그램 언어의 특성상 모든걸 다 배우고 가려면 너무 많은 시간이 필요하여, 그때 그때 필요한 것을 학습하며 알아가면 되는데, 그렇더라도 기본적인 이해는 하고 있어야 하기에 기본기를 다지고 가고자 합니다.
개요
다트(Dart)는 구글(Google)이 개발한 프로그래밍 언어로, 멀티 플랫폼에서 앱을 개발하기 위해 디자인된 언어입니다.
2011년 10월에 처음 공개되었으며, C언어의 문법을 기반으로 하되 Java, C#, Javascript와 같은 기능적 Structure를 추가하여 간결하면서도 강력한 기능을 제공합니다.
Dart는 모바일, 데스크톱, 서버, 웹 앱 등 다양한 용도로 사용됩니다. Dart는 Dart VM 상에서 실행되거나 네이티브 컴파일링을 통해 모바일, 데스크톱, 웹 브라우저, 서버 플랫폼에서 애플리케이션 실행을 지원합니다.
플러터(Flutter)라는 구글이 2017년 발표한 Cross Platform Framework는 Dart를 사용하고 있습니다. 현재 최신 안정 버전은 3.0으로, 안드로이드 스튜디오, IntelliJ IDEA, VS Code 등과 같은 IDE에서 Dart 및 Flutter 플러그인을 통해 소프트웨어 디자인 환경을 제공하고 있습니다. (본 강의에서는 VS Code와 Android Studio를 사용합니다.)
경쟁사들인 페이스북, 애플, 모질라 등은 부정적인 입장을 내비쳤지만, Dart는 웹 서버 및 웹 클라이언트 지원을 발표하여 이에 대한 대응을 하고 있습니다. 또한 Dart는 WebAssembly를 지원하여 웹 브라우저에서 바이너리 수준의 지원을 계획하고 있으며, 구글의 차세대 운영체제인 퓨시아(Fuchsia)도 Dart를 지원할 예정입니다.
Dart의 주요 특징
- main() 함수로 시작
- 다양한 플랫폼에서 실행 가능
- 어디서나 변수를 선언하고 사용 가능
- 모든 변수가 객체 (따라서 모든 객체는 Object class를 상속받는다.)
- 자료형이 엄격한 언어. (여러자료형을 쓰려면 dynamic을 이용)
- Null safety 지원
- 2.0에 추가된 기능으로 컴파일 전에 Null Exception을 알 수 있습니다.
- 2.0에 추가된 기능으로 컴파일 전에 Null Exception을 알 수 있습니다.
Dart의 자료형
- 숫자: int, double, num
- 문자열: String
- 불리언: bool
- 그 외:
- var(한번 입력될 때 결정, 변경 불가)
- dynamic (여려 형으로 변경 가능)
간단한 코드로 소개해보고자 합니다.
아래 예제에서 var타입의 변수에 42를 넣고 출력하니, 42가 출력되는 것을 확인할 수 있다.
예제코드
printInteger(int aNumber) { print("The number is $aNumber."); } // starting point of the program main() { var number = 42; printInteger(number); }
결과
The number is 42.
Dart 키워드
Keyword | 설명 |
---|---|
abstract | 추상 클래스나 메서드를 선언하는데 사용됩니다. |
as | 타입 캐스팅에 사용되며, 변수의 타입을 변경하는데 활용됩니다. |
assert | 디버깅 목적으로 조건이 참인지 검사하고, 거짓이면 오류를 발생시킵니다. |
async | 비동기 함수에서 사용되며, 비동기 작업을 수행하는 데 사용됩니다. |
await | async 함수 안에서만 사용되며, 비동기 작업의 완료를 기다리는데 활용됩니다. |
bool | 불리언 값을 나타내는 자료형입니다. true 또는 false만을 가질 수 있습니다. |
break | 반복문이나 switch 문에서 반복을 중단하고, 다음 코드 블록으로 이동합니다. |
case | switch 문에서 다양한 조건에 따라 실행할 코드를 정의할 때 사용됩니다. |
class | 클래스를 선언하는데 사용되며, 객체 지향 프로그래밍의 기본 단위입니다. |
const | 불변성을 가진 상수 값을 선언하는데 사용됩니다. |
continue | 반복문에서 현재 반복을 중단하고 다음 반복으로 이동합니다. |
default | switch 문에서 어떤 case에도 해당하지 않을 때 실행할 코드 블록을 정의합니다. |
do | 조건식을 평가하기 전에 루프를 실행하는데 사용됩니다. |
double | 소수점을 가지는 부동 소수점 숫자를 표현하는 자료형입니다. |
else | if 문에서 조건이 거짓일 때 실행할 코드 블록을 정의합니다. |
enum | 열거형을 정의하는데 사용되며, 연관된 상수들의 집합을 정의합니다. |
extends | 클래스가 다른 클래스를 확장(상속)할 때 사용됩니다. |
factory | 클래스의 인스턴스를 생성하는 팩토리 메서드를 정의하는데 사용됩니다. |
false | 불리언 자료형의 거짓을 나타내는 값입니다. |
final | 변수에 한 번 할당된 후에는 값을 변경할 수 없음을 나타내는 예약어입니다. |
finally | 예외 처리 구문에서 예외 발생 여부와 상관없이 실행할 코드 블록을 정의합니다. |
for | 반복문에서 사용되며, 조건식에 따라 코드를 반복 실행합니다. |
Function | 함수를 정의하는데 사용되며, 함수형 프로그래밍에서 사용됩니다. |
get | 클래스의 속성을 가져오는데 사용되는 접근자 메서드를 정의합니다. |
if | 조건문에서 조건이 참일 때 실행할 코드 블록을 정의합니다. |
implements | 클래스에서 인터페이스를 구현할 때 사용됩니다. |
import | 외부 라이브러리나 모듈을 현재 파일에 가져오는데 사용됩니다. |
in | 컬렉션에 특정 요소가 존재하는지 검사하는데 사용됩니다. |
int | 정수를 나타내는 자료형입니다. |
interface | 인터페이스를 정의하는데 사용됩니다. |
is | 타입 검사 연산자로, 객체의 타입을 확인하는데 사용됩니다. |
late | 나중에 값을 할당할 수 있는 지연 초기화 변수를 선언하는데 사용됩니다. |
library | 라이브러리를 선언하는데 사용되며, 모듈을 관리하는데 활용됩니다. |
mixin | 다중 상속을 모방하는데 사용되며, 클래스에 기능을 추가하는 데 활용됩니다. |
new | 객체를 생성하는데 사용되며, 클래스의 새로운 인스턴스를 만듭니다. |
null | 값이 존재하지 않음을 나타내는 특별한 값입니다. |
on | 예외를 처리할 타입을 정의하는데 사용됩니다. |
operator | 사용자 정의 연산자를 정의하는데 사용됩니다. |
part | 여러 파일에 걸쳐 있는 라이브러리를 정의할 때 사용됩니다. |
rethrow | 예외를 다시 발생시키는데 사용됩니다. |
return | 함수에서 값을 반환하고, 함수의 실행을 중단하고 반환을 수행합니다. |
set | 클래스의 속성에 값을 할당하는데 사용되는 설정자 메서드를 정의합니다. |
show | import 문에서 특정 요소들만 가져오도록 지정하는데 사용됩니다. |
static | 클래스의 정적 멤버(메서드, 변수)를 선언하는데 사용됩니다. |
super | 부모 클래스의 메서드를 호출하는데 사용됩니다. |
switch | 다중 분기 선택문을 정의하는데 사용됩니다. |
sync | 동기 함수를 정의하는데 사용되며, 비동기 작업을 동기적으로 처리합니다. |
this | 현재 객체를 가리키는데 사용됩니다. |
throw | 예외를 발생시키는데 사용됩니다. |
true | 불리언 자료형의 참을 나타내는 값입니다. |
try | 예외 처리를 위한 구문을 정의합니다. |
typedef | 사용자 정의 타입을 정의하는데 사용됩니다. |
var | 한번 입력될 때 결정되는 변수를 선언하는데 사용됩니다. |
void | 함수가 반환하는 값의 타입이 없음을 나타냅니다. |
while | 조건식이 참인 동안에 코드 블록을 반복 실행하는데 사용됩니다. |
with | 클래스에 mixin을 적용하는데 사용됩니다. |
yield | 제너레이터 함수에서 값을 반환하거나 생산하는데 사용됩니다. |