[Flutter] flutter를 위한 dart #1

유지연·2024년 1월 19일
0

Flutter

목록 보기
1/2

👋 갑자기 flutter를 공부하게 된 사람 (TIL 240119)

🔥 Flutter

Flutter는 구글에서 개발 및 지원하는 오픈 소스 프레임워크로, 다수의 플랫폼에 대한 애플리케이션의 사용자 인터페이스(UI)를 단일 코드 베이스로 구축할 수 있다. Flutter가 2018년 처음 출시되었을 때는 주로 모바일 앱 개발을 지원했으나, 지금은 iOS, Android, 웹, Windows, MacOS, Linux 등 여러 플랫폼에 대한 애플리케이션 개발을 지원한다.

Flutter란 무엇인가?
https://aws.amazon.com/ko/what-is/flutter/


🔥 dart

dart는 2011년 구글에서 만든 언어로 flutter에서 사용되는 프로그래밍언어이다.

💡 변수 variable

1. 변수 선언하기

dart에서 변수를 선언하는 방법은 두 가지가 있다.
1) var keyword 이용하기
-> 관습적으로 함수나 메소드 내부에 지역변수를 선언할 때 사용

var name = "yeonjiyooo";
name = 12 //error!

2) 명시적으로 타입 지정하기
-> class에서 변수나 property를 선언할 때

String name = "yeonjiyooo";

두 가지 경우 모두 변수의 재할당(update)이 가능하다! 단, 변수의 타입은 동일해야함!

dynamic?

여러가지 타입을 가지는 변수에 사용하는 keyword로 어떤 자료의 type이 무엇인지 모를 때 사용할 수 있다. 하지만 기본적으로 사용은 지양하며, 정말 필요한 경우에만 사용하는 것이 좋다.

var name; //dynamic name;
name = "jiyeon";
name = 22;
name = true;

dynamic을 사용할 때에는 조건문을 이용하여 타입을 확인해주고 사용한다.

dynamic name;
name = "yeonjiyooo";
if (name is String) {
	//이 블록 안에서는 name의 타입이 String으로 인식
}

final?

재할당이 불가능한 변수는 final을 이용하여 선언하면 된다. js,ts의 const와 동일한 개념이다. final뒤에 변수의 타입을 명시해줘도 되지만, 필수는 아니다. (컴파일러가 알아서 추론)

final name = "jiyeon";

late?

변수의 선언과 동시에 값을 할당하지 않아도 되게 만든다. final이나 var 앞에 쓰이며 api를 통해 값을 받아온 후 변수에 값을 저장하게 할 수 있다.

void main() {
	late final String name;
    //do something
    name = "jiyeon";
    name = "yeonji" //final 변수이므로 불가능, 한 번만 할당 가능
}

const?

dart의 const는 compile-time constant를 만들어주며, js/ts의 const와 다르다. 중요한 것은 const는 compile time에 그 값을 알고있어야 한다는 것이다. 따라서 api를 통해 특정 값을 받아와야 하는 경우 (사용자가 앱을 사용할 때 값을 받아옴) compile 할 때 그 값이 정해져 있지 않으므로 const를 사용하는 것은 부적절하다. const는 직관적으로 말해 앱스토어에 앱을 올리기 전에 알고 있는 값! 컴파일시에 알고 있는 값들에 한하여 사용한다.

2. null Safety

개발자가 null 값을 참조할 수 없도록 하는 기능으로 null 값을 참조하려고 하는 경우 런타임 에러를 띄운다. (사용자 기기에서 에러,컴파일러가 잡지못함)

//without null safety
bool isEmpty (String string) => string.length == 0;

main() {
	isEmpty(null);
}

null safety가 없는 경우 위 코드에서는 NoSuchMethodError가 발생한다. 함수의 인자로 null을 받게되고 그것의 length를 참조하려고 하기 때문이다. (null에는 length라는 속성이 없다!)

dart에서는 어떤 변수가 null이 될 수 있음을 명확하게 표시해야한다. dart의 변수는 기본적으로 nullable이 아니기 때문이다. 변수의 타입 뒤에 ?를 붙이면 해당 변수는 null 값을 가질 수 있게 된다.

String? name = "jiyeon';
name = null;
if (name != null) {
	print(name.length);
}
name?.isNotEmpty;
profile
Keep At It

0개의 댓글