Flutter & Dart – The Complete Guide [2025 Edition]
-
IntroductionWelcome To This Course!1m 16sWhat Is Flutter?2m 49sFlutter uses Dart!1m 51sOne Codebase, Multiple Platforms0sFlutter Setup – Overview0sWindows Setup0smacOS Setup0sProject Creation & Setting Up a Code Editor for Flutter Development0sCourse SetupRunning a First Flutter App0sUnderstanding Material Design0sAbout This Course0sCourse Resources (Code Snapshots, Community & Slides)
-
Flutter & Dart Basics I – Getting a Solid Foundation [ROLL DICE APP]Module Introduction0sAnalyzing A New Flutter Project0sFrom Dart To Machine Code0sHow Programming Languages Work0sStarting From Scratch: Understanding Functions0sImporting Features From Packages0sHow Flutter Apps Start0sUnderstanding Widgets0sUsing a First Widget & Passing Values to Functions0sPositional & Named Arguments0sDeep Dive: Position & Named ArgumentsCombining Multiple Widgets0sUnderstanding “const” Values0sBuilding More Complex Widget Trees0sUnderstanding Value Types0sConfiguring Widgets & Understanding Objects0sWorking with “Configuration Objects” (Non-Widget Objects)0sGenerics, Lists & Adding Gradient Colors0sHow To Configure Widgets & Objects0sPractice: Styling Text0sOnwards to Custom Widgets: Why Do You Need Them?0sUnderstanding Classes0sBuilding Custom Widgets0sWorking with Constructor Functions0sSplitting Code Across Files0sPractice: Create a Custom Widget0sIntroducing Variables0sVariables & Types – Combining Two Key Concepts0s“final” & “const” – Special Kinds Of “Variables”0sInstance Variables (Properties) & Configurable Widgets0sPractice: Reusable Widgets & Constructor Functions0sDisplaying Images & Using Multiple Constructor Functions0sAdding Buttons & Using Functions As Values0sStyling Buttons & Working with Padding0sHow NOT To Build Interactive Widgets0sIntroducing Stateful Widgets0sGenerating Random Numbers0sModule Summary0s
-
Flutter & Dart Basics II – Fundamentals Deep Dive [QUIZ APP]Module Introduction0sA Challenge For You!0sChallenge Solution 1/2 – Creating a Widget0sChallenge Solution 2/2 – Working with More Widgets0sAdding Icons to Buttons0sAdding Transparency to Widgets0sRepetition & Exercise: Adding a Stateful Widget0sRendering Content Conditionally0sAccepting & Passing Functions as Values0sThe “initState” Method0sDeep Dive: Flutter’s (Stateful) Widget LifecycleUsing Ternary Expressions & Comparison Operators0sUnderstanding “if” Statements0sUsing “if” Statements In Listsif Statements & Comparison OperatorsAdding a Data Model & Dummy Data0sConfiguring a Column0sCreating a Reusable, Custom Styled Button0sAccessing List Elements & Object Properties0sMapping Lists & Using the Spread Operator0sAlignment, Margin & Padding0sMutating Values in Memory0sManaging The Questions Index As State0sMore on Button Styling0sUsing Third-Party Packages & Adding Google Fonts0sPassing Data via Functions Across Widgets0sMore Conditions0sGetting Started with the Results Screen0sPassing Data to the Results Screen0sIntroducing Maps & “for” Loops0sUsing “for” Loops In ListsNote: A Typo In The Next LectureAccessing Map Values & Using “Type Casting”0sCombining Columns & Rows0sExpanded To The Rescue!0sFiltering & Analyzing Lists0sMaking Content Scrollable with SingleChildScrollView0sBeyond the Basics: Optional, Important Dart Features0sModule Summary0s
-
Debugging Flutter Apps
-
Adding Interactivity, More Widgets & Theming [EXPLENSE TRACKER APP]Module Introduction0sStarting Setup & Repetition Time!0sAdding an Expense Data Model with a Unique ID & Exploring Initializer Lists0sIntroducing Enums0sCreating Dummy Data0sEfficiently Rendering Long Lists with ListView0sUsing Lists Inside Of Lists0sCreating a Custom List Item with the Card & Spacer Widgets0sUsing Icons & Formatting Dates0sSetting an AppBar with a Title & Actions0sAdding a Modal Sheet & Understanding Context0sHandling User (Text) Input with the TextField Widget0sGetting User Input on Every Keystroke0sLetting Flutter do the Work with TextEditingController0sTime to Practice: Adding a New Input0sExercise Solution0sClosing The Modal Manually0sShowing a Date Picker0sWorking with “Futures” for Handling Data from the Future0sAdding a Dropdown Button0sCombining Conditions with AND and OR Operators0sValidating User Input & Showing an Error Dialog0sSaving New Expenses0sCreating a Fullscreen Modal0sUsing the Dismissible Widget for Dismissing List Items0sShowing & Managing “Snackbars”0sFlutter & Material 3Getting Started with Theming0sSetting & Using a Color Scheme0sSetting Text Themes0sUsing Theme Data in Widgets0sImportant: Adding Dark ModeAdding Dark Mode0sUsing Another Kind of Loop (for-in)0sAdding Alternative Constructor Functions & Filtering Lists0sAdding Chart Widgets0sModule Summary0s
-
Building Responsive & Adaptive User Interfaces [EXPENSE TRACKER APP]Module Introduction0sWhat is “Responsiveness”?0sLocking the Device Orientiation0sUpdating the UI based on the Available Space0sUnderstanding Size Constraints0sHandling to Screen Overlays like the Soft Keyboard0sUnderstanding “Safe Areas”0sUsing the LayoutBuilder Widget0sBuilding Adaptive Widgets0sModule Summary0s
-
Flutter & Dart Internals [TODO APP]Module Introduction0sThree Trees: Widget Tree, Element Tree & Render Tree0sHow The UI Is Updated0sRefactor & Extract Widgets To Avoid Unnecessary Builds0sUnderstanding Keys – Setup0sWhich Problem Do Keys Solve?0sUnderstanding & Using Keys0sMutating Values in Memory & Making Sense of var, final & const0sModule Summary0s
-
Building Multi-Screen Apps & Navigating Between Screens [MEALS APP]Module Introduction0sProject Setup0sUsing a GridView0sWidgets vs Screens0sDisplaying Category Items on a Screen0sMaking any Widget Tappable with InkWell0sAdding Meals Data0sLoading Meals Data Into a Screen0sAdding Cross-Screen Navigation0sPassing Data to the Target Screen0sIntroducing the Stack Widget0sImproving the MealItem Widget0sAdding Navigation to the MealDetails Screen0sImproving the MealDetails Screen0sAdding Tab-based Navigation0sPassing Functions Through Multiple Layers of Widgets (for State Management)0sManaging App-wide State & Data0sAdding a Side Drawer0sClosing the Drawer Manually0sAdding a Filter Item0sReplacing Screens (Instead of Pushing)0sAdding More Filter Options0sReplacing WillPopScope with PopScopeReturning Data When Leaving a Screen0sReading & Using Returned Data0sApplying Filters0sAn Alternative Navigation Pattern: Using Named RoutesModule Summary0s
-
Managing App-wide State [MEALS APP]Module Introduction0sWhat’s The Problem?0sInstalling the Solution: Riverpod0sHow State Management with Riverpod Works0sCreating a Provider0sUsing a Provider0sCreating a More Complex Provider with StateNotifier0sUsing the FavoritesProvider0sTriggering a Notifier Method0sGetting Started with Another Provider0sCombining Local & Provider-managed State0sOutsourcing State Into The Provider0sConnecting Multiple Providers With Each Other (Dependent Providers)0sSwapping The “Favorite Button” Based On Provider State0sModule Summary0s“riverpod” vs “provider” – There are many Alternatives!
-
Adding Animation [MEALS APP]Module Introduction0sSetup & Understanding Explicit vs Implicit Animations0sExplicit Animations: Adding an Animation Controller0sExplicit Animations: Playing the Animation with AnimatedBuilder0sFinetuning Explicit Animations0sGetting Started with Implicit Animations0sConfiguring Implicit Animations0sAdding Multi-Screen Transitions0sModule Summary0s
-
Handling User Input & Working with Forms [SHOPPING LIST APP]Module Introduction0sSetup & A Challenge For You0sChallenge Solution 1 – Building & Using Models0sChallenge Solution 2 – Building the List UI0sAdding a “New Item” Screen0sThe Form & TextFormField Widgets0sA Form-aware Dropdown Button0sAdding Buttons to a Form0sAdding Validation Logic0sGetting Form Access via a Global Key0sExtracting Entered Values0sPassing Data Between Screens0sFinal Challenge Solution0sModule Summary0s
-
Connecting a Backend & Sending HTTP Requests [SHOPPING LIST APP]Module Introduction0sWhat’s a Backend? And Why Would You Want One?0sWhat Is HTTP & How Does It Work?0sSetting Up a Dummy Backend (Firebase)0sAdding the http Package0sSending a POST Request to the Backend0sWorking with the Request & Waiting for the Response0sFetching & Transforming Data0sAvoiding Unnecessary Requests0sManaging the Loading State0sError Response Handling0sSending DELETE Requests0sHandling the “No Data” Case0sBetter Error Handling0sUsing the FutureBuilder Widget0sModule Summary0s
-
Using Native Device Features (e.g., Camera) [FAVORITE PLACE APP]Module Introduction0sSetup & A Challenge For You!0sAdding a Place Model (Challenge Solution 1/6)0sAdding a “Places” Screen (Challenge Solution 2/6)0sAdding an “Add Place” Screen (Challenge Solution 3/6)0sAdding “riverpod” & A Provider (Challenge Solution 4/6)0sAdding Places with Provider & Displaying Places (Challenge Solution 5/6)0sAdding a “Place Details” Screen (Challenge Solution 6/6)0sAdding a “Pick an Image” Input0sInstalling the “Image Picker” Package0sUsing the Device Camera For Taking Pictures0sAdding the Picked Image to the Model & “Add Place” Form0sPreviewing the Picked Image0sImportant: “location” Package & AndroidAdding the “location” Package & Starting with the “Get Location” Input Widget0sGetting the User’s Current Location0sUsing the Google Maps API – Setup0sUsing Google’s Geocoding API0sStoring the Location Data in the Model0sDisplaying a Location Preview Map Snapshot via Google0sUsing the Picked Location in the Form0sOutputting the Location Data0sInstalling & Configuring the Google Maps Package0sAdding a “Map” Screen0sDisplaying the Picked Place on a Dynamic Map0sHandling Map Taps for Selecting a Location Manually0sUsing the Map Screen in the “Add Place” Form0sInstalling Packages for Local (On-Device) Data Storage0sStoring the Picked Image Locally0sStoring Place Data in a (On-Device) SQL Database0sLoading Data from the SQL Database0sUsing a FutureBuilder for Loading Data0sModule Summary0sAdding Your Own Native Code
-
Push Notifications & More: Building a Chat App with Flutter & FirebaseModule Introduction0sApp & Firebase Setup0sAdding an Authentication Screen0sAdding Buttons & Modes to the Authentication Screen0sValidating User Input0sFirebase CLI & SDK Setup 1/20sFlutterFire ConfigurationFirebase CLI & SDK Setup 2/20sSigning Users Up0sLogging Users In0sShowing Different Screens Based On The Authentication State0sAdding a Splash Screen (Loading Screen)0sAdding User Logout0sImage Upload: Setup & First Steps0sAdding a User Image Picker Widget0sUsing the ImagePicker Package0sManaging The Selected Image In The Authentication Form0sUploading Images To Firebase0sShowing a Loading Spinner Whilst Uploading0sAdding a Remote Database: Firestore Setup0sSending Data to Firestore0sStoring a Username0sAdding ChatMessages & Input Widgets0sA Note About Reading Data From FirestoreSending & Reading Data To & From Firestore0sLoading & Displaying Chat Messages as a Stream0sStyling Chat Message Bubbles0sPush Notifications – Setup & First Steps0sRequesting Permissions & Getting an Address Token0sTesting Push Notifications0sWorking with Notification Topics0sSending Push Notifications Automatically via Cloud Functions0sModule Summary0s
-
About The Course Update
-
Next Steps & Roundup
May 2023: This course was completely updated (re-recorded from the ground up) and is now better than ever!
–
Discover the power of Flutter and Dart to create stunning, high-performance mobile apps for iOS and Android with the most comprehensive and bestselling Flutter course! With over 30 hours of comprehensive content, this course is the ultimate resource for anyone who wants to build beautiful, responsive, and feature-rich applications from scratch.
Learn from a Bestselling Udemy Instructor: Maximilian Schwarzmüller
I’m Maximilian Schwarzmüller, a bestselling, top-rated online course instructor with a vast variety of courses on web and mobile development. I’m excited to be your guide throughout this journey. My goal with this course is to teach you Flutter from the ground up, step-by-step and in a highly practice-oriented way!
Unlock Your Potential in Mobile App Development
This Flutter & Dart course is designed for absolute beginners with no prior programming experience, as well as for those with existing iOS, Android or other development skills. Through video lessons and hands-on projects, you’ll learn the ins and outs of Flutter and Dart!
Throughout the course you’ll build multiple demo apps – ranging from simple to more complex – and, by the end of the course, you’ll be able to build your own iOS and Android apps with Flutter.
Why Choose Flutter?
-
Developed by Google, Flutter is a framework that allows you to learn one language (Dart) and build beautiful native mobile apps in no time
-
Write code only once and ship your apps both to the Apple App Store and Google Play
-
Use the rich widget suite Flutter provides to add common UI elements or build your own custom widgets
What You’ll Learn:
-
Detailed setup instructions for both macOS and Windows
-
A thorough introduction to Flutter, Dart, and the concept behind widgets
-
An overview of the built-in widgets and how to add your own
-
Debugging tips & tricks
-
Page navigation with tabs, side drawers, and stack-based navigation
-
State management solutions
-
Handling and validating user input
-
Connecting your Flutter app to backend servers by sending HTTP requests
-
User authentication
-
Adding Google Maps
-
Using native device features like the camera
-
Adding beautiful animations & page transitions
-
Image upload
-
Push notifications – manual approach and automated
-
And much more!
Course Highlights:
-
On-Demand, Video-Based Learning: An immersive experience with practical examples and demo apps to help you develop your skills at your own pace
-
Lifetime Access: Revisit topics and refresh your knowledge anytime
-
Regularly Updated: The course has been updated multiple times in the past to ensure it stays up-to-date with the latest industry standards
No Experience Necessary
This course is designed to be accessible to everyone, regardless of their programming background. Whether you’re a complete beginner or an experienced developer looking to expand your skillset, I will guide you through each step of the process, ensuring you gain a deep understanding of the fundamentals and advanced concepts.
Prerequisites:
-
Basic programming language knowledge will help but is not required
-
No prior knowledge of Flutter or Dart is needed
-
No iOS (Swift/ObjectiveC) or Android (Java/Kotlin) development experience required
Take the First Step Towards Your Mobile App Development Career
With the skyrocketing demand for skilled mobile app developers in today’s job market, there has never been a better time to jump into the world of Flutter & Dart. By the end of this course, you’ll be fully equipped to design, develop, and deploy stunning iOS and Android apps, setting yourself up for a successful career in mobile app development.
Don’t let this opportunity pass you by! Enroll in “Flutter & Dart – The Complete Guide” today and start building amazing apps for the iOS and Android platforms!
What's included
- 30 hours on-demand video
- 23 articles
- 44 downloadable resources
- Access on mobile and TV
- Certificate of completion