Dart : Flutter 프레임워크의 기반 언어
Flutter 개발을 위해 알아두어야 하는 Dart 언어에 대한 최소한의 정보를 담아볼 계획이다.
이 게시글은 nomadcoder 강의 영상과 Dart 공식 문서를 참고하여 작성하였다.
코드 작성 및 실행은 dartPad를 이용하였다.
노마드코더 Dart 강의 영상
https://nomadcoders.co/dart-for-beginners
Dart 시작하기 – 노마드 코더 Nomad Coders
Flutter 앱 개발을 위한 Dart 배우기
nomadcoders.co
Introduction to Dart
A brief introduction to Dart programs and important concepts.
dart.dev
dartPad
DartPad
dartpad.dev
Dart 문법의 기본 요소
- 변수
- 함수
- 클래스
- 인터페이스
- 상속
- 다형성
- 제어 흐름
Class
Flutter 프레임워크를 사용할 때 핵심적인 요소. 한 번 짚고 넘어가 보자.
Player 클래스를 생성하였다. 내부에는 name, xp라는 property와 sayHello라는 method를 만들어 주었다.
클래스 내부에 property를 지정해 줄 때는 type을 통해서 property를 선언해야 한다.
function 내에서 variable을 사용할 때는 var를 통해 변수를 선언해도 괜찮지만 class 안에서는 type을 꼭 명시해야 한다.
외부에서 class의 property에 접근하는 것을 막기 위해 final 키워드를 사용하였다. 이를 통해 외부에서 name의 값을 변경할 수 없도록 한다.
sayHello 메서드 내부에 있는 $name을 $this.name으로 사용해도 상관없지만, dart 측에서는 $name을 사용하도록 권장하고 있다. 메서드 안에 동일한 이름의 변수가 선언된 것이 아니라면, property 명 그대로 사용하도록 하자.
main함수에서 호출할 때는 다른 객체 지향 언어들과 사용 방식이 동일하다.
constructor
기본적인 Class를 생성해 보았으니 이번엔 생성자(constructor)를 한 번 사용해 보자.
기존의 객체 지향 언어들을 사용해 본 사람이라면, 생성자의 생김새가 굉장히 간단하다는 것을 느낄 수 있다.
생성자의 매개변수에 this.name, this.xp가 들어가면서 object를 만들 때 입력했던 값이 그대로 적용되는 모습을 볼 수 있다.
하지만, 이 방식을 이용하면 argument가 많아졌을 때 개발자가 헷갈릴 수 있다.
Named Constructor Parameters
기존 코드와 크게 달라진 점은 없다. Player 클래스의 생성자에 {}을 사용해 매개변수들을 감싸준 것과, required 키워드를 넣어준 것, 그리고 object를 생성할 때 argument를 넣는 방식에서 차이점이 있다.
required 키워드를 사용한 이유
requried 키워드를 사용하지 않으면, name, xp, team, age가 null이 될 수 있다는 경고와 함께 error가 발생한다. 이를 해결하기 위해서 default value를 선언하는 방법과 required 키워드를 사용하는 방법이 있다. 둘 중 상황에 맞게 사용하면 된다.
이처럼 생성자를 만들고 object를 만들 때 key:value 쌍으로 argument를 사용해서 object를 생성하는 방법이 있다. 이 방법을 사용하면 argument가 많을 때도 어떤 값이 class 내부의 어떤 property에 적용되는지 헷갈리지 않을 수 있다.
Named Constructors
위에서 설명한 constructor는 클래스를 호출할 때마다 기본적으로 호출되는 기본 constructor이다.
각각의 변수를 클래스로 보내면 생성자가 이 변수들을 class property에 할당한다.
그렇다면 조금 다르게 동작하는 또 다른 constructor를 만들기 위해서는 어떻게 해야 할까?
콜론을 통해 argument와 property를 일대일 초기화하는 생성자를 간단하게 만들 수 있다.
: 뒤의 문법이 하는 일은 Player 클래스를 초기화하는 것이다.
유저가 보낸 값으로 Player 클래스를 초기화하고, 나머지 값들은 기본값을 사용하여 초기화하였다.
: 을 넣음으로써 Dart에게 여기서 사용자가 받은 값과 함께 Player 객체를 초기화하겠다고 말했다고 생각하면 된다.
createBluePlayer 메서드 내부에 위에서 사용했던 Named Construct Parameter를 사용해도 된다. 사용 시 required 키워드 또는 default value를 통해 오류를 방지하도록 하자.
클래스에 대한 간단한 설명을 진행하였다. Dart에 대한 다른 문법은 공식 문서에 잘 정리되어 있으니 참고해 보면 좋을 것 같다.
flutter 개발을 진행하면서 정리가 필요한 문법이 있다면 추가적으로 포스팅할 예정이다.
'앱 개발 > Flutter' 카테고리의 다른 글
Flutter 앱 개발 (6) : To-Do List 기능 구현하기(할 일 수정 및 Style 수정) (0) | 2023.08.05 |
---|---|
Flutter 앱 개발 (5) : To-Do List 기능 구현하기(할 일 추가, 할 일 삭제) (0) | 2023.08.03 |
Flutter 앱 개발 (4) : Flutter 추가 설정 및 To-Do List Layout 구성 (0) | 2023.08.01 |
Flutter 앱 개발 (2) : 개발 환경 설정(Window) (0) | 2023.07.23 |
Flutter 앱 개발 (1) : Flutter? (0) | 2023.07.22 |