From f6723029058d468a43b997c0e79ecbf66f7f733c 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: Wed, 14 May 2025 20:02:12 +0900 Subject: [PATCH] docs: update FileTree --- sidebar.config.mjs | 20 +- .../{first-project.md => first-project.mdx} | 47 +-- ...ect-structure.md => project-structure.mdx} | 281 +++++++++--------- 3 files changed, 177 insertions(+), 171 deletions(-) rename src/content/docs/part1/{first-project.md => first-project.mdx} (89%) rename src/content/docs/part1/{project-structure.md => project-structure.mdx} (67%) diff --git a/sidebar.config.mjs b/sidebar.config.mjs index 4259267..d793de9 100644 --- a/sidebar.config.mjs +++ b/sidebar.config.mjs @@ -1,6 +1,6 @@ export const sidebars = [ { - label: "πŸ“¦ Part 1. μ‹œμž‘ν•˜κΈ°", + label: "πŸ“¦ 1. μ‹œμž‘ν•˜κΈ°", items: [ { label: "μ†Œκ°œ", slug: "part1/introduction" }, { label: "개발 ν™˜κ²½ ꡬ성", slug: "part1/setup" }, @@ -9,7 +9,7 @@ export const sidebars = [ ], }, { - label: "πŸ’‘ Part 2. Dart μ–Έμ–΄ 기초", + label: "πŸ’‘ 2. Dart μ–Έμ–΄ 기초", items: [ { label: "Dart μ†Œκ°œ", slug: "part2/dart-intro" }, { label: "κΈ°λ³Έ 문법 및 λ³€μˆ˜", slug: "part2/basic-syntax" }, @@ -23,7 +23,7 @@ export const sidebars = [ ], }, { - label: "🧱 Part 3. Flutter의 κΈ°λ³Έ ꡬ성 μš”μ†Œ", + label: "🧱 3. Flutter의 κΈ°λ³Έ ꡬ성 μš”μ†Œ", items: [ { label: "μœ„μ ― κ°œλ…κ³Ό μ£Όμš” μœ„μ ―", slug: "part3/widgets" }, { @@ -36,7 +36,7 @@ export const sidebars = [ ], }, { - label: "🎨 Part 4. μƒνƒœ 관리", + label: "🎨 4. μƒνƒœ 관리", items: [ { label: "μƒνƒœ 관리 μž…λ¬Έ", slug: "part4/state-management-intro" }, { @@ -48,7 +48,7 @@ export const sidebars = [ ], }, { - label: "🚦 Part 5. λ„€λΉ„κ²Œμ΄μ…˜κ³Ό ν™”λ©΄ ꡬ성", + label: "🚦 5. λ„€λΉ„κ²Œμ΄μ…˜κ³Ό ν™”λ©΄ ꡬ성", items: [ { label: "Navigator 1.0", slug: "part5/navigator1" }, { label: "Navigator 2.0", slug: "part5/navigator2" }, @@ -65,7 +65,7 @@ export const sidebars = [ ], }, { - label: "πŸ”Œ Part 6. μ™ΈλΆ€μ™€μ˜ 연동", + label: "πŸ”Œ 6. μ™ΈλΆ€μ™€μ˜ 연동", items: [ { label: "Dioλ₯Ό ν†΅ν•œ API 톡신", slug: "part6/dio" }, { @@ -75,7 +75,7 @@ export const sidebars = [ ], }, { - label: "πŸ§ͺ Part 7. ν…ŒμŠ€νŠΈμ™€ 디버깅", + label: "πŸ§ͺ 7. ν…ŒμŠ€νŠΈμ™€ 디버깅", items: [ { label: "λ‹¨μœ„ ν…ŒμŠ€νŠΈ", slug: "part7/unit-test" }, { label: "μœ„μ ― ν…ŒμŠ€νŠΈ", slug: "part7/widget-test" }, @@ -85,7 +85,7 @@ export const sidebars = [ ], }, { - label: "πŸš€ Part 8. μ•± 배포 및 운영", + label: "πŸš€ 8. μ•± 배포 및 운영", items: [ { label: "λΉŒλ“œ λͺ¨λ“œ", slug: "part8/build-modes" }, { label: "Android / iOS 배포", slug: "part8/deploy-procedure" }, @@ -96,14 +96,14 @@ export const sidebars = [ ], }, { - label: "🧭 Part 9. ν”„λ‘œμ νŠΈ ꡬ쑰 & μ•„ν‚€ν…μ²˜", + label: "🧭 9. ν”„λ‘œμ νŠΈ ꡬ쑰 & μ•„ν‚€ν…μ²˜", items: [ { label: "κΈ°λŠ₯별 vs 계측별 폴더 ꡬ쑰", slug: "part9/folder-structure" }, { label: "λ©€ν‹° λͺ¨λ“ˆ μ•„ν‚€ν…μ²˜", slug: "part9/multi-module" }, ], }, { - label: "🌍 Part 10. 보완 ν•™μŠ΅", + label: "🌍 10. 보완 ν•™μŠ΅", items: [ { label: "CustomPainter와 RenderBox", slug: "part10/custom-painting" }, { label: "μœ„μ ― 캐싱", slug: "part10/widget-caching" }, diff --git a/src/content/docs/part1/first-project.md b/src/content/docs/part1/first-project.mdx similarity index 89% rename from src/content/docs/part1/first-project.md rename to src/content/docs/part1/first-project.mdx index 4735353..d7530f9 100644 --- a/src/content/docs/part1/first-project.md +++ b/src/content/docs/part1/first-project.mdx @@ -1,6 +1,7 @@ --- title: 첫 ν”„λ‘œμ νŠΈ 생성 및 μ‹€ν–‰ --- +import { FileTree } from '@astrojs/starlight/components'; 이제 Flutter SDK와 개발 ν™˜κ²½μ΄ μ„€μ •λ˜μ—ˆμœΌλ―€λ‘œ, 첫 번째 Flutter ν”„λ‘œμ νŠΈλ₯Ό μƒμ„±ν•˜κ³  μ‹€ν–‰ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€. @@ -45,27 +46,31 @@ cd my_first_app Flutter ν”„λ‘œμ νŠΈκ°€ μƒμ„±λ˜λ©΄, λ‹€μŒκ³Ό 같은 κΈ°λ³Έ 파일 ꡬ쑰가 λ§Œλ“€μ–΄μ§‘λ‹ˆλ‹€: -``` -my_first_app/ -β”œβ”€β”€ .dart_tool/ # Dart 도ꡬ κ΄€λ ¨ 파일 -β”œβ”€β”€ .idea/ # IDE μ„€μ • (Android Studio) -β”œβ”€β”€ android/ # μ•ˆλ“œλ‘œμ΄λ“œ νŠΉν™” μ½”λ“œ -β”œβ”€β”€ build/ # λΉŒλ“œ 좜λ ₯ 파일 -β”œβ”€β”€ ios/ # iOS νŠΉν™” μ½”λ“œ -β”œβ”€β”€ lib/ # Dart μ½”λ“œ -β”‚ └── main.dart # μ•±μ˜ μ§„μž…μ  -β”œβ”€β”€ linux/ # Linux νŠΉν™” μ½”λ“œ -β”œβ”€β”€ macos/ # macOS νŠΉν™” μ½”λ“œ -β”œβ”€β”€ test/ # ν…ŒμŠ€νŠΈ μ½”λ“œ -β”œβ”€β”€ web/ # μ›Ή νŠΉν™” μ½”λ“œ -β”œβ”€β”€ windows/ # Windows νŠΉν™” μ½”λ“œ -β”œβ”€β”€ .gitignore # Git λ¬΄μ‹œ 파일 -β”œβ”€β”€ .metadata # Flutter 메타데이터 -β”œβ”€β”€ analysis_options.yaml # Dart 뢄석 μ„€μ • -β”œβ”€β”€ pubspec.lock # μ˜μ‘΄μ„± 버전 잠금 파일 -β”œβ”€β”€ pubspec.yaml # ν”„λ‘œμ νŠΈ μ„€μ • 및 μ˜μ‘΄μ„± -└── README.md # ν”„λ‘œμ νŠΈ μ„€λͺ… -``` + + + +- my_first_app/ + - .dart_tool/ # Dart 도ꡬ κ΄€λ ¨ 파일 + - .idea/ # IDE μ„€μ • (Android Studio) + - android/ # μ•ˆλ“œλ‘œμ΄λ“œ νŠΉν™” μ½”λ“œ + - build/ # λΉŒλ“œ 좜λ ₯ 파일 + - ios/ # iOS νŠΉν™” μ½”λ“œ + - lib/ # Dart μ½”λ“œ + - main.dart # μ•±μ˜ μ§„μž…μ  + - linux/ # Linux νŠΉν™” μ½”λ“œ + - macos/ # macOS νŠΉν™” μ½”λ“œ + - test/ # ν…ŒμŠ€νŠΈ μ½”λ“œ + - web/ # μ›Ή νŠΉν™” μ½”λ“œ + - windows/ # Windows νŠΉν™” μ½”λ“œ + - .gitignore # Git λ¬΄μ‹œ 파일 + - .metadata # Flutter 메타데이터 + - analysis_options.yaml # Dart 뢄석 μ„€μ • + - pubspec.lock # μ˜μ‘΄μ„± 버전 잠금 파일 + - pubspec.yaml # ν”„λ‘œμ νŠΈ μ„€μ • 및 μ˜μ‘΄μ„± + - README.md # ν”„λ‘œμ νŠΈ μ„€λͺ… + + + 이 μ€‘μ—μ„œ κ°€μž₯ μ€‘μš”ν•œ νŒŒμΌμ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€: diff --git a/src/content/docs/part1/project-structure.md b/src/content/docs/part1/project-structure.mdx similarity index 67% rename from src/content/docs/part1/project-structure.md rename to src/content/docs/part1/project-structure.mdx index 0a4c9da..987251d 100644 --- a/src/content/docs/part1/project-structure.md +++ b/src/content/docs/part1/project-structure.mdx @@ -1,7 +1,7 @@ --- title: Flutter ν”„λ‘œμ νŠΈ ꡬ쑰 이해 --- - +import { FileTree } from '@astrojs/starlight/components'; Flutter ν”„λ‘œμ νŠΈλŠ” μ—¬λŸ¬ 디렉토리와 파일둜 κ΅¬μ„±λ˜μ–΄ 있으며, 각각은 ν”„λ‘œμ νŠΈμ˜ νŠΉμ • 츑면을 λ‹΄λ‹Ήν•©λ‹ˆλ‹€. 이 ꡬ쑰λ₯Ό μ΄ν•΄ν•˜λ©΄ Flutter 앱을 더 효율적으둜 κ°œλ°œν•˜κ³  관리할 수 μžˆμŠ΅λ‹ˆλ‹€. @@ -9,26 +9,27 @@ Flutter ν”„λ‘œμ νŠΈλŠ” μ—¬λŸ¬ 디렉토리와 파일둜 κ΅¬μ„±λ˜μ–΄ 있으며, 기본적인 Flutter ν”„λ‘œμ νŠΈ κ΅¬μ‘°λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€: -``` -my_flutter_app/ -β”œβ”€β”€ .dart_tool/ -β”œβ”€β”€ .idea/ -β”œβ”€β”€ android/ -β”œβ”€β”€ build/ -β”œβ”€β”€ ios/ -β”œβ”€β”€ lib/ -β”œβ”€β”€ linux/ -β”œβ”€β”€ macos/ -β”œβ”€β”€ test/ -β”œβ”€β”€ web/ -β”œβ”€β”€ windows/ -β”œβ”€β”€ .gitignore -β”œβ”€β”€ .metadata -β”œβ”€β”€ analysis_options.yaml -β”œβ”€β”€ pubspec.lock -β”œβ”€β”€ pubspec.yaml -└── README.md -``` + +- my_flutter_app/ + - .dart_tool/ # Dart 도ꡬ κ΄€λ ¨ 파일 + - .idea/ # IDE μ„€μ • (Android Studio) + - android/ # μ•ˆλ“œλ‘œμ΄λ“œ νŠΉν™” μ½”λ“œ + - build/ # λΉŒλ“œ 좜λ ₯ 파일 + - ios/ # iOS νŠΉν™” μ½”λ“œ + - lib/ # Dart μ½”λ“œ + - main.dart # μ•±μ˜ μ§„μž…μ  + - linux/ # Linux νŠΉν™” μ½”λ“œ + - macos/ # macOS νŠΉν™” μ½”λ“œ + - test/ # ν…ŒμŠ€νŠΈ μ½”λ“œ + - web/ # μ›Ή νŠΉν™” μ½”λ“œ + - windows/ # Windows νŠΉν™” μ½”λ“œ + - .gitignore # Git λ¬΄μ‹œ 파일 + - .metadata # Flutter 메타데이터 + - analysis_options.yaml # Dart 뢄석 μ„€μ • + - pubspec.lock # μ˜μ‘΄μ„± 버전 잠금 파일 + - pubspec.yaml # ν”„λ‘œμ νŠΈ μ„€μ • 및 μ˜μ‘΄μ„± + - README.md # ν”„λ‘œμ νŠΈ μ„€λͺ… + 이제 각 디렉토리와 파일의 역할을 μžμ„Ένžˆ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€. @@ -38,15 +39,15 @@ my_flutter_app/ `lib/` λ””λ ‰ν† λ¦¬λŠ” Flutter ν”„λ‘œμ νŠΈμ˜ ν•΅μ‹¬μœΌλ‘œ, μ•±μ˜ Dart μ†ŒμŠ€ μ½”λ“œκ°€ μ €μž₯λ˜λŠ” μœ„μΉ˜μž…λ‹ˆλ‹€. -``` -lib/ -β”œβ”€β”€ main.dart # μ•±μ˜ μ§„μž…μ  -β”œβ”€β”€ models/ # 데이터 λͺ¨λΈ -β”œβ”€β”€ screens/ # ν™”λ©΄ UI -β”œβ”€β”€ widgets/ # μž¬μ‚¬μš© κ°€λŠ₯ν•œ μœ„μ ― -β”œβ”€β”€ services/ # λΉ„μ¦ˆλ‹ˆμŠ€ 둜직, API 호좜 λ“± -└── utils/ # μœ ν‹Έλ¦¬ν‹° κΈ°λŠ₯ -``` + +- lib/ + - main.dart # μ•±μ˜ μ§„μž…μ  + - models/ # 데이터 λͺ¨λΈ + - screens/ # ν™”λ©΄ UI + - widgets/ # μž¬μ‚¬μš© κ°€λŠ₯ν•œ μœ„μ ― + - services/ # λΉ„μ¦ˆλ‹ˆμŠ€ 둜직, API 호좜 λ“± + - utils/ # μœ ν‹Έλ¦¬ν‹° κΈ°λŠ₯ + **μ€‘μš”: 기본적으둜 μƒμ„±λ˜λŠ” 것은 `main.dart` 파일뿐이며, λ‚˜λ¨Έμ§€ 폴더 κ΅¬μ‘°λŠ” κ°œλ°œμžκ°€ ν•„μš”μ— 따라 μƒμ„±ν•˜κ³  κ΅¬μ„±ν•©λ‹ˆλ‹€.** @@ -81,12 +82,12 @@ class MyApp extends StatelessWidget { `test/` λ””λ ‰ν† λ¦¬λŠ” μ•±μ˜ μžλ™ν™”λœ ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€. λ‹¨μœ„ ν…ŒμŠ€νŠΈ, μœ„μ ― ν…ŒμŠ€νŠΈ 등을 이 디렉토리에 μž‘μ„±ν•©λ‹ˆλ‹€. -``` -test/ -β”œβ”€β”€ widget_test.dart # μœ„μ ― ν…ŒμŠ€νŠΈ -└── unit/ - └── models_test.dart # λ‹¨μœ„ ν…ŒμŠ€νŠΈ -``` + +- test/ + - widget_test.dart # μœ„μ ― ν…ŒμŠ€νŠΈ + - unit/ + - models_test.dart # λ‹¨μœ„ ν…ŒμŠ€νŠΈ + 기본적으둜 μƒμ„±λ˜λŠ” `widget_test.dart` νŒŒμΌμ€ μ•±μ˜ 메인 μœ„μ ―μ„ ν…ŒμŠ€νŠΈν•˜λŠ” κ°„λ‹¨ν•œ 예제λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€: @@ -112,22 +113,22 @@ void main() { `android/` λ””λ ‰ν† λ¦¬λŠ” Android ν”Œλž«νΌ κ΄€λ ¨ μ½”λ“œμ™€ 섀정을 ν¬ν•¨ν•©λ‹ˆλ‹€. -``` -android/ -β”œβ”€β”€ app/ -β”‚ β”œβ”€β”€ src/ -β”‚ β”‚ β”œβ”€β”€ main/ -β”‚ β”‚ β”‚ β”œβ”€β”€ AndroidManifest.xml # μ•± μ„ μ–Έ 및 κΆŒν•œ -β”‚ β”‚ β”‚ β”œβ”€β”€ kotlin/ # Kotlin μ†ŒμŠ€ μ½”λ“œ -β”‚ β”‚ β”‚ └── res/ # λ¦¬μ†ŒμŠ€ (μ•„μ΄μ½˜, λ¬Έμžμ—΄ λ“±) -β”‚ β”‚ └── profile/ -β”‚ β”œβ”€β”€ build.gradle # μ•± μˆ˜μ€€ λΉŒλ“œ μ„€μ • -β”‚ └── ... -β”œβ”€β”€ build.gradle # ν”„λ‘œμ νŠΈ μˆ˜μ€€ λΉŒλ“œ μ„€μ • -β”œβ”€β”€ gradle/ -β”œβ”€β”€ gradle.properties -└── ... -``` + +- android/ + - app/ + - src/ + - main/ + - AndroidManifest.xml # μ•± μ„ μ–Έ 및 κΆŒν•œ + - kotlin/ # Kotlin μ†ŒμŠ€ μ½”λ“œ + - res/ # λ¦¬μ†ŒμŠ€ (μ•„μ΄μ½˜, λ¬Έμžμ—΄ λ“±) + - profile/ + - build.gradle # μ•± μˆ˜μ€€ λΉŒλ“œ μ„€μ • + - ... + - build.gradle # ν”„λ‘œμ νŠΈ μˆ˜μ€€ λΉŒλ“œ μ„€μ • + - gradle/ + - gradle.properties + - ... + 특히 μ€‘μš”ν•œ νŒŒμΌλ“€: @@ -138,16 +139,16 @@ android/ `ios/` λ””λ ‰ν† λ¦¬λŠ” iOS ν”Œλž«νΌ κ΄€λ ¨ μ½”λ“œμ™€ 섀정을 ν¬ν•¨ν•©λ‹ˆλ‹€. -``` -ios/ -β”œβ”€β”€ Runner/ -β”‚ β”œβ”€β”€ AppDelegate.swift # iOS μ•± μ§„μž…μ  -β”‚ β”œβ”€β”€ Info.plist # μ•± ꡬ성 및 κΆŒν•œ -β”‚ β”œβ”€β”€ Assets.xcassets/ # 이미지 에셋 -β”‚ └── ... -β”œβ”€β”€ Runner.xcodeproj/ # Xcode ν”„λ‘œμ νŠΈ 파일 -└── ... -``` + +- ios/ + - Runner/ + - AppDelegate.swift # iOS μ•± μ§„μž…μ  + - Info.plist # μ•± ꡬ성 및 κΆŒν•œ + - Assets.xcassets/ # 이미지 에셋 + - ... + - Runner.xcodeproj/ # Xcode ν”„λ‘œμ νŠΈ 파일 + - ... + 특히 μ€‘μš”ν•œ νŒŒμΌλ“€: @@ -242,12 +243,12 @@ analyzer: ### assets/ 디렉토리 -``` -assets/ -β”œβ”€β”€ images/ # 이미지 파일 -β”œβ”€β”€ fonts/ # 폰트 파일 -└── data/ # JSON, CSV λ“±μ˜ 데이터 파일 -``` + +- assets/ + - images/ # 이미지 파일 + - fonts/ # 폰트 파일 + - data/ # JSON, CSV λ“±μ˜ 데이터 파일 + 이 λ””λ ‰ν† λ¦¬λŠ” `pubspec.yaml`에 λͺ…μ‹œμ μœΌλ‘œ 등둝해야 ν•©λ‹ˆλ‹€: @@ -263,12 +264,12 @@ flutter: λ‹€κ΅­μ–΄ 지원을 μœ„ν•œ 디렉토리: -``` -l10n/ -β”œβ”€β”€ app_en.arb # μ˜μ–΄ λ²ˆμ—­ -β”œβ”€β”€ app_ko.arb # ν•œκ΅­μ–΄ λ²ˆμ—­ -└── app_ja.arb # 일본어 λ²ˆμ—­ -``` + +- l10n/ + - app_en.arb # μ˜μ–΄ λ²ˆμ—­ + - app_ko.arb # ν•œκ΅­μ–΄ λ²ˆμ—­ + - app_ja.arb # 일본어 λ²ˆμ—­ + ## ν”„λ‘œμ νŠΈ ꡬ쑰화 νŒ¨ν„΄ @@ -278,23 +279,23 @@ Flutter μ•±μ˜ κ΅¬μ‘°λŠ” ν”„λ‘œμ νŠΈμ˜ 성격과 νŒ€μ˜ μ„ ν˜Έλ„μ— 따라 μ•±μ˜ κΈ°λŠ₯λ³„λ‘œ 디렉토리λ₯Ό κ΅¬μ„±ν•˜λŠ” 방식: -``` -lib/ -β”œβ”€β”€ main.dart -β”œβ”€β”€ features/ -β”‚ β”œβ”€β”€ auth/ -β”‚ β”‚ β”œβ”€β”€ screens/ -β”‚ β”‚ β”œβ”€β”€ widgets/ -β”‚ β”‚ β”œβ”€β”€ models/ -β”‚ β”‚ └── services/ -β”‚ β”œβ”€β”€ home/ -β”‚ β”œβ”€β”€ profile/ -β”‚ └── settings/ -└── shared/ - β”œβ”€β”€ widgets/ - β”œβ”€β”€ utils/ - └── constants/ -``` + +- lib/ + - main.dart + - features/ + - auth/ + - screens/ + - widgets/ + - models/ + - services/ + - home/ + - profile/ + - settings/ + - shared/ + - widgets/ + - utils/ + - constants/ + 이 κ΅¬μ‘°λŠ” κΈ°λŠ₯이 λ§Žμ€ λŒ€κ·œλͺ¨ 앱에 μ ν•©ν•©λ‹ˆλ‹€. @@ -302,16 +303,16 @@ lib/ μ•±μ˜ μ•„ν‚€ν…μ²˜ κ³„μΈ΅λ³„λ‘œ 디렉토리λ₯Ό κ΅¬μ„±ν•˜λŠ” 방식: -``` -lib/ -β”œβ”€β”€ main.dart -β”œβ”€β”€ screens/ # λͺ¨λ“  ν™”λ©΄ UI -β”œβ”€β”€ widgets/ # λͺ¨λ“  μž¬μ‚¬μš© μœ„μ ― -β”œβ”€β”€ models/ # λͺ¨λ“  데이터 λͺ¨λΈ -β”œβ”€β”€ services/ # λͺ¨λ“  μ„œλΉ„μŠ€ 둜직 -β”œβ”€β”€ repositories/ # 데이터 μ•‘μ„ΈμŠ€ 둜직 -└── utils/ # μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜ -``` + +- lib/ + - main.dart + - screens/ # λͺ¨λ“  ν™”λ©΄ UI + - widgets/ # λͺ¨λ“  μž¬μ‚¬μš© μœ„μ ― + - models/ # λͺ¨λ“  데이터 λͺ¨λΈ + - services/ # λͺ¨λ“  μ„œλΉ„μŠ€ 둜직 + - repositories/ # 데이터 μ•‘μ„ΈμŠ€ 둜직 + - utils/ # μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜ + 이 κ΅¬μ‘°λŠ” μž‘κ±°λ‚˜ 쀑간 규λͺ¨μ˜ 앱에 μ ν•©ν•©λ‹ˆλ‹€. @@ -319,20 +320,20 @@ lib/ 보닀 체계적인 μ•„ν‚€ν…μ²˜ νŒ¨ν„΄μ„ μ μš©ν•œ ꡬ쑰: -``` -lib/ -β”œβ”€β”€ main.dart -β”œβ”€β”€ ui/ -β”‚ β”œβ”€β”€ screens/ -β”‚ └── widgets/ -β”œβ”€β”€ viewmodels/ -β”œβ”€β”€ models/ -β”œβ”€β”€ services/ -β”œβ”€β”€ repositories/ -└── core/ - β”œβ”€β”€ utils/ - └── constants/ -``` + +- lib/ + - main.dart + - ui/ + - screens/ + - widgets/ + - viewmodels/ + - models/ + - services/ + - repositories/ + - core/ + - utils/ + - constants/ + 이 κ΅¬μ‘°λŠ” μ½”λ“œμ˜ μœ μ§€ 관리성과 ν…ŒμŠ€νŠΈ κ°€λŠ₯성을 λ†’μ΄λŠ” 데 도움이 λ©λ‹ˆλ‹€. @@ -368,41 +369,41 @@ lib/ λ‹€μ–‘ν•œ ν™˜κ²½(개발, μŠ€ν…Œμ΄μ§•, ν”„λ‘œλ•μ…˜)에 λŒ€ν•œ ꡬ성을 μ§€μ›ν•˜κΈ° μœ„ν•΄ λ‹€μŒκ³Ό 같은 μ ‘κ·Ό 방식을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€: -``` -lib/ -β”œβ”€β”€ main.dart # 곡톡 μ§„μž…μ  -β”œβ”€β”€ main_dev.dart # 개발 ν™˜κ²½ μ§„μž…μ  -β”œβ”€β”€ main_staging.dart # μŠ€ν…Œμ΄μ§• ν™˜κ²½ μ§„μž…μ  -β”œβ”€β”€ main_prod.dart # ν”„λ‘œλ•μ…˜ ν™˜κ²½ μ§„μž…μ  -└── config/ - β”œβ”€β”€ app_config.dart # ν™˜κ²½ μ„€μ • 클래슀 - β”œβ”€β”€ dev_config.dart - β”œβ”€β”€ staging_config.dart - └── prod_config.dart -``` + +- lib/ + - main.dart # 곡톡 μ§„μž…μ  + - main_dev.dart # 개발 ν™˜κ²½ μ§„μž…μ  + - main_staging.dart # μŠ€ν…Œμ΄μ§• ν™˜κ²½ μ§„μž…μ  + - main_prod.dart # ν”„λ‘œλ•μ…˜ ν™˜κ²½ μ§„μž…μ  + - config/ + - app_config.dart # ν™˜κ²½ μ„€μ • 클래슀 + - dev_config.dart + - staging_config.dart + - prod_config.dart + ### λΌμš°νŒ… ꡬ성 μ•±μ˜ ν™”λ©΄ μ „ν™˜μ„ κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ λΌμš°νŒ… ꡬ성: -``` -lib/ -β”œβ”€β”€ router/ -β”‚ β”œβ”€β”€ app_router.dart # λΌμš°ν„° μ„€μ • -β”‚ └── routes.dart # 라우트 μƒμˆ˜ -``` + +- lib/ + - router/ + - app_router.dart # λΌμš°ν„° μ„€μ • + - routes.dart # 라우트 μƒμˆ˜ + ### μƒνƒœ 관리 μ„ νƒν•œ μƒνƒœ 관리 μ†”λ£¨μ…˜μ— 따라 ꡬ쑰가 λ‹¬λΌμ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€: -``` -lib/ -β”œβ”€β”€ providers/ # Riverpod/Provider -β”œβ”€β”€ blocs/ # Flutter_bloc -β”œβ”€β”€ stores/ # MobX -└── state/ # 기타 μƒνƒœ 관리 -``` + +- lib/ + - providers/ # Riverpod/Provider + - blocs/ # Flutter_bloc + - stores/ # MobX + - state/ # 기타 μƒνƒœ 관리 + ## κ²°λ‘