본문 바로가기
App Study/Dart & Flutter

노마드코더 Dart Begginer - 1

by 쿠리의일상 2023. 6. 3.

Dart

https://dart.dev/

 

Dart programming language

Dart is a client-optimized language for fast apps on any platform

dart.dev

https://flutter.dev/

 

Flutter - Build apps for any screen

Flutter transforms the entire app development process. Build, test, and deploy beautiful mobile, web, desktop, and embedded apps from a single codebase.

flutter.dev

구글에서 만든 객체 지향 언어

크로스오버 플랫폼 SDK 인 Flutter 를 만들기 위한 언어이다.

 

UI에 최적인 언어

dart 는 2개의 컴파일러를 가지고 있다.

  • dart native : 여러 cpu의 아키텍쳐에 맞게 변환
  • dart web : dart -> js 변환해주는 컴파일러

 

JIT (Just In Time)

dart VM(가상머신) 으로 코드의 결과를 바로 화면에 보여주는 것 - 개발중일 때만 해당, 앱 배포 시 사용되지 않고 AOT를 사용

가상 머신으로 돌아가므로 조금 느린 대신 결과를 바로 확인 가능

AOT (Ahead Of Time)

컴파일을 먼저하고 그 결과인 바이너리(기계어)를 배포하는 것을 의미 - 배포 시 해당

가상 머신이 아닌 앱이 빠르게 구동

 

null safety

안전한 프로그램을 빌드할 때 중요한 개념,

프로그램에서 null 을 만나면 심각한 에러를 발생해내는데 이에 안전하다는 것.

 

 

 

설치할 필요없는 IDE

https://dartpad.dev/? 

 

DartPad

 

dartpad.dev

 

위의 온라인에서 진행해도 되지만 나같은 경우는 기왕하는거 깔자는 마음으로

brew install flutter

깔아버렸다. flutter 를 깔면 dart 도 따라온다길래 실행했고 정상적으로 작동했다.

추가로 vscode 의 flutter 확장 프로그램도 다운 받았다.

 

전에 java 와 c# 을 했던 경험이 있어서 dart 는 그나마 좀 접근이 쉬울 것 같다. (안본지 좀 오래라서 걱정이 되긴 하지만)

 

 

main( )

Entry point

main 함수에서 쓴 코드가 노출되기 때문에 꼭 써줘야 한다.

즉 dart 는 자동적으로 main 함수를 찾게 되어 있다.

 

print() 함수는 출력하기 위한 함수고!

세미콜론을 꼭 끝에 써줘야 한다. (편-안)

 

 

변수

값을 변경할 수 있는 변수 선언

1. var 키워드 : 타입을 지정하지 않고 값을 넣어서 타입 추론을 시행, 같은 타입이 아닌 경우 에러

2. 명시적으로 타입을 지정해주기

타입 변수명 = 값;

  • var 는, 함수나 메서드 내부에 지역 변수를 선언할 때 사용해준다.
  • class나 변수, property 를 선언해줄 땐 명시적으로 타입을 써준다.

값을 변경할 수 없는 변수 선언

final 키워드를 사용하여 변수를 선언해준다. (자바스크립트의 const 와 같다)

 

 

dynamic ?

여러가지 타입을 가질 수 있는 변수에 쓰는 키워드 ... 타입스크립트의 any 같은 것

var 를 써주면서 값을 초기화를 해주지 않으면 자동으로 지정되는 타입이기도 함

다만 가급적 사용하지 않는 것이 좋다. (타입스크립트에서 any를 지양하는 것처럼)

 

is ?

is타입을 확인하는 프로퍼티이다.

변수명 is 타입명 => return bool

bool 타입(true/false) 로 반환한다.

 

보통 dynamic 으로 데이터 타입을 검사하여 사용해준다.

 

 

null safety  -> nullable

개발자가 null 값을 참조할 수 없도록 하는 것

왜냐? null 을 만나면 런타임 에러가 발생하는데, 앱에서 런타임 에러라는 것은 앱을 사용할 수 없는 심각한 에러이다.

컴파일 전에 해당 에러를 잡아줘야하는데, null 을 참조하게 될 때도 분명 생긴다.

 

dart 에선 이를 위해서 어떤 변수가 null이 될 수 있음을 표기해주는 방식을 사용한다.

타입뒤에 ? 를 사용하여 null이 될 수도 있음을 나타내준다. (nullable)

void main() {
	String? name = 'Kim';

    name = null;
    // ...
    
    if(name != null) {
    	var result = name.isNotEmpty;
    }
}

nullable 의 경우, 해당 기능을 사용한 변수에 접근하고자 할 땐 조건문으로 위처럼 null 이 아닐 때를 꼭 써주고 활용해줘야 에러가 안난다.

 

또는 아래처럼 변수 뒤에 ? 를 써줘서 표현해줘야 한다.

void main() {
	String? name = 'Kim';

    name = null;
    // ...
    
    var result = name?.isNotEmpty;
}

 

 

late 란?

final이나 var 키워드를 사용하여 변수를 선언해줄 때 앞에 덧붙여주는 키워드로

초기 데이터 없이 변수를 선언할 수 있게 해준다.

 

'App Study > Dart & Flutter' 카테고리의 다른 글

노마드코더 Dart Begginer - 4  (0) 2023.06.07
노마드코더 Dart Beginner - 3  (0) 2023.06.05
노마드코더 Dart Begginer - 2  (0) 2023.06.04