-
[코드팩토리의 플러터 프로그래밍] 1일차개발일기장/코드팩토리의 플러터 프로그래밍 2025. 3. 4. 20:51
📋 목표
- 플러터 환경세팅
- 다트 언어 공부하기
- 후기 및 이후 목표1️⃣ 플러터 환경 세팅
기존에 웹 개발에서 사용하던 세팅과 플러터의 세팅 과정에서 어떤 차이점이 있고 어떤 것을 활용하는지 알아보자.
- MacOS를 기준으로 환경 세팅을 시작하였으며 Flutter SDK, Xcode, 안드로이드 스튜디오, Homebrew, JAVA v.17 5가지에 대한 세팅을 하였다.
세팅 과정에서 터미널에 명려어를 입력(CLI)하는 방식이 많았으며, 특히나 PATH 변수에 위치를 등록하는 과정에서 조금씩 헤메는 부분이 있었지만 정상적으로 잘 설치를 하였다. 교재에 나와있는대로 따라가기만 해도 충분한 것 같다.
2️⃣ 다트 언어 공부하기
책에 나와있는 내용도 있지만 인프런에 5시간짜리 강의가 있어 이 강의를 보면서 다트를 이해해보고 책은 스킵하려고 한다. 같은 코드팩토리에서 강의하는 것이니깐 필요한 내용만 있을 것 같아서 선택하였다.
주소: 인프런 강의 주소
첫번째 영상에서는 기본기를 위주로 알아보았다. dartpad를 활용해서 강의 내용을 따라가보자.
1. 세미콜론의 유무가 실제 에러의 유무와 연결된다는 점에서 JS와도 Python과도 다른 점으로 느껴졌다. 불편한 건 아닌데 나중에 prettier를 사용하면 뭐 금방 해결될 문제 같다.
2. 타입을 선언하는 방식에서 Java와 유사한 느낌이 들었다.물론 생략해도 가능하지만 대부분의 경우가 생략하지 않는 것 같다. const, final과 var와 dynamic 같이 런타임시에 타입을 추론해서 사용하게 되는 것도 있고 키워드가 다양하게 있어서 이부분에서 나중에 헷갈리지 않게 조심해야겠다.
// Dart는 없네? vodi main() { String name = "강신범"; int age = 30; var 성별 = '남자'; dynamic 직업 = '취준생'; 직업 = '바뀔 수 있는 dynamic 심지어 같은 타입이 아니여도 됨'; // error // 성별 = '재할당 안되는 var' }
그 밖에도 final, const 등등을 어떻게 사용할지는 나중에 한 번 더 알아보자.
3. 연산과 관련되서는 거의 파이썬과 동일하다 비교연산자 중 동등연산자도 "=="로 동일하다.
4. list, map, set의 경우도 거의 흡사하다.void main() { // list type, 타입을 지정해줘야 함 타입스크립트 쓴다고 생각하면 될 듯 List<int> numbers = [1, 2, 3, 4]; // array.length, array.add(value), array.remove(value), array.indexOf(value) // Map type, Map<String, String> dict = { 'Harry': 'Potter', 'Marry': 'Berry', } // dict.addAll(dict) dict 2개 합치기 dict[key] = value 값 넣기 // dict.keys, dict.values 키값과 밸류 값을 따로 가져오는 방법인데 튜플형식(파이썬)으로 가져오는 듯 // Set type, 인덱스는 따로 없음 근데 list랑 메서드는 좀 비슷함 final Set<String> names ={'jane', 'verry', 'good'} // set.contains('value') 나머지는 list랑 비슷함 }
5. 조건문, 반복문은 JS과 거의 동일한 것 같다.
6. 함수를 선언할 때 매개변수를 특정하는 방식이나 enum과 같이 다트만의 개념도 존재하기에 자주 들여다봐야할 것 같다.
- 필기내용더보기* enum은 타입 선언하는 거 같은데? main 밖에서 선언해서 type과 같이 쓰는데? 이거 모듈화나 오타 방지 같은 거임 사용하면 좋음
* enum Status { first }
* void main() { 여기서 사용 }
* 타입을 선언해서 사용하는 것은 아니네
*
* 함수
* 함수가 어떤 역할을 하는지 주석 먼저 달고 시작하자
* optional parameter 선언하는 방식이 신기하네
* addNumbers(int x, [int? y, int? z]) {}
* 근데 이러면 null이 들어갈 수 있어서 실행문에서 int끼리 연산하는 경우에는 에러가 나니깐 기본값을 넣는 방식으로 바꿀 수도 있다.
* addNumbers(int x, [int y = 20, int z = 30]) {}
*
* named parameter 이름이 있는 파라미터로 순서가 중요하지 않음
* addNumber({required int x, ...}) {}
* addNumber(y: 20, x: 10 ...) required 키워드 없애면 필수값이 아니게되니깐 optional parameter처럼 구현 가능
* addNumber({int x = 20, ...}) {} 근데 이제 그러면 기본값 줘야지
*
* main에 쓰이는 void는 무엇이냐?
* 반환값에 대한 타입을 선언하는 것이고만 함수 앞에 타입을 넣던가 아니면 void를 넣던가 안적혀있는 것은 void가 생략되어있는 것
* void = 공허의 의미를 가지고 있음
*
* arrow func 이것도 있구만
* typedef Operation = double Function(int x, int y, int z);
* int add(int x, int y, int z) => x + y + z
* int subtract(int x, int y, int z) => x - y - z
* 공통 타입 묶는 방식으로 typedef를 사용하는 것임3️⃣ 후기 및 이후 목표
1. 다트 강의 2~3강 수강
2. 알고리즘 3문제'개발일기장 > 코드팩토리의 플러터 프로그래밍' 카테고리의 다른 글
[코드 팩토리의 플러터 프로그래밍] 2일차 (0) 2025.03.05