Skip to content

Latest commit

 

History

History

README.md

Legacy Flutter Documentation

Historical documentation files - superseded by consolidated guides


⚠️ Important Notice

These documentation files have been archived and are kept for historical reference only. They have been superseded by the new consolidated documentation in the parent docs/ folder.

For current guidelines, please refer to:


📁 Legacy Files

Original Focus: Riverpod + Supabase Integration

Key Topics:

  • Riverpod state management (AsyncNotifierProvider)
  • Supabase backend integration
  • Component-based architecture
  • Error handling with AsyncValue
  • SelectableText.rich for error display

Why Archived:

  • Too specific to one tech stack (Riverpod + Supabase)
  • Didn't address project size considerations
  • Lacked comparison with other approaches
  • Missing testing and security guidance

What Was Preserved:


Original Focus: Clean Code Principles with Dart/Flutter

Key Topics:

  • Explicit type declarations
  • Descriptive naming conventions
  • Composition over inheritance
  • Short, focused functions
  • Early returns
  • Trailing commas

Why Archived:

  • Excellent principles but lacked practical examples
  • No ✅ DO / ❌ DON'T comparisons
  • Missing state management guidance
  • No testing or security coverage

What Was Preserved:

  • All clean code principles → Core Principles
  • Enhanced with practical examples and anti-patterns
  • Integrated with Flutter-specific best practices

Original Focus: BLoC Pattern + Firebase Integration

Key Topics:

  • BLoC state management
  • Firebase backend integration
  • Event-driven architecture
  • State management with Freezed
  • Error handling with state classes

Why Archived:

  • Too specific to Firebase backend
  • Didn't explain when to use BLoC vs simpler approaches
  • Lacked migration strategies
  • Missing small/medium project guidance

What Was Preserved:


Original Focus: Clean Architecture with flutter_bloc and Dartz

Key Topics:

  • Clean Architecture layers (Domain, Data, Presentation)
  • Dependency injection with GetIt
  • Error handling with Dartz Either<Failure, Success>
  • Repository pattern
  • Use cases
  • Strict separation of concerns

Why Archived:

  • Excellent for enterprise apps but overkill for small/medium projects
  • No guidance on when this complexity is needed
  • Steep learning curve for beginners
  • Missing simpler alternatives

What Was Preserved:


🔄 Migration from Legacy Docs

If You Were Using doc1 (Riverpod + Supabase)

New Approach:

  1. Read Core Principles for universal best practices
  2. Evaluate project size:
    • Small project? Consider migrating to Provider or staying with Riverpod
    • Medium project? Provider is recommended, but Riverpod works too
    • Large project? Consider BLoC for better team scalability
  3. Review State Management Guide for your chosen approach
  4. Add testing following Testing Guide
  5. Implement security from Security Best Practices

If You Were Using doc2 (Clean Code)

New Approach:

  1. Continue following clean code principles from Core Principles
  2. Now enhanced with:
    • ✅ DO / ❌ DON'T examples
    • Performance optimization patterns
    • Flutter-specific best practices
  3. Add state management from State Management Guide
  4. Implement testing from Testing Guide
  5. Add security from Security Best Practices

If You Were Using doc3 (BLoC + Firebase)

New Approach:

  1. Read Core Principles for foundation
  2. Evaluate if BLoC is right for your project size:
    • Small project? Consider migrating to setState/Provider
    • Medium project? Consider Provider for less boilerplate
    • Large project? Continue with BLoC
  3. Follow State Management Guide BLoC section
  4. Includes migration strategies if downsizing
  5. Add comprehensive testing from Testing Guide
  6. Implement security from Security Best Practices

If You Were Using doc4 (Clean Architecture)

New Approach:

  1. Read Core Principles for foundation
  2. Evaluate if Clean Architecture is needed:
    • Small/Medium project? Likely overkill, consider simpler architecture
    • Large/Enterprise project? Continue with Clean Architecture
  3. Follow State Management Guide for BLoC integration
  4. Implement comprehensive testing from Testing Guide
  5. Add security from Security Best Practices

📊 What Changed

Improvements in New Documentation

Aspect Legacy Docs New Docs
Project Size Guidance ❌ One-size-fits-all ✅ Tiered approach (small/medium/large)
Practical Examples ⚠️ Limited ✅ Extensive ✅ DO / ❌ DON'T examples
State Management ⚠️ Conflicting approaches ✅ Clear decision tree and migration paths
Testing ❌ Missing ✅ Comprehensive testing guide
Security ❌ Missing ✅ Complete security best practices
Code Examples ⚠️ Partial ✅ Complete, runnable examples
Migration Strategies ❌ None ✅ Step-by-step migration guides
Comparison Matrix ❌ None ✅ Feature comparison tables

🎯 Key Differences

Legacy Approach

  • Four separate, sometimes conflicting documents
  • Each advocated for specific tech stack
  • No guidance on when to use which approach
  • Missing critical topics (testing, security)
  • Limited practical examples

New Approach

  • Consolidated, cohesive documentation
  • Tiered recommendations based on project size
  • Clear decision trees and migration paths
  • Comprehensive coverage (principles, state, testing, security)
  • Extensive ✅ DO / ❌ DON'T examples with explanations

📚 Further Reading

For the most up-to-date Flutter development guidelines, please refer to:


Archived: 2025-11-14
Reason: Consolidated into comprehensive, tiered documentation
Status: Historical reference only