# 🚨 Error Prevention Guide - AI Study Assistant --- ## 📋 OVERVIEW This document documents common errors encountered during development and provides guidelines to prevent them from recurring. All developers must review this document regularly. --- ## 🔥 CRITICAL ERRORS ENCOUNTERED ### **1. Navigation System Errors** #### **❌ Error: Navigator.onGenerateRoute was null** ```dart // PROBLEM CODE: Navigator.pushReplacementNamed(context, '/login'); // SOLUTION: Use GoRouter instead context.go('/login'); ``` **Root Cause:** Using traditional Navigator API with GoRouter configuration **Prevention:** Always use `context.go()` for GoRouter navigation **Impact:** App crashes on navigation **Status:** ✅ FIXED #### **❌ Error: GoRouter sub-route path assertion** ```dart // PROBLEM CODE: path: '/login', // Leading slash in nested routes // SOLUTION: Remove leading slash path: 'login', // Relative path for nested routes ``` **Root Cause:** Nested routes with leading slashes **Prevention:** Check GoRouter documentation for path syntax **Impact:** Navigation assertion errors **Status:** ✅ FIXED --- ### **2. Animation Parameter Type Errors** #### **❌ Error: Animation parameter type mismatch** ```dart // PROBLEM CODE: .scale(duration: Duration(milliseconds: 1000), begin: 0.5) // double // SOLUTION: Use Offset for scale animations .scale(duration: Duration(milliseconds: 1000), begin: Offset(0.5, 0.5)) ``` **Root Cause:** Incorrect parameter type for scale animation **Prevention:** Check flutter_animate documentation for parameter types **Impact:** Build failures, app crashes **Status:** ✅ FIXED #### **❌ Error: String instead of double in moveY** ```dart // PROBLEM CODE: .moveY(begin: 0, end: -200) // Missing .0 // SOLUTION: Explicit double values .moveY(begin: 0.0, end: -200.0) ``` **Root Cause:** Type inference issues with animation parameters **Prevention:** Always use explicit double values for animations **Impact:** Type errors, build failures **Status:** ✅ FIXED --- ### **3. Localization and Internationalization Errors** #### **❌ Error: Hardcoded English strings** ```dart // PROBLEM CODE: Text('Sign In') // Hardcoded English // SOLUTION: Use localization Text(AppLocalizations.of(context)!.signIn) ``` **Root Cause:** Forgetting to localize new text elements **Prevention:** Always use AppLocalizations for user-facing text **Impact:** Violates language policy, poor UX **Status:** ✅ FIXED #### **❌ Error: Missing localization keys** ```dart // PROBLEM CODE: AppLocalizations.of(context)!.nonExistentKey // SOLUTION: Add key to app_pt.arb and app_en.arb ``` **Root Cause:** Adding localized text without updating ARB files **Prevention:** Check ARB files when adding new localized text **Impact:** Runtime errors, missing translations **Status:** ✅ PREVENTED --- ### **4. UI/UX Design Errors** #### **❌ Error: Text visibility issues** ```dart // PROBLEM CODE: TextStyle(color: Colors.white) // White text on white background // SOLUTION: Use theme colors TextStyle(color: AppColors.textPrimary) ``` **Root Cause:** Not considering background color in text styling **Prevention:** Always test text visibility with current theme **Impact:** Poor UX, accessibility issues **Status:** ✅ FIXED #### **❌ Error: Input field styling inconsistencies** ```dart // PROBLEM CODE: Different styles for similar inputs decoration: InputDecoration(hintStyle: TextStyle(color: Colors.grey)) // SOLUTION: Use consistent theme styling decoration: InputDecoration( hintStyle: TextStyle(color: AppColors.textHint, fontSize: 14) ) ``` **Root Cause:** Inconsistent styling approach **Prevention:** Define and use consistent styling patterns **Impact:** Inconsistent UI appearance **Status:** ✅ FIXED --- ### **5. Build and Dependency Errors** #### **❌ Error: Duplicate dependency in pubspec.yaml** ```yaml # PROBLEM: dependencies: flutter_localizations: sdk: flutter flutter_localizations: # DUPLICATE sdk: flutter # SOLUTION: Remove duplicate dependencies: flutter_localizations: sdk: flutter ``` **Root Cause:** Accidentally adding duplicate dependencies **Prevention:** Review pubspec.yaml before adding dependencies **Impact:** Build failures **Status:** ✅ FIXED #### **❌ Error: Missing imports** ```dart // PROBLEM CODE: Missing import Container() // Error: Container not defined // SOLUTION: Add proper import import 'package:flutter/material.dart'; Container() ``` **Root Cause:** Forgetting to import required packages **Prevention:** Use IDE auto-import, check import statements **Impact:** Compilation errors **Status:** ✅ PREVENTED --- ### **6. File Structure and Organization Errors** #### **❌ Error: Incorrect import paths** ```dart // PROBLEM CODE: import '../../../core/theme/app_colors.dart'; // Wrong path depth // SOLUTION: Check actual file structure import '../../../../core/theme/app_colors.dart'; ``` **Root Cause:** Incorrect relative path calculations **Prevention:** Use IDE navigation to verify paths **Impact:** Import errors, build failures **Status:** ✅ FIXED --- ## ⚠️ FREQUENT WARNINGS ### **1. Unused Imports** ```dart // WARNING: Unused import import 'package:flutter_riverpod/flutter_riverpod.dart'; // SOLUTION: Remove unused imports ``` **Prevention:** Use IDE "Organize Imports" feature regularly **Impact:** Code bloat, slower compilation ### **2. Unused Variables** ```dart // WARNING: Unused variable final String unusedVariable = "test"; // SOLUTION: Remove or prefix with underscore final String _unusedVariable = "test"; ``` **Prevention:** Review code for unused elements **Impact:** Code clutter, confusion --- ## 🛡️ PREVENTION STRATEGIES ### **1. Code Review Checklist** #### **Before Commit:** - [ ] All imports are necessary - [ ] No hardcoded strings (use localization) - [ ] Proper animation parameter types - [ ] Correct GoRouter navigation syntax - [ ] Text colors match theme - [ ] No duplicate dependencies - [ ] All localization keys exist #### **Before Testing:** - [ ] App builds without errors - [ ] Navigation works correctly - [ ] Animations run smoothly - [ ] Text is visible and readable - [ ] Portuguese localization works ### **2. Development Workflow** #### **Feature Development:** 1. **Plan:** Review requirements and existing code 2. **Implement:** Follow established patterns 3. **Test:** Verify functionality manually 4. **Review:** Check against this error list 5. **Commit:** Only after passing all checks #### **Debugging Process:** 1. **Read Error Messages:** Don't ignore warnings 2. **Check Recent Changes:** Look at what was modified 3. **Review Documentation:** Check relevant docs 4. **Test Isolated:** Reproduce issue in isolation 5. **Fix Root Cause:** Don't just patch symptoms ### **3. Tool Configuration** #### **IDE Setup:** - **Auto-import:** Enable automatic import suggestions - **Lint Rules:** Configure strict linting - **Format on Save:** Ensure consistent formatting - **Error Highlighting:** Enable all error checking #### **Git Hooks:** - **Pre-commit:** Run flutter analyze - **Pre-push:** Run flutter test - **Pre-release:** Full build verification --- ## 🔧 DEBUGGING TECHNIQUES ### **1. Common Error Patterns** #### **Navigation Issues:** ```dart // Check for: 1. Using Navigator instead of GoRouter 2. Incorrect route paths 3. Missing route definitions 4. Wrong context usage ``` #### **Animation Issues:** ```dart // Check for: 1. Wrong parameter types 2. Missing double values (.0) 3. Incorrect animation chains 4. Performance issues ``` #### **Localization Issues:** ```dart // Check for: 1. Missing AppLocalizations.of() calls 2. Undefined localization keys 3. Missing ARB file entries 4. Wrong locale setup ``` ### **2. Quick Fixes** #### **Build Errors:** ```bash flutter clean flutter pub get flutter run ``` #### **Import Issues:** ```bash flutter pub deps # Check package dependencies ``` #### **Navigation Issues:** ```dart // Always use GoRouter context methods context.go('/route') context.push('/route') context.pop() ``` --- ## 📊 ERROR STATISTICS ### **Error Frequency (Last 30 Days):** - **Navigation Errors:** 3 occurrences → 0 current - **Animation Errors:** 2 occurrences → 0 current - **Localization Errors:** 5 occurrences → 0 current - **Build Errors:** 4 occurrences → 0 current - **UI/UX Errors:** 6 occurrences → 0 current ### **Resolution Time:** - **Average Resolution:** 15 minutes - **Critical Resolution:** 5 minutes - **Complex Resolution:** 1 hour --- ## 🎯 QUALITY GOALS ### **Error Reduction Targets:** - **Navigation Errors:** 0 per week - **Build Errors:** 0 per week - **Localization Errors:** 0 per week - **UI/UX Errors:** 0 per week ### **Prevention Metrics:** - **Code Review Coverage:** 100% - **Test Coverage:** 80% (target) - **Documentation Coverage:** 100% - **Error Rate:** <1% per sprint --- ## 📞 ESCALATION PROCEDURES ### **When to Ask for Help:** 1. **Critical Errors:** App crashes, build failures 2. **Complex Issues:** Architecture decisions, performance 3. **Repeated Errors:** Same issue occurring multiple times 4. **Documentation Gaps:** Missing or unclear information ### **How to Report Errors:** 1. **Error Message:** Copy full error text 2. **Steps to Reproduce:** Detailed reproduction steps 3. **Expected vs Actual:** What should happen vs what happens 4. **Environment:** Device, OS, Flutter version 5. **Recent Changes:** What was modified before error --- ## 🔄 CONTINUOUS IMPROVEMENT ### **Monthly Reviews:** - **Error Analysis:** Review common error patterns - **Prevention Updates:** Update this document - **Training:** Share lessons learned - **Tool Updates:** Improve development tools ### **Quarterly Assessments:** - **Process Evaluation:** Review development workflow - **Quality Metrics:** Analyze error trends - **Training Needs:** Identify knowledge gaps - **Tool Upgrades:** Evaluate new development tools --- **🚨 This document is LIVING and must be updated regularly.** **📋 Last Updated: 2024-05-06 21:43** **🔄 Next Review: 2024-06-06** **📊 Error Rate: 0% (Current)** --- *All developers are responsible for reading and following this guide. Prevention is better than correction!*