flutter와 네이티브 앱 개발의 차이점
네이티브 앱은 호스트(운영체제)에서 직접적으로 위젯(안드로이드의 홈 버튼 뒤로가기 버튼 등등등)을 사용하고 화면에 띄우는데, 플러터는 호스트의 위젯을 사용할 수 없음.
플러터 앱을 들어갔을 때 안드로이드 UI처럼 보이더라도 그건 실제 안드로이드 위젯이 아니고 그저 플러터 코드로 유사하게 구현한 것 뿐임. 이게 한계점
호스트가 runner(다트 컴파일본 등)를 실행시키고(빈 캔버스 생성을 상상하자), runner가 C/C++ 기반 엔진을 실행시키면, 이 엔진이 캔버스 위에 플러토 코드대로 쭉 그려주는거라고 생각하자.
물론 이런 부분으로 인해 화면 상의 픽셀 모든 것을 온전히 코드로 통제할 수 있어 디자인의 자유도가 높다고 볼 수도 있다. 다만 호스트 위젯을 흉내낸 것에 불과하기 때문에 100% 똑같을 수 없고 약간의 괴리감이나 어색함이 있을 수도 있음.
암튼 핵심은 flutter 앱이 동작하는 방식은, 호스트 운영체제는 암것도 안하고 플러터 엔진이 모든 렌더링을 다 손수 한다!
flutter vs react native (크로스 플랫폼 지원 프레임워크 비교)
Column과 ListView
ListView는 구현이 까다로워서, 아이템 개수가 적으면 그냥 Column으로, 개수가 많아서 최적화가 필요할 땐 ListView 쓰자
파일 관리
models 폴더 : json 속 객체 하나하나를 모델링하는 dart 파일
services 폴더 : api를 활용하여 모델이나 모델 리스트 등을 리턴하는 메소드들을 갖고 있는 api service 클래스 파일
screens 폴더 : 화면 전체 하나를 구성하는 dart 파일들
widgets 폴더 : 독립적으로 재사용하고자 하는 위젯 dart 파일