
Master Flutter mobile app development and Dart basics to build iOS and Android apps, with hands-on challenges and code along practice.
Integrate Flutter and Dart learning with fresh content and updated apps, covering widgets, state management, navigation, SQLite and Firebase, with legacy content available for 14 to 30 days.
Set up your Flutter development environment by installing the Flutter SDK, Git, Android Studio, and Xcode, then configure Android emulators and iOS simulators for cross-platform app development.
discover Flutter dev, the central hub for Flutter documentation, install tools, and get started guides, with platform-specific steps for Windows and Mac and notes that steps may change.
Set up Flutter on Windows by installing Git for Windows, Android Studio, and the Flutter SDK, updating the path to flutter/bin, and configuring the Android toolchain and emulator.
Set up flutter on Mac by installing the Flutter SDK for Apple Silicon, configuring zsh path, and installing Xcode, Git, and CocoaPods, then configure Android Studio and emulators.
Install and configure Visual Studio Code for Flutter development, install the Flutter and Dart extensions, add Pubspec Assist, run Flutter doctor, and ensure iOS and Android devices are connected.
Create a flutter project with flutter create, naming multi-word apps with underscores. Open it in VS Code via open folder or code ., and ensure the Flutter extension is installed.
Learn how to run and test your first Flutter app on an emulator or device, attach a device, use VS Code run commands, view the terminal, and hot reload changes.
Flutter, an open source framework by Google, enables multi-platform apps from a single Dart code base for iOS, Android, web, desktop, and embedded experiences, highlighting quicker development and reduced fragmentation.
Develop a basic Flutter app to display fortunes using Dart by creating a project, editing main.dart, and using hot reload to cycle through a fortune list with a wrapping counter.
In Flutter, generate a random index to select a fortune from the fortune list and display it by updating the user interface with setState when the button is pressed.
Learn the basics of Dart in dart pad, including main function, var declarations, and printing strings, integers, booleans, and string interpolation like Paulo is 19 years old.
Learn how to define and call void functions in Dart, using main and other functions to organize code, print outputs, and run logic from anywhere in the program.
Define and call Dart functions with return types, such as int, to output and manipulate values like a returned age; print results after applying arithmetic like age plus 100.
Explore Dart basics by defining function parameters with types, returning values, and passing string or integer arguments to demonstrate how functions reflect inputs in results.
Explore Dart basics by defining function return types like string and int, passing name and age as arguments, and returning a composed bio string to guide Flutter app development.
Build a fortune cookie app by wrapping the fortune text in a card, introduce widgets, and connect an elevated button to display a random fortune.
Learn to add images as assets in a Flutter fortune cookie app by creating assets/images, registering the image in pubspec.yaml, and displaying it with Image.asset.
Explore Flutter widgets by comparing stateless and stateful types; stateless are immutable, while stateful manage mutable state via set state to trigger user interface rebuilds, shown through the counter example.
Explore Flutter's widget hierarchy as a tree of root, scaffold, and nested widgets like a bar and columns. Learn how composition enables reusability through custom buttons and images across screens.
Explore the fortune cookie project's main.dart, using material.dart and dart:math to generate a random fortune. See how setState triggers a rebuild of the user interface when the fortune changes.
Explore the const keyword in Dart and Flutter, learn how const widgets improve performance by reducing rebuilds and memory usage, and know when to apply or avoid it.
Build a tip calculator app in Flutter that computes total per person from a bill amount, tip percentage, and split count, with a dark mode toggle and interactive widgets.
Learn to create a Flutter project, set up an app bar and scaffold, then arrange content with a column and center alignment.
Learn to build a stylized total per person widget in Flutter by wrapping text in a container, applying box decoration, color, border radius, and padding, and organizing content with columns.
Explore Flutter widgets through the docs and widget catalog. Learn layout, text, and theming to build cohesive interfaces with color schemes.
Understand the build context as the widget's location in the widget tree, access the current theme with theme.of(context), and see how inherited widgets propagate data and enable navigation.
Explore how Flutter widgets map to Dart objects within object oriented programming, using classes as blueprints, constructors for initialization, and methods to define behavior.
Refactor the top widget's styling by updating the theme data to deep purple, creating a reusable style, and using copyWith to customize color and font weight via the text theme.
Create a decorated bill amount input by wrapping a text field in a bordered container with an outline border, a money icon, and a numeric keyboard to capture input.
Build the split bill section in Flutter by arranging a text label, minus and plus icon buttons, and a count in a horizontal row with theme styling and space between.
Implement increment and decrement for a flutter counter by updating a person count with setState, guarding against zero, and wiring UI events to refresh.
Refactor the main app by extracting a reusable person counter widget, wiring up increment and decrement callbacks, and organizing the code into a new widgets folder for cleaner, reusable architecture.
Develop a Flutter user interface by adding a tip percentage section with a Slider widget, binding value changes to state, and displaying live percentage updates.
Explore named parameters in Dart to pass function or constructor arguments by name. Use curly braces and required to ensure non-null values when instantiating a Person class.
Refactor the tip slider by extracting it into a tip_slider widget, wiring a double value with its change callback, and updating the parent to manage tip percentage with setState.
Refactor the bill amount text field by extracting a reusable widget, wiring the on changed callback, and adding padding to enable real-time total per person calculations.
Learn to implement tip calculation logic in a Flutter app, computing total per person from bill total and tip percentage, with zero-division protection and reactive UI updates.
Refactor the tip calculator in Flutter by extracting total per person into a separate widget, formatting values with two decimals, cleaning up interpolation, and reorganizing widgets for cleaner state management.
Explore Flutter widgets, widget tree, and setState while building a tip calculator from scratch with container, columns, and rows; refactor for readability and reuse, decorate widgets with Dart concepts.
Explore flutter state management with the provider package, moving beyond setState to scalable, efficient, and testable apps by sharing values across the widget tree and rebuilding only dependent widgets.
Learn how to add the provider package to a Flutter app, manage dependencies in pubspec.yaml, and scaffold a simple counter UI that will use provider for state updates.
Learn to build provider counter using a counter model that extends change notifier, notify listeners, expose a getter, implement increment, and rebuild UI with a consumer listening to changes.
Explain the differences between consumer and provider of in flutter's provider package, showing consumer for targeted rebuilds and provider of for direct state access from change notifier or value notifier.
Explore the differences between provider.of and consumer in Flutter's provider. Learn why build context enables automatic UI rebuilds and avoid pitfalls by choosing granular rebuild control.
Learn to migrate a fortune cookie app from setState to a provider-based state management with a fortune model, change notifier, and a get new fortune action.
Master flutter state management with provider by building a tip calculator model, exposing getters and update methods, and wrapping the app in ChangeNotifierProvider for refactor.
Add a theme provider to toggle between dark and light modes, expose a toggle in the app bar, and wrap the app in a multi provider for theme state management.
Implement dark and light modes in a tip calculator app using a theme provider, a dynamic sun or night-light icon, and a reusable toggle theme button.
Explore how inheritance enables code reuse in dart by using an animal superclass and dog and feline subclasses, with constructor chaining using super and inherited methods like eat and sleep.
Explore how object oriented programming shapes Flutter widgets, with the widget superclass guiding stateful and stateless widgets, inheritance for customization and code reuse, and the widget tree.
Explore how inheritance lets a subclass like dog inherit from animal, override methods such as sleep, and customize the toString method for readable object output.
Apply provider-based state management in Flutter by instantiating providers, creating model classes, and using consumers to separate UI from state, including theme provider that toggles between dark and light modes.
Develop a movie app with navigation from a scrollable movie list to a detail screen, using a read more action to reveal director, release date, plot, and movie images.
Build a Flutter app using ListView.builder to display movies from a defined list, leveraging item count and index for each item in a scrollable view.
Explore Dart collections by working with lists (arrays) of strings, indexing, and for loops. Learn to access items by index, iterate with for-in, and use length to drive iteration.
Explore how Dart lists enforce types with generics, declare typed lists, and perform add, remove, and reverse operations, including iterating with for loops.
Create a movie provider in Flutter and Dart using ChangeNotifierProvider, expose a movie list with a getter, and load movies for UI consumption via provider context.
Learn to decorate a Flutter list with Card and ListTile widgets for each movie, adding leading circle avatars, titles, subtitles, and trailing icons, while customizing color, elevation, and borders.
Explore loading and displaying movie data by adding a JSON data source, configuring assets, and building a Movie model in Dart that maps JSON to a Movie object.
Explains how maps store key value pairs in Dart with typed maps and dynamic values, and shows parsing Json into movie model class with images as string list via fromJson.
Create a movie parser class with a static parse function that decodes a json string into a list of Movie objects by mapping each json item via Movie.fromJson.
Update the movie provider to parse the films.json into a list of movie objects, load movies asynchronously, display titles and directors in the list, and notify listeners when updated.
Explore fetching data with futures, async, and await to keep the user interface responsive during asynchronous operations, while handling http requests and errors gracefully.
Build expandable movie cards with expansion tiles in Flutter, showing director and plot, and use rich text with text spans for bold labels.
Learn to implement navigation to a movie details screen in Flutter by adding a read more action, a dedicated details page, and wiring routes with Navigator and MaterialPageRoute.
Learn to pass a movie object to a movie details screen in Flutter via navigator push and material page route, with a required movie parameter and display its title.
Extract a custom movie card widget, move it into a components folder, import and adjust main, test the app, and add a const modifier for the widget.
Refactor the movie card for reuse and display images in a circle avatar by using a network image from the movie's image list retrieved from json.
Implement a horizontally scrolling movie posters gallery on the details screen by rendering network images from a list inside a fixed-height box and elevated cards using ListView.builder.
Implement a details flag in the movie card to hide the read more button when in details, using a boolean flag that defaults to false.
Build a two-page app with navigation, a movie list, and a details screen; use provider and async/await to fetch json data and map to a movie model.
Build a Flutter and Dart book tracker app that lets you search books, view details, save to favorites, and manage saved books with local database and navigation.
Create a Flutter project for a reader tracker, set an app bar color from the theme, and add a bottom navigation bar with home, save, and favorite.
Implement tap handling for bottom navigation items by updating a current index with setState, and apply selected and unselected colors using the theme color scheme.
Implement bottom navigation by using a screens list and the current index to display home, saved, and favorites in a scaffold body, with separate screen widgets and simple color theming.
Leverage the Google Books API to search and fetch book results via an HTTP GET request to the volumes endpoint, using a q query and accessing the items list.
Create a book model class in dart to represent each book, map nested json (volume info, title, subtitle, authors, image links, industry identifiers), and provide toJson and fromJson.
Create a network class in Dart to fetch books from the Google Books API via http, Uri.parse, and an asynchronous searchBooks that returns a list of Book objects.
Learn how to perform a get request in flutter, check the response status, decode the JSON body, and print or probe fields like total items in the console.
Validate the json response and map each item in items to a book object using fromJson, returning a list of books. Handle errors with try-catch and return an empty list.
Explore Dart basics of control flow and branching using if statements, booleans, and else if and or logic to guide program behavior with age examples.
Explore the not operator in Dart by negating conditions with if statements and booleans, using exclamation marks for not equal, and observe how negation shapes program flow.
Master Dart's error handling with try and catch to manage exceptions, throw values, and gracefully handle a format exception so the app doesn't terminate.
Build an interactive Flutter search interface that queries books, displays results in a ListView, and parses JSON into book objects with titles and authors.
Implement a grid view with GridView.builder to show book thumbnails in two columns with a 0.6 aspect ratio, drawing images from book data via image network.
Practice building a Flutter UI by padding an image, displaying a book title and author with themed text, and resolving overflow with ellipses and max lines.
Wrap each book tile with a gesture detector to make it clickable. Navigate using named routes in a material app and plan to pass the book to the details screen.
Learn to pass a book object via named routes in a Flutter and Dart app by creating a BookDetailsArguments class and applying null safety in the details screen.
Build a scrollable book details screen that shows the book image, title, authors, published date, language, and page count, with conditional image loading and centered layout.
refactor the home screen grid view by extracting it into a reusable grid_view_widget.dart under lib/components, then import and verify the app remains functional.
Design an interactive Flutter book interface by adding elevated buttons with icons, a centered row layout, and a scrollable description section with decorative containers.
Learn to set up a sqlite database with sqflite in Flutter, create a books table with id, title, author, description, and favorite, and implement CRUD via a database helper.
Implement an onCreate function to initialize a SQLite database in Flutter, open it with a version, and create a books table with id, title, authors, publisher, language, and image links.
Develop and demonstrate the insert and read all books operations as part of a full crud workflow, using asynchronous SQLite database calls and mapping between book objects and json.
Save a book to the database when the save button is clicked and show a snack bar confirming the save, then read saved books to display in the favorites view.
Show saved books on the saved screen in Flutter using FutureBuilder and ListView.builder. Fetch all books from the database and display a loading indicator while data loads.
Demonstrates building a book list item with a card, image thumbnail, and a favorites toggle button, and implementing a toggle of the favorite status in the SQLite database.
Toggle the favorite status for books using the database, save favorites, and reflect changes on the saved screen with the proper ID.
Click delete icon in the saved screen, wrap it in an icon button with onpressed, call the database helper to delete the book by ID, and set state to refresh.
Query favorites via the database using a future builder to map results to book objects and display them in a thumbnail list with a red favorite icon.
Learn to pass book details with arguments and navigate to a details page in Flutter, showing save or favorite buttons based on whether the item comes from the saved screen.
Learn to simplify showing the save or favorite buttons by conditionally rendering a single button based on item state, using a container and elevated buttons.
Toggle the isFavorite flag on the book object to update the icon, text, and color in real time, using setState to refresh the UI and sync with the favorites database.
Develop a Flutter app that uses the Google Books API to search and display results in a grid, view details, and parse data into a SQLite database with try/catch.
Full Course Update in 2024
Flutter Development is here to stay!
Welcome to The Complete Flutter App Development Course (The World's First Complete Dart and Flutter Course).
Flutter is the new Cross-platform Mobile Development Framework created by Google, allowing developers to build Android and iOS Apps with one single codebase!
Flutter is the BEST way to create cross-platform apps that otherwise would require two distinct mobile development teams to create.
Why is Flutter a BIG Deal?
Flutter is a big deal because any developer (or anyone who wants to learn mobile development) can now build native Android and iOS apps with one codebase ONLY! This means, instead of having to learn Objective-C or Swift to build iOS apps, and Java, or Kotlin to build Android apps, you can now use Flutter Mobile Development Framework to build apps that run natively on both iOS and Android devices using the General-purpose Dart Programming Language.
By learning Flutter App Development, you'll be able to build iOS and Android apps with a single codebase! This course is the ultimate Flutter tutorial created for those who want to build cross-platform iOS and Android mobile apps using the Dart Programming language.
This course is fully hands-on, in which you'll get the chance to practice and learn:
Dart Programming Language - Fundamentals and intermediate topics
How to understand Flutter Mobile Development by building apps incrementally.
How to design, build, debug Flutter Android and iOS Apps
How to get Flutter apps to communicate with a realtime database - Firestore
How to build robust apps with Flutter.
You’ll see how easy it’s to get started building Android and iOS apps using Google’s Flutter App Development Framework!
The course is structured in such a way to improve your knowledge retention - by having a lot of hands-on projects. In each section of the course, you will be practicing and building something meaningful and useful, which will further your understanding of Flutter iOS and Android Development.
For instance, you'll start by learning the very basics of the Dart Programming language (which is the programming language used in Flutter) - you'll learn control flow and functions, how to do arithmetic in Dart, and so forth.
Next, you'll learn Object-Oriented Programming in Dart - understanding how to construct classes and Objects and how it all works when building robust programs. Furthermore, you'll learn intermediate and advanced Dart topics such as Abstract classes, Interfaces, and Data Structures.
Once you've learned the Dart Programming language, you'll then start with Flutter Mobile Development. You'll start by building small, simple iOS and Android apps using Flutter, such as the Business Card app. Then, we move into the realm of Stateful Widgets in Flutter - how to manage state in an App.
Along the way, we continue to build several fun apps to solidify the main, fundamental Flutter concepts. You'll also have several challenges you need to further dive deeper into understanding Flutter concepts.
Continuing with the course, you'll also have the opportunity to learn how to parse JSON from a remote API into your Flutter app and cleanly display the parsed data to the user using Material Design concepts. Additionally, you'll learn how to connect your app to Firebase/Firestore and use a real-time database.
You'll finish the journey by learning how to package up your Flutter iOS or Android app to publish on either the Appstore or Google Play store.
The course will take you from zero to hero - from knowing nothing (or a little) about Flutter iOS and Android Mobile development to building complex, stunning mobile applications!
Why Should You Take This Course?
My name is Paulo Dichone; I've created the most best-selling online programming courses (with over 250,000 happy and satisfied students).
I'm a Software Engineer, a teacher, and the author of highly rated Development courses on Udemy. I've taught over 100,000 students online and received over 15,000 reviews. Students love my teaching methodology, which is heavy on hands-on, project-based approaches.
I know how hard it can be to learn programming and Android development - there's a lot of information out there, but the problem is that it needs to be completed, and it needs to be updated. I understand how frustrating it's to try to learn something independently and spend months without seeing progress!
This Course Also Comes With:
Lifetime Access to All Future Updates
A responsive instructor in the Q&A Section
Links to interesting articles and lots of good code to base your next template onto
Udemy Certificate of Completion Ready for Download
A 30 Day, "No Questions Asked" Money Back Guarantee!
Take this complete Flutter course now, completely risk-free!