Flutter

chance-up·2022년 2월 23일
post-thumbnail

Flutter란?

Google 개발 Crossplatform,
Dart언어 사용
Hot Reload지원,
Widget기반

Flutter 구조

ios, android, web, windows등이 있고, 코드 작성은 lib폴더 내에서 작성.
lib폴더 내 작성한 코드를 빌드하게되면, 각 플랫폼 이름의 폴더 내에 소스코드가 생성된다.(빌드에 시간이 오래걸림)
앱 실행시에는 AOS/IOS Simulator가 필요.

├── README.md
├── analysis_options.yaml  (Linting에 필요한 규칙 정의)
├── android				   
├── build
├── ios
├── web
├── windows
├── lib
│   ├── main.dart
│   ├── model			(MVVM 패턴 중 Model)
│   │   ├── git_user.dart
│   │   ├── git_user_api.dart
│   │   ├── git_user_api_repository.dart
│   │   └── git_user_db_repository.dart
│   ├── view			(MVVM 패턴 중 View, ViewModel)
│   │   ├── base_screen.dart
│   │   ├── search
│   │   │   ├── search_screen.dart
│   │   │   ├── search_view_models.dart 
│   │   │   └── widgets
│   │   │       ├── search_input.dart
│   │   │       └── search_list.dart
│   │   ├── storage
│   │   │   ├── storage_screen.dart
│   │   │   ├── storage_view_model.dart
│   │   │   └── widgets
│   │   └── temp
│   │       ├── temp_screen.dart
│   │       ├── temp_view_model.dart
│   │       └── widgets
│   └── widgets
├── pubspec.lock
├── pubspec.yaml		 (종속성 관리)
├── search_git_users.iml
└── test				 (테스트 관리)

MVVM vs Bloc

vs

=> 차이는
MVVM : ViewModel의 메서드 노출하여 View에서 이를 사용할 수 있도록
Bloc : 별도의 메서드 노출하지 않고, Sink만 노출하여 이를 통해서만 이벤트 수락 / 데이터 제공

Provider(제공자) 와 Selector(선택자)

아래와 같이 Widget에 ViewModel을 Provide해준다.

아래와 같이 Widget 내에서는 ViewModel을 연결하고, 해당 변수를 사용한다.

Stateful & Stateless

TCP=> 3way handshake
vs
UDP=> 비연결형 데이터그램..

과 비슷한 개념으로 볼 수 있다.

stateful =>
State클래스와 같이 사용되며, State클래스에서 initState(), SetState()와 같이 State를 변경시키는 동작을 수행할 때 마다 UI를 다시 build한다.
위젯이 동작하는 동안 Data 변경이 필요한 경우
화면을 다시 그려서 변경된 부분을 위젯에 반영하는 동적인 위젯으로
이벤트 또는 사용자 상호 작용에 의해 동작한다.
ex) 버튼을 누를 때 UI가 변경되는 로직

stateless =>
화면이 로드될 때 한 번만 그려지는 State가 없는 위젯으로
변경이 필요한 Data가 없는 것을 의미하며
이벤트 또는 사용자 상호 작용에 의해 동작하지 않는다.
ex) 안내 페이지, 메뉴판 페이지

RestAPI 통신 방법

http vs retrofit?

Database 구축 방법

Moor vs Floor?

Linting

Flutter_lint vs lints

profile
FullStack Developer

0개의 댓글