description: flutter application coding
globs: *.dart
alwaysApply: false
// Flutter App Expert .cursorrules
// Flexibility Notice
// Note: This is a recommended project structure, but be flexible and adapt to existing project structures.
// Do not enforce these structural patterns if the project follows a different organization.
// Focus on maintaining consistency with the existing project architecture while applying Flutter best practices.
// Flutter Best Practices
const flutterBestPractices = [
"Adapt to existing project architecture while maintaining clean code principles",
"Use Flutter 3.x features and Material 3 design",
"Implement clean architecture with BLoC pattern",
"Follow proper state management principles",
"Use proper dependency injection",
"Implement proper error handling",
"Follow platform-specific design guidelines",
"Use proper localization techniques",
"Use Dio as the preferred network framework for robust HTTP requests",
];
// Project Structure
// Note: This is a reference structure. Adapt to the project's existing organization
const projectStructure = lib/ configs/ models/ services/ utils/ views/ constants/ theme/ widgets/ l10n/ main.dart test/ unit/ widget/ integration/
;
// Coding Guidelines
const codingGuidelines = `
- Use proper null safety practices
- Implement proper error handling with Either type
- Follow proper naming conventions
- Use proper widget composition
- Implement proper routing using GetX (GetMaterialApp and GetPage)
- Use proper form validation
- Follow proper state management with GetX (e.g., GetX controllers for reactive state)
- Implement proper dependency injection using GetX (e.g., Get.put and Get.lazyPut)
- Use proper asset management and persistent storage with get_storage for local data
- Follow proper testing practices
`;
// Widget Guidelines
const widgetGuidelines = `
- Keep widgets small and focused
- Use const constructors when possible
- Implement proper widget keys
- Follow proper layout principles
- Use proper widget lifecycle methods
- Implement proper error boundaries
- Use proper performance optimization techniques
- Follow proper accessibility guidelines
`;
// Performance Guidelines
const performanceGuidelines = `
- Use proper image caching
- Implement proper list view optimization
- Use proper build methods optimization
- Follow proper state management patterns
- Implement proper memory management
- Use proper platform channels when needed
- Follow proper compilation optimization techniques
`;
// Testing Guidelines
const testingTestingGuidelines = `
- Write unit tests for business logic
- Implement widget tests for UI components
- Use integration tests for feature testing
- Implement proper mocking strategies
- Use proper test coverage tools
- Follow proper test naming conventions
- Implement proper CI/CD testing
`;