From 341898d4af66896031e9822e1d61f8f2403c6b8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?ChangJoo=20Park=28=EB=B0=95=EC=B0=BD=EC=A3=BC=29?= Date: Tue, 13 May 2025 19:11:34 +0900 Subject: [PATCH] docs: Update SUMMARY.md --- .vscode/settings.json | 13 ++++- SUMMARY.md | 123 ++++++++++++++++++++++++++++++++++++++++++ astro.config.mjs | 122 ++++++++++++++++++++++++++++++++++++----- tsconfig.json | 10 +++- 4 files changed, 253 insertions(+), 15 deletions(-) create mode 100644 SUMMARY.md diff --git a/.vscode/settings.json b/.vscode/settings.json index a60a4a1..5fe90cd 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,5 +2,16 @@ "dart.flutterSdkPath": "/Users/changjoopark/.local/share/mise/installs/flutter/3.29.3-stable", "debug.javascript.defaultRuntimeExecutable": { "pwa-node": "/Users/changjoopark/.local/share/mise/shims/node" - } + }, + "typescript.validate.enable": true, + "javascript.validate.enable": true, + "files.exclude": { + "**/node_modules/**/*": true + }, + "search.exclude": { + "**/node_modules/**/*": true + }, + "typescript.disableAutomaticTypeAcquisition": true, + "typescript.tsserver.experimental.enableProjectDiagnostics": false, + "typescript.tsserver.enableTracing": true } diff --git a/SUMMARY.md b/SUMMARY.md new file mode 100644 index 0000000..4b28ff1 --- /dev/null +++ b/SUMMARY.md @@ -0,0 +1,123 @@ +## 안내 + +- 소개 +- 시작하기 + +## 튜토리얼 + +- 프로젝트 1. 카운터 +- 프로젝트 2. TodoList + +## 디버깅 + +- Flutter Devtools +- 로거 (talker) + +## Dart + +- 소개 + +## 기초 + +- Container +- 레이아웃 +- ListView, GridView +- Text +- Image +- Button +- Form + + +## 중급 + +- StatelessWidget / StatefulWidget +- Slivers +- MediaQuery +- LayoutBuilder +- Theme, ThemeData +- Semantics + +## 심화 + +- flutter_mix + +## 테스트 + +- unit +- mobile.dev + +## 파이어베이스 + +- Firebase Cloud Messaging + +## 애니메이션 + + +## 네비게이션 + +- 소개 +- Navigator +- Navigator 2.0 (go_router) +- 실습: TodoList 개선 + +## 서버와의 통신 + +- 소개 +- Dio +- 실습: 무한 스크롤 구현 + +## 네이티브와의 소통 + +- 소개 +- MethodChannel +- iOS에 이벤트 전달 +- Android에 이벤트 전달 +- 네이티브에서 Flutter로 + +## 상태 관리 + +- 소개 +- setState +- InheritedWidget +- riverpod + +## 에셋 관리 + +- 소개 +- 에셋 추가 방법 +- 타이포그래피 +- 이미지 +- rootBundle +- Lottie +- flutter_gen +- 활용 패턴 + +## 패키지 +- 소개 +- pub.dev 탐색 +- 패키지 관리 + - dependency_override, dev_dependencies +- 패키지 작성 + +## 모노레포 +- 소개 +- melos vs dart workspace +- 모노레포 활용 패턴 + + +## 운영 + +- 배포 환경 +- 자동 배포 (Codemagic) +- Apple Appstore +- Google Play +- 사용자 분석 (Firebase Analytics) +- 사용자 분석 (Posthog) +- 오류 추적 (Sentry) +- 오류 추적 (Firebase Crashlytics) + +## 참조 + +- 의존성 관리 +- Flutter Hooks +- 추천 패키지 diff --git a/astro.config.mjs b/astro.config.mjs index 5e15cf5..4d423e8 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -9,7 +9,7 @@ export default defineConfig({ trailingSlash: "always", integrations: [ starlight({ - title: "My Own Flutter Book", + title: "Flutter 문서", social: [ { icon: "github", @@ -36,9 +36,18 @@ export default defineConfig({ ], }, { - label: "개발 가이드", + label: "기본 컴포넌트", items: [ - { label: "프로젝트 1. 카운터", slug: "tutorials/1_counter" }, + { label: "Container", slug: "tutorials/1_counter" }, + { label: "레이아웃", slug: "tutorials/1_counter" }, + { label: "폼 엘리먼트", slug: "tutorials/1_counter" }, + { label: "폼 엘리먼트", slug: "tutorials/1_counter" }, + ], + }, + { + label: "커스텀 컴포넌트", + items: [ + { label: "Container", slug: "tutorials/1_counter" }, { label: "프로젝트 2. TodoList", slug: "tutorials/2_todo_list", @@ -46,26 +55,115 @@ export default defineConfig({ ], }, { - label: "주요 컴포넌트", + label: "네이티브와의 소통", items: [ - { label: "프로젝트 1. 카운터", slug: "tutorials/1_counter" }, + { label: "소개", slug: "tutorials/1_counter" }, { - label: "프로젝트 2. TodoList", + label: "MethodChannel", + slug: "tutorials/2_todo_list", + }, + { + label: "iOS에 이벤트 전달", + slug: "tutorials/2_todo_list", + }, + { + label: "Android에 이벤트 전달", + slug: "tutorials/2_todo_list", + }, + { + label: "네이티브에서 Flutter로", slug: "tutorials/2_todo_list", }, ], }, { - label: "참조", - autogenerate: { directory: "reference" }, - }, - { - label: "리소스", + label: "상태 관리", items: [ + { label: "소개", slug: "tutorials/1_counter" }, { - label: "프로젝트 2. TodoList", + label: "InheritedWidget", slug: "tutorials/2_todo_list", }, + { + label: "riverpod", + slug: "tutorials/2_todo_list", + }, + ], + }, + { + label: "에셋 관리", + items: [ + { label: "소개", slug: "tutorials/1_counter" }, + { label: "flutter_gen", slug: "tutorials/1_counter" }, + { + label: "활용 패턴", + slug: "tutorials/2_todo_list", + }, + ], + }, + { + label: "패키지", + items: [ + { label: "소개", slug: "tutorials/1_counter" }, + { + label: "패키지 관리", + slug: "tutorials/2_todo_list", + }, + { + label: "패키지 작성", + slug: "tutorials/2_todo_list", + }, + ], + }, + { + label: "모노레포", + items: [ + { label: "소개", slug: "tutorials/1_counter" }, + { + label: "melos vs dart workspace", + slug: "tutorials/2_todo_list", + }, + { + label: "모노레포 활용 패턴", + slug: "tutorials/2_todo_list", + }, + ], + }, + { + label: "운영", + items: [ + { label: "배포 환경", slug: "tutorials/1_counter" }, + { label: "자동 배포 (Codemagic)", slug: "tutorials/1_counter" }, + { label: "Apple Appstore", slug: "tutorials/1_counter" }, + { label: "Google Play", slug: "tutorials/1_counter" }, + { + label: "사용자 분석 (Firebase Analytics)", + slug: "tutorials/2_todo_list", + }, + { + label: "사용자 분석 (Posthog)", + slug: "tutorials/2_todo_list", + }, + { + label: "오류 추적 (Sentry)", + slug: "tutorials/2_todo_list", + }, + { + label: "오류 추적 (Firebase Crashlytics)", + slug: "tutorials/2_todo_list", + }, + ], + }, + { + label: "참조", + items: [ + { + label: "의존성 관리", + slug: "tutorials/2_todo_list", + }, + { label: "Flutter Hooks", slug: "tutorials/1_counter" }, + { label: "추천 패키지", slug: "tutorials/1_counter" }, + ], }, ], diff --git a/tsconfig.json b/tsconfig.json index 8bf91d3..ee9ebec 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,11 @@ { "extends": "astro/tsconfigs/strict", - "include": [".astro/types.d.ts", "**/*"], - "exclude": ["dist"] + "include": [ + ".astro/types.d.ts", + "**/*" + ], + "exclude": [ + "dist", + "node_modules" + ] }