-
νμ΄λ¨Έ κ°λ°μΌμ§ 2μΉ΄ν κ³ λ¦¬ μμ 2025. 3. 19. 18:10
π 2025λ 3μ 19μΌ - νμ΄λ¨Έ μ± κ°λ° μΌμ§ π
1. μ€λ ν μΌ μμ½
β μ λ ₯ νλ μ ν¨μ± κ²μ¬ μΆκ° (λΉ κ° λλ 0 μ΄ν μ«μ μ λ ₯ λ°©μ§)
β νμ΄λ¨Έ μΆκ° μ μ¦μ μμλλλ‘ λ³κ²½ (μ¬μ©μκ° λ°λ‘ μ¬μ λ²νΌμ λλ₯Ό νμ μμ)
β μ€λ₯ λ©μμ§λ₯Ό κ³΅ν΅ κ΄λ¦¬νλλ‘ error_messages.dart μ νΈλ¦¬ν° νμΌ μΆκ°
β μ λ ₯ νλ μλμ μ€λ₯ λ©μμ§ νμ (SnackBar λμ TextField λ΄λΆμμ νμ)
β Git μ»€λ° λ° νΈμ μλ£ (π Added input validation, auto-start for new timers & centralized error messages)
2. μ€λ μ΄λ €μ λ λΆλΆ & ν΄κ²° λ°©λ²
π 1) μ λ ₯ νλ μ ν¨μ± κ²μ¬μμ Flutter λΉλ μ€λ₯ λ°μ
π λ¬Έμ :
- setState(validateInput()); μ¬μ© μ "This expression has type 'void' and can't be used." μ€λ₯ λ°μ
- Hot Reloadλ‘λ ν΄κ²°λμ§ μκ³ , Flutter Runμ λ€μ μ€νν΄μΌ μ μ μλ
π ν΄κ²° λ°©λ²:
- setState(() { validateInput(); }); νμμΌλ‘ μμ
- κ·Έλλ μ€λ₯ λ°μ μ, Flutter λΉλ μΊμ μμ ν μ¬μ€ν (flutter clean && flutter pub get && flutter run)
π κ²°κ³Ό:
β λΉλ μ€λ₯ ν΄κ²°, TextField μλμ μ ν¨μ± κ²μ¬ λ©μμ§ μ μ μΆλ ₯
π 2) Flutter λΉλ λ°μ λ¬Έμ
π λ¬Έμ :
- μ½λ λ³κ²½ ν IDEμμλ μ€λ₯ νμ μμ, νμ§λ§ flutter run μ€ν μ λΉλ μ€λ₯ λ°μ
- Hot Reloadλ‘ ν΄κ²°λμ§ μκ³ , μ 체 λΉλλ₯Ό λ€μ ν΄μΌ λ°μλ¨
π ν΄κ²° λ°©λ²:
1οΈβ£ flutter clean && flutter pub get && flutter run μ€ν
2οΈβ£ iOS κ΄λ ¨ λ¬Έμ μΌ κ²½μ° rm -rf ~/Library/Developer/Xcode/DerivedData && cd ios && pod install && cd .. μ€νπ κ²°κ³Ό:
β μ¬λΉλ ν μ μ μλ! (μμΌλ‘ λΉλ λ¬Έμ κ° μκΈ°λ©΄ λ°λ‘ flutter clean μ€νν κ²!)
3. μ€λμ μ±κ³Ό
π― UI κ°μ : μ€λ₯ λ©μμ§κ° SnackBarκ° μλ μ λ ₯ νλ μλμ νμλ¨
π― UX κ°μ : νμ΄λ¨Έλ₯Ό μΆκ°νλ©΄ λ°λ‘ μ€νλλλ‘ λ³κ²½λ¨
π― μ½λ μ μ§λ³΄μ κ°μ : μ€λ₯ λ©μμ§λ₯Ό λ³λ νμΌλ‘ λΆλ¦¬ (error_messages.dart)
π― Git μ»€λ° & νΈμ μλ£: λͺ¨λ λ³κ²½ μ¬νμ΄ μ격 μ μ₯μμ μ λ‘λλ¨
4. λ€μ λͺ©ν
π 1οΈβ£ νμ΄λ¨Έ 리μ€νΈ μ λ ¬ κΈ°λ₯ μΆκ°
- λ¨μ μκ° κΈ°μ€ μ λ ¬
- νμ΄λ¨Έ μ΄λ¦ κΈ°μ€ μ λ ¬
- UIμ μ λ ¬ μ΅μ λλ‘λ€μ΄ μΆκ°
π 2οΈβ£ νμ΄λ¨Έ μμ μ λλ©μ΄μ μΆκ° (UX κ°μ )
π 3οΈβ£ μ± κΈ°λ³Έ μ€μ μ μ₯ (SharedPreferences μ¬μ© κ³ λ €)