다트를 한지가 가물가물해서 어제 했던 Hello Flutter를 가지고 다시 복습하면서 특징을 다시 보고, Dart 문법으로 활용해보는 시간을 갖겠다. Flutter Code 어제 했던 플러터 구조는 아래와 같다. Dart 문법의 미친 활용성 new 생략 그때 배운 것처럼 Dart의 장점은 new 생략이다. 위 코드를 보며 설명해 주겠다. 위에서부터 App, Widget, BuildContext, MaterialApp, Scaffold, AppBar, Text, Center 전부 다 각자 클래스의 인스턴스들이다. 근데 이상하지 않는가? 자바나 JS, TS 등에서의 클래스를 봤을 때 항상 new라는 생성자를 꼭꼭 사용했어야 했다. 플러터도 버전 2.XX 까지는 그랬다. 하지만 플러터 3.0이 릴리즈 되고 나서 new를 생략해도 됐다!!! 이게 엄청난 기능이다. Hello Flutter 하나 하는데 저기에 쓰인 인스턴스만
노마드코더 챌린지를 하는 도중 과제가 있었다. 조건은 아래와 같다. 과제 조건 Challenge goals: Using everything we learned, make a Dictionary class with the following methods: add: 단어를 추가함. get: 단어의 정의를 리턴함. delete: 단어를 삭제함. update: 단어를 업데이트 함. showAll: 사전 단어를 모두 보여줌. count: 사전 단어들의 총 갯수를 리턴함. upsert 단어를 업데이트 함. 존재하지 않을시. 이를 추가함. (update + insert = upsert) exists: 해당 단어가 사전에 존재하는지 여부를 알려줌. bulkAdd: 다음과 같은 방식으로. 여러개의 단어를 한번에 추가할 수 있게 해줌. [{"term":"김치", "definition":"대박이네~"}, {"term":"아파트", "definition":
다트의 꽃, OOP 개발을 위한 클래스형 문법을 배워보자!!! 가장 어려우면서 가장 집중해야하는 부분이다! ㅠ Dart에서 클래스는 데이터와 데이터를 조작하는 함수를 포함하는 일종의 청사진(blueprint)이다. 클래스를 사용하면 객체를 생성하고 이 객체를 사용하여 데이터를 저장, 조작, 쿼리할 수 있기에 객체들을 만들고, 관리하고 사용하는 방법을 아는 것이 중요하다!! 클래스 선언 및 인스턴스 생성 바로 예시를 뜯어먹어보자. 클래스 Player 생성 Player의 인스턴스 생성. 인스턴스는 당연히 객체다! 인스턴스를 할당한 변수 player를 씹고 뜯고 맛보고 즐기기 이런 식으로 하면 된다. 많이 익숙하지? this의 사용 근데 다른 언어의 OOP와의 차이점이 this를 안쓰는 모습이다. 다트에서는 this를 안써도 알아서 추적해주기에 안써도 된다. 애초에 다트에서 this를 쓰지말라고 권고하고 있기도 한다. 만약 아
오랜만이다. 이번 시간엔 다트의 함수 문법에 대해 알아보긋다. Dart Function 가장 흔하게 보이면서 필수인 main도 다트 함수다. 앞에 void, String 등의 함수 리턴 타입와 소괄호, 중괄호가 있으면 함수다. 이렇게 말이다. 당연히 실행해주려면 main함수에 넣어서 파라미터를 넣어준 후 실행해주자. 함수 반환 타입 아까 본 void를 칭한다. 예시를 보며 설명하겠다. 차이점을 알겠는가? 2번째 sayHello는 에러가 난다. 그 외 sayHello들은 에러가 안났다.
여기서 먼저 알아둬야할 것은 다트는 OOP 언어. 즉, 진정한 객체 지향 언어다. 리마인드하고 다음으로 넘어가자 자료 유형 기본 재료 다트의 다양한 자료형이 있다. 우리가 아는 String 뿐만 아니라 bool, int, double 등이 있다. String은 따옴표로 이루어진, bool은 true/false로 이루어진, int는 숫자, double은 소수점까지를 뜻한다. 여기서 특징은 거의 모든 자료형이 Object로 이루어져있다. 엥? 뭐지?! JS랑 TS는 원시형과 참조형(Object)로 나뉘어져 있는데 다 그렇다고?! 왜냐면 다트는 진정한 '객체 지향 언어'이기 때문이다. String 부분인 타입 선언자를 우클릭하고 type definition, 형식 정의로 이동하면은 즉, 필수로 가져야할 함수 꼭 가져야할 함수다. 없으면 아래와 같이 오류가 뜬다. 예시 세미콜론 필수 JS 같은 곳에서 오토로 달아주지 않았는가? 근데 Dart는 공백이나 앞 여백을 Formatting 해주는 기능은 있지만 세미콜론을 자동으로 달아주는 기능이 없기에 필수로 달아줘야한다. 특히 나같은 JS, TS 쟁이들은 조심해야한다.
Flutter를 이제 배울 것이다. 천천히 그리고 정확하게 말이다. Flutter는 Dart 언어로 이루어져 있는 프레임워크다. Next.js보다 더 직접적이고, UI 디자인까지 있는 다트 언어 도구다. 그러므로 Dart를 먼저 배워보겠다. Dart > 구글의 멀티 플랫폼 상에서 동작되도록 하는 앱을 위해 디자인된 프로그래밍 언어 객체 지향 언어 TS의 객체 지향 프로그래밍의 모습과 흡사하다. 걍 Flutter를 위한 언어다. 하지만 기초인 JS를 잘 알아야 TS, React를 잘 하듯이, Flutter를 위해 다트를 좀 배워놔야 편하다. 배워보자. 왜 Dart? 구글의 연동성(Dart와 Flutter는 같은 식구) 리액트를 더 잘만들고 싶어서 JS를 수정할 수 없음. 하지만 Flutter를 위한 Dart라면? 구글이 그렇게 수정을 한다면? 언어 그 자체를 수정하는 것임. 사기임; 최적화된 크