407 lines
10 KiB
Markdown
407 lines
10 KiB
Markdown
# 🚨 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!*
|