with one click
survival-flutter-skills
survival-flutter-skills contains 8 collected skills from junsuk5, with repository-level occupation coverage and site-owned skill detail pages.
Skills in this repository
Flutter ํ๋ก์ ํธ์ Data ๋ ์ด์ด ํจํด โ DataSource ์ธํฐํ์ด์คยท๊ตฌํ, Repository, DTO์ ๋๋ฉ์ธ ๋ชจ๋ธ ๋งคํ, freezed ๋ชจ๋ธ์ `fromJson`, ๊ทธ๋ฆฌ๊ณ `rxdart`์ `BehaviorSubject`๋ก ๋ง๋๋ ๋ฐ์ํ ์ ์ฅ์. "DataSource ๋ง๋ค๊ธฐ", "Repository ๊ตฌํ", "๋ฆฌํฌ์งํ ๋ฆฌ", "๋ก์ปฌ/์๊ฒฉ ๋ฐ์ดํฐ ์์ค", "BehaviorSubject", "์คํธ๋ฆผ ์ ์ฅ์", "DTO ๋งคํ", "fromJson" ๊ฐ์ ํํ์ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.
Flutter ํ๋ก์ ํธ์์ get_it ๊ธฐ๋ฐ ์์กด์ฑ ์ฃผ์ ์ค์ ๋ฐฉ๋ฒ. `diSetup()` ํจ์ ์์ฑ, DataSource/Repository/UseCase/ViewModel ๋ฑ๋ก ์์, ์ฑ๊ธํค vs ํฉํ ๋ฆฌ ์ ํ, Root ์์ ฏ์์ `getIt<T>()` ํธ์ถ ํจํด์ ๋ค๋ฃน๋๋ค. "DI ์ค์ ", "get_it", "registerSingleton", "registerFactory", "์์กด์ฑ ์ฃผ์ ", "ViewModel ๋ฑ๋ก", "diSetup", "getIt ์ธ์คํด์ค" ๊ฐ์ ํํ์ด ๋์ค๋ฉด ๋ฐ๋์ ์ด ์คํฌ์ ์ฌ์ฉํ์ธ์.
Flutter ํ๋ก์ ํธ์ ํ์ ์์ ์๋ฌ ์ฒ๋ฆฌ ํจํด โ `Error` ๋ง์ปค ์ธํฐํ์ด์ค, freezed ๊ธฐ๋ฐ `Result<D, E>` sealed ํด๋์ค, ๊ธฐ๋ฅ๋ณ ์๋ฌ enum, `switch` ํจํด ๋งค์นญ์ผ๋ก ์ฑ๊ณต/์คํจ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ. "Result ๋ํผ", "์๋ฌ ์ฒ๋ฆฌ", "ResultSuccess", "ResultError", "NetworkError", "ํ์ ์์ ์๋ฌ", "freezed sealed", "exception ๋์ Result" ๊ฐ์ ํํ์ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.
Flutter ํ๋ก์ ํธ์ ๋ผ์ฐํ ํจํด โ `go_router` ๊ธฐ๋ฐ ๊ฒฝ๋ก ์ ์ธ, `RoutePaths` ์์ ๊ด๋ฆฌ, `StatefulShellRoute`๋ก ๋ฐํ ๋ด๋น๊ฒ์ด์ ๊ตฌํ, ๊ฒฝ๋ก ํ๋ผ๋ฏธํฐ(`:recipeId`) ์ฒ๋ฆฌ, `context.go`/`context.push` ์ฌ์ฉ. "๋ผ์ฐํธ ์ถ๊ฐ", "go_router", "ํ๋ฉด ์ด๋", "๋ค๋น๊ฒ์ด์ ", "GoRoute", "StatefulShellRoute", "pathParameters", "๋ฅ๋งํฌ" ๊ฐ์ ํํ์ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.
Flutter ํ๋ก์ ํธ์ Presentation ๋ ์ด์ด ํจํด โ `ChangeNotifier` ๊ธฐ๋ฐ ViewModel, freezed `State`์ sealed `Action`, Root/Screen ์์ ฏ ๋ถ๋ฆฌ, `ListenableBuilder`๋ก ๊ด์ฐฐ, 1ํ์ฑ ์ด๋ฒคํธ๋ `StreamController`๋ก ์ ๋ฌ. "ViewModel ๋ง๋ค๊ธฐ", "State/Action", "MVI", "ChangeNotifier", "Root์ Screen ๋ถ๋ฆฌ", "onAction", "notifyListeners", "ListenableBuilder" ๊ฐ์ ํํ์ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.
Flutter ๋จ์ผ ํจํค์ง ํ๋ก์ ํธ์ ๋ ์ด์ด ๊ตฌ์กฐ, ๋๋ ํฐ๋ฆฌ ๊ท์น, ์์กด์ฑ ๋ฐฉํฅ์ ์ ๋ฆฌํ ์คํฌ. ์ ๊ธฐ๋ฅ์ ์ด๋์ ๋์ง, ์ ํ๋ฉดยท๋ฆฌํฌ์งํ ๋ฆฌยท์ ์ฆ์ผ์ด์ค๋ฅผ ์ด๋ ๋๋ ํฐ๋ฆฌ์ ๋ง๋ค์ง, "ํด๋ ๊ตฌ์กฐ๋ฅผ ์ด๋ป๊ฒ ์ก์๊น", "feature๋ฅผ ์ด๋์ ๋๊น", "core์ ๋ฃ์๊น ๋ง๊น" ๊ฐ์ ์ง๋ฌธ์ด ๋์ฌ ๋ ๋ฐ๋์ ์ฌ์ฉํ์ธ์. "ํ๋ก์ ํธ ๊ตฌ์กฐ", "๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ", "๋ ์ด์ด ๋ถ๋ฆฌ", "clean architecture", "where does X live", "์ ๊ธฐ๋ฅ ์ถ๊ฐ" ๊ฐ์ ํํ์ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.
Flutter ํ๋ก์ ํธ์ ํ ์คํธ ์์ฑ ํจํด โ `flutter_test` ๊ธฐ๋ฐ ๋จ์ ํ ์คํธ์ ์์ ฏ ํ ์คํธ, `ChangeNotifier` ViewModel ๊ฒ์ฆ, Fake Repository, `pumpWidget` + `ListenableBuilder`, ์คํธ๋ฆผ ๊ฒ์ฆ. "ํ ์คํธ ์์ฑ", "ViewModel ํ ์คํธ", "widget test", "pumpWidget", "Fake Repository", "Mock", "๋จ์ ํ ์คํธ" ๊ฐ์ ํํ์ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.
Flutter ์์ ฏ UI ์์ฑ ํจํด โ StatelessWidget ์ ํธ, `const` ์ต์ ํ, `ListenableBuilder`๋ก ViewModel ๊ด์ฐฐ, `ListView.builder`/`IndexedStack`, ๊ณต์ฉ ์ปดํฌ๋ํธ ์ฌ์ฌ์ฉ, ์ ๊ทผ์ฑ(Semantics), ๋ค์ด์ผ๋ก๊ทธยท์ค๋ต๋ฐ ์ฒ๋ฆฌ. "์์ ฏ ๋ง๋ค๊ธฐ", "UI ๋ง๋ค๊ธฐ", "StatelessWidget", "ListView", "ListenableBuilder", "Scaffold", "์ค๋ต๋ฐ", "๋ค์ด์ผ๋ก๊ทธ", "๋์์ธ ํ ํฐ", "๊ณต์ฉ ์ปดํฌ๋ํธ" ๊ฐ์ ํํ์ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.