라티의 작은 일기장

패스트캠퍼스 환급챌린지 3일차 미션(2월 3일): 15개 프로젝트로 실무까지 끝내는 Dart & Flutter 앱 개발 강의 후기 본문

Flutter & Dart

패스트캠퍼스 환급챌린지 3일차 미션(2월 3일): 15개 프로젝트로 실무까지 끝내는 Dart & Flutter 앱 개발 강의 후기

코드라티 2024. 2. 3. 13:31

오늘은 Dart에서 Class를 어떻게 다루는지 한번 알아보려한다. Dart는 객체지향 언어이기 때문에 JS 처럼 객체지향을 흉내내는게 아니라 진짜 필드, 메서드, 생성자와 접근 제한자 등을 지원해서 객체지향 프로그래밍이 가능하다.

한동안 JS만 열심히 팠던 나로서 객체지향 개념은 아주 기본적인 개념(상속, 캡슐화, 추상화, 다형성)말고는 증발했기에, Dart에서 생성자는 어떤 것들이 있는지 알아보았다. 아래와 같이 5가지 생성자 유형이 있다고 한다.

- Default constructors: 기본 생성자. 생성자를 선언하지 않을 때 제공.

- Named constructors: 개발자가 필요에 의해 생성한 생성자. 클래스에 대한 여러 생성자 구현 또는 클래스의 명확성을 제공.

- Redirecting constructors: 목적이 동일한 생성자로 전달하기 위한 생성자. 본문은 비어있으나 전달된 생성자의 초기값을 제공. (Java에서의 생성자 오버라이딩)

- Const constructors: 상수 생성자. 클래스가 불변의 객체를 생성하는 경우 사용.

- Factory constructors: 매번 새로운 인스턴스를 만들지 않는 경우 활용하는 생성자. 내부적인 연산을 통해 생성될 필요가 있는 경우 사용.

이제 DartPad에서 기본 생성자와 명명 생성자 함수를 실습해보자.

기본 생성자는 이렇게 클래스 안에 별도의 생성자 함수가 없는 경우 제공된다. 와중에 인스턴스 생성할 때 new 키워드가 없으니 어색하다.

(물론 JS에서도 메타프로퍼티를 통해 위와 같이 동작하도록 만들어 줄 수 있지만 인스턴스 만들 때 new 키워드 쓰는건 국룰이기에...)

 

다음은 명명 생성자이다. 클래스 내부에서 생성자 함수가 정의돼있을 때 제공된다. ez~~

 

이렇게 클래스에 대해 찍먹해보았는데, 바로 다음 강의가 개발환경 설정이라 그냥 쭉 따라가며 설정해주었다.

실리콘 맥 유저인 내가 봤을 때 특이했던건 flutter sdk 업데이트가 git을 통해 이루어진다는 것과, 실리콘 맥은 로제타 2를 설치해줘야한다는 것이다.

로제타 2는 아래 명령을 통해 설치할 수 있다.

sudo softwareupdate --install-rosetta --agree-to-license

 

그리고 공식문서 쭉 따라가면 된다. IDE는 VSCode, IntelliJ, Android Studio 이렇게 3가지를 쓸 수 있는데 나는 Android Studio를 사용하기로 했다.

 

추가로 나는 cocoapods 설치(sudo gem install cocoapods)할 때 에러가 났는데, 아래 단계에 따라 해결했다.

(일단 강사님은 비추한다고 한다)

1. brew install ruby로 ruby 설치

2. brew cleanup -d -v로 혹시 모를 찌꺼기 파일 제거

3. brew install cocoapods으로 cocoapods 설치

4. pod --version으로 잘 설치되었나 확인

 

아 근데 강의 듣다보니까 brew에서 설치할 수 있는 cocoapods는 버그가 많다고 해서 virtual ruby를 깔아서 gem을 통해 설치해주는게 맞는 것 같다.

1. brew install rbenv

2. rbenv install -l로 현재 설치 가능한 안정적인 루비 버전 확인 (나는 3.3.0을 설치했다.)

3. rbenv init으로 터미널에 나오는 eval~~ 이라는 쉘 명령어를 ~/.zshrc에 추가해준다.

4. 터미널을 싹 닫아주고 다시 실행해준다.

5. which gem을 통해 rbenv에서 설치한 gem을 가리키고 있는 것을 확인한다.

6. sudo gem install cocoapods

7. 만약 에러가 난다면 ruby -v로 방금 설치한 ruby 버전이 나오는지 확인

8. ruby 버전이 이상하면 rbenv versions로도 혹시 방금 설치한 버전이 아니라 혹시 system을 가리키고 있는지 확인

9. 혹시 system을 가리키고 있으면 rbenv global 버전 명령으로 버전 바꿔주기

10. ruby -v 명령으로 바뀐 버전이 잘 반영됐는지 확인

11. sudo gem install cocoapods

 

그리고 nvm처럼 flutter도 실무에서는 버전을 옮겨다닐 일이 있는데, 그 때 fvm을 사용하면 편리하다.

https://fvm.app/

 

fvm | Flutter Version Management

A simple CLI to manage Flutter SDK versions.

fvm.app

여기서 설치해주면 되고, 설치가 다 되면 fvm releases 명령어로 현재 fvm으로 설치 가능한 flutter의 버전을 출력할 수 있다.

현재 시간 기준으로 stable 버전은 3.16.9이므로, fvm install 3.16.9 또는 fvm install stable로 설치해주자.

설치가 다 되면 fvm list로 설치한 flutter의 버전이 잘 뜨는지 확인할 수 있다.

전역적으로 사용할 flutter의 버전을 지정하는 명령어는 fvm global 버전이다.

근데 아쉽지만 프로젝트에도 이를 지정해줘야하는데, 아래와 같은 작업이 필요하다.

1. 프로젝트 디렉토리로 이동해서 fvm use 버전을 통해 fvm에게 project에서 fvm의 flutter를 쓴다고 알려주기

2. Android Studio상에서 fvm의 flutter path를 잡아주기.

fvm이 서드파티 라이브러리라서 어쩔 수 없는거같다. 그래도 없는 것 보단 낫겠지!

 

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://bit.ly/48sS29N