Source code for the Intelligent Flutter Tutorial Series — a 10-lesson course on building AI-powered Flutter apps using the Gemini API, Clean Architecture, and BLoC state management.
This repo contains two complete apps built progressively across the series:
| App | Lessons | Description |
|---|---|---|
| Note Summariser | 1 – 5 | Summarises user notes using the Gemini API |
| Chat App | 6 – 10 | A persistent, context-aware AI chat with user memory |
Both apps follow Clean Architecture with the following layers:
lib/
├── core/
│ ├── di/ # Dependency injection (get_it)
│ └── errors/ # Failure types
├── data/
│ ├── cache/ # In-memory caching
│ ├── datasources/ # Remote API calls
│ ├── local/ # Drift database (Chat App)
│ ├── providers/ # Gemini AI provider
│ └── repositories/ # Repository implementations
├── domain/
│ ├── entities/ # Core data models
│ ├── repositories/ # Repository contracts
│ ├── services/ # User memory service
│ └── usecases/ # Business logic
└── presentation/
├── bloc/ # BLoC state management
└── screens/ # UI screens
- Flutter with Material 3
- Gemini API — AI inference via
http - flutter_bloc — state management
- get_it — dependency injection
- Drift — local SQLite database for chat history
- shared_preferences — lightweight user memory persistence
- mocktail + bloc_test — unit and widget testing
- Flutter SDK
^3.11.5 - A Gemini API key
flutter run --dart-define=GEMINI_API_KEY=your_api_key_hereflutter testThe series covers building real AI features from scratch:
- Lessons 1–5: Clean Architecture, BLoC, Gemini API integration, prompt engineering, and unit testing — all through the Note Summariser app.
- Lessons 6–10: Persistent chat history with Drift, user memory, context-aware conversations — all through the Chat App.