상세 컨텐츠

본문 제목

[Flutter] 요약*** 꿀팁들

notes

by 서울의볼 2024. 5. 10. 17:29

본문

Udemy/dev story

  1. 비유: 클래스(빵틀) -> 생성자 호출(빵 만듦) -> 인스턴스(빵) // 클래스의 형태를 따른 데이터 객체를 인스턴스라 부름.
  2. annotation이란 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하도록 함. (메타데이터래) // @override의 경우 하위 클래스가 상위 클래스를 재정의함. (참고: https://velog.io/@jjangkbg/flutter-study-override)
  3. _Class는 외부에서 해당 클래스를 접근하지 못하게 만듦. underscore/underbar(_)는 크게 두 가지로 사용됨:
    •  함수내 특정 값을 받을 목적으로 사용되는 자리에 _가 있으면 이 값은 받아봤자 안쓴다는 의미로 사용됨.
    • parameter 앞에 있으면 앞서 언급한 private을 의미함. _혼자 사용된 경우가 위의 케이스인 것.

Fastcampus

  1. final은 런타임시 변수할당, const는 컴파일시 할당됨. 그래서 const는 바뀔 수 없음. 이미 상수가 지정되어 있어야 함.
    • const나 final 없이 쓰면 값 바꿀 수 있는 것임. 걍 var 같은 느낌인 듯.
    • 가끔 const를 붙인 변수가 밑줄이 그이며 에러가 나오는데, 이런건 컴파일타임에 알 수 없는 변수인 경우라 const를 지워줘야 함.
    • 타입 항상 잘 붙여주는 습관이 좋다 함 어떤 블로거가.
  2. static 변수나 함수는 메모리에 한 번 할당되어 프로그램이 종료될 때 해제됨. 때문에 클래스 객체를 생성하지 않아도 사용 가능함.
  3. 아, 환경설정 하면서 cocoapods를 사용했는데, 이건 ios랑 macOS 같은 애플 플랫폼 개발 할 때 외부 라이브러리를 관리하기 쉽도록 도와주는 의존성 관리 도구라함. Ruby라는 언어로 제작됐고, ruby에서 라이브러리 패키지로 사용되는 Gem을 통해 설치 가능. 그렇게 했음.
  4. MaterialApp은 가장 기본 위젯으로 home router, theme, locale 등 설정해주는 역할.
  5. 콜백함수: 한 위젯/클래스가 다른 위젯/클래스에 특정 작업을 수행하도록 요청보내는 방법. 부모 위젯이 자식 위젯에 콜백함수를 제공하는 게 일반적. (2.5.2 참고)
  6. 타입스크립트와 같이 '<>'는 generic의 type을 지정하는 경우로, 일반적으로 List라는 class는 parameter로 아무거나 받을 수 있지만, List<int>의 경우 int type만 받을 수 있음.
  7. 안드로이드의 library repository는 Maven, ios는 cocoapods, flutter는 pub (플러터는 라이브러리 대신 패키지라 부름).
  8. GetX 패키지 사용 중 Rx는 ReactiveX, obs는 observable를 의미함. Rx 변수 형태는 데이터의 변화를 감지해서 그 데이터를 실시간으로 반영하기 위해 사용함. 그래서 뒤에 .obs 붙여주는 것.
  9. mixin
  10. 상태관리는 여기 참고: https://soulball.tistory.com/47
  11. 웹소켓은 두 프로그램 간 메시지 교환을 위한 실시간 통신 방법 중 하나임. Socket connection을 유지한 채로 실시간 양방향 통신 혹은 데이터 전송이 가능한 프로토콜임.
  12. 하나의 온전히 동작하는 클래스를 만들기 위해 작은 동작별 클래스들(mixin)을 만들어 합치는 것이 mixin의 개념. 내외부 사용될 메서드에 대한 private(_) 선언 유의.
  13. DTO란 데이터 전송 객체로 프로세스 간 데이터를 전달하는 객체를 의미함. (예를 들어 json -> map -> dto -> model class 이런식)
    • map에서 model class 변환시 null값 등의 예외를 사전에 걸러줌. 그래서 불완전한 코드가 포함될 것 같으면 도입함. 만약 json값에 예외가 없다면 도입할 필요 없음.
    • 다시 말해, 각 계층 (view, controller, service) 간 데이터 교환을 위해 만들어진 객체이며, 로직을 가지지 않는 순수한 데이터 객체임. Constructor에서 값을 할당함.
    • Entity가 실제 DB테이블과 매칭될 클래스임.
    • 참고: https://funncy.github.io/flutter/2022/04/26/dto-entity-vo-structure/
  14. 디렉토리별 역할 설명:
디렉토리명
의미
src
실제 배포되는 소스파일, 압축되기전 파일
dist
distribution 의 약자, 배포버전
src의 소스를 압축/컴파일한 형태 (보통 배포용 공용등의 파일은 이곳에 저장)
lib
외부에서 직접 불러오는 라이브러리들
test
demo
exem
데모용 파일들
vendor
종속성이 필요한 외부 파일들 보관
bin
설치시 추가되는 파일들

 

이외의 개념 정리

  1. MaterialApp은 기본적으로 앱을 처음 실행할 때 한 번만 존재해야 하며, 구글이 지향하는 material design을 따르기 위해 사용됨. 앱이 구글에 잘 연동되고, 앱 이름을 설정함. 그리고 디자인의 바탕이 된다고 이해하면 된다 함.
  2. repository vs. mapper (참고: https://pamyferret.tistory.com/69)
    • DB 연결해서 데이터 갖고 올 때 @어노테이션 붙여서 가져오는데, mapper는 미리 정의해둔 sql과 개발할 때 사용하는 메소드를 연결하고 결과 값을 정의해놓은 타입으로 매핑시켜주는 것.
    • repository(= dao = data access object)는 mapper들을 포함해서 mapper처럼 sql을 메소드랑 매핑해서 쓰든 아니든 DB를 조회 및 조작하는 것에 중점을 둔 개념이라 함(비즈니스 로직과 분리하기 위함).
  3. config파일은 다양한 기능과 설정을 선택할 수 있는 컴퓨터 코드로, 환경설정의 여러 영역에서 매개 변수, 기본 설정, 대체 옵션 등을 결정할 수 있음. (xml, json으로 저장되기도 한다고 함)
  4. gradle은 일종의 빌드 배포 도구(build toolKit)인데, 빌드에 사용할 sdk나 앱 버전, 의존성 라이브러리 버전 등의 정보를 담고 있음. 이 정보들을 묶어서 apk 등 배포할 수 있는 형태로 패키징 해주는 빌드 배포 도구인 것.

관련글 더보기