Learn to build mobile apps with Flutter, 1-on-1
Offline 1-on-1 lessons, paced to you. Start by building your own app with AI, or go all the way to setting up a Flutter codebase ready for real projects.
Offline 1-on-1
We sit down and code together. You can ask anything at any point, and I'll go at your pace.
Built around your goal
Whether you want your own app or a Flutter job, the examples and exercises follow what you're aiming for.
You leave with an app
Every package ends with an app you built yourself, running on your own phone.
A shot at a job
After the course, you'll have the chance to work at a digital transformation company.
Packages
Pick the package that fits your goal
Not sure which one? Leave your details and we'll figure it out together.
Flutter with AI
Get the Flutter basics down, then build your own app with AI.
- Just enough Dart & Flutter to read code
- Asking AI for screens and features
- Reading and fixing the code AI writes
- Your own app, running on your phone
Flutter Fundamentals
Learn Dart and Flutter properly, from scratch to a finished app.
- Dart from basics to async
- Widgets, layouts, lists, navigation
- Forms, state, theming, animation
- Local storage and basic API calls
- Final project app
Advanced Flutter
Everything in Fundamentals, plus what real projects actually use: Bloc, a three-layer architecture, Dio and REST APIs.
- Everything in Flutter Fundamentals
- Bloc / Cubit state management
- Three-layer architecture
- RESTful APIs with Dio
- Build your own production-ready Flutter base
Prices in VND. Get in touch to set up a schedule and payment.
Roadmap
What you'll learn, session by session
Here's the plan for each package. If you need more time on something, we'll slow down.
Session 1
Getting started with Flutter
- Install the Flutter SDK, Android Studio / VS Code, emulators and real devices
- Project structure, pubspec.yaml, adding and managing packages
- Hot reload vs hot restart, debug / profile / release modes
- How Flutter draws the UI: widget, element and render trees
Session 2
Dart fundamentals
- Variables, types, final / const, null safety (?, !, late)
- Functions, optional and named parameters, arrow functions
- List, Map, Set and map, where, fold
- Writing clean, readable Dart the way teams expect
Session 3
Object-oriented & async Dart
- Classes, constructors, factories, inheritance, abstract classes, interfaces
- Mixins, extensions, generics
- Future, async / await, error handling with try / catch
- Stream, StreamController, and when to use a Future vs a Stream
Session 4
Core widgets
- StatelessWidget & StatefulWidget, and when to use each
- Lifecycle: initState, didUpdateWidget, dispose
- BuildContext, keys, and why widgets rebuild
- Splitting widgets and using const to keep the app smooth
Session 5
Layouts
- Row, Column, Stack, Expanded, Flexible and how constraints work
- Reading and fixing overflow errors
- MediaQuery, LayoutBuilder, responsive layouts for phones and tablets
- Rebuilding a screen from a Figma design
Session 6
Lists & scrolling
- ListView, GridView, builder and separated
- Pagination and pull to refresh
- CustomScrollView and slivers (SliverAppBar, SliverList)
- Keeping long lists smooth
Session 7
Navigation
- Navigator push / pop, returning data to the previous screen
- Named routes and arguments
- BottomNavigationBar, TabBar, Drawer, keeping state across tabs
- Organizing routes in a multi-screen app
Session 8
Forms & input
- TextField, TextEditingController, FocusNode
- Form, validation and showing errors
- Dialog, BottomSheet, SnackBar
- Keeping fields visible above the keyboard, moving to the next field
Session 9
Basic state management
- setState and lifting state up
- How InheritedWidget works
- Provider, ChangeNotifier, Consumer, Selector
- Why bigger apps need a more structured approach (leading into Bloc)
Session 10
Theming, assets & animation
- ThemeData, ColorScheme, TextTheme, dark mode
- Assets, fonts, app icon, splash screen
- Implicit animations, Hero
- AnimationController basics for custom effects
Session 11
Local storage & basic APIs
- shared_preferences, storing sensitive data with secure storage
- Calling APIs with the http package
- Parsing JSON into models, handling missing or mistyped fields
- Loading, error and empty states for every screen
Session 12
Mid-course project
- Finish a complete multi-screen app
- Build an APK and run it on a real phone
- Code review: spotting what will be hard to scale
- Setting up for the move to a three-layer architecture and Bloc
Session 13
Three-layer architecture
- Presentation – Domain – Data
- Folder structure for real projects
- Separating UI from business logic
Session 14
Bloc & Cubit
- Events, states, Cubit vs Bloc
- BlocBuilder, BlocListener, BlocProvider
- Designing state per screen
Session 15
RESTful APIs
- HTTP methods, status codes, headers
- Reading API docs, testing with Postman
- Request / response models
Session 16
Networking with Dio
- Dio client setup, base URL, timeouts
- Interceptors: tokens, refresh tokens, logging
- Centralized error handling
Session 17
Repositories & dependency injection
- Repositories linking Data and Domain
- Generating models with json_serializable
- Dependency injection with get_it
Session 18
Building a base project
- Dev / prod environments, routing, theming, localization
- Combining Bloc + Dio + three layers into a reusable base
- Git workflow and code review like a real team
After this package: You can set up a Flutter project from the ground up and join a real team using Bloc, a three-layer architecture and REST APIs.
Want to start learning Flutter?
Tell me which package you're looking at and where you're starting from. I'll get back to you to set up a time.
Register nowFAQ
Common questions
No. Flutter with AI and Fundamentals both start from zero. For Advanced, some coding experience helps, but the first 12 sessions still go through the fundamentals.