Autoplay
Autocomplete
Previous Lesson
Complete and Continue
The Complete Mobile App Development Course with Flutter
Introduction
Introduction (1:48)
Source Files
Additional Resources
Install Flutter on Windows (5:43)
Install Flutter on MacOS (3:21)
Setup Android SDK (6:10)
Setup Android Emulator (2:57)
Install VS Code (2:01)
Set up VS Code Flutter Plugins (3:33)
Mobile App Development with Flutter
Creating a Flutter Project (1:43)
Exploring the Project Structure (3:39)
Running the Default Demo App (1:51)
What is a Widget (2:08)
Most Used Pre-built Widgets (4:56)
Building a ContactsPage Widget (7:04)
Displaying a Vertical List (4:28)
Adding a ListView (3:39)
Importing a 3rd Party Library (2:01)
Using the Faker Library (1:28)
Creating a Contact Model Class (4:49)
Creating a List of Contacts (3:44)
Displaying Contacts in a ListView (3:07)
Converting ContactsPage to a StatefulWidget (3:45)
Populating the Contacts to initState (2:32)
Adding isFavorite to Contact Class (2:39)
Finishing isFavorite UI (4:23)
Setting State (6:27)
Sorting Contacts Based on isFavorite (3:19)
Creating a Custom Widget (2:31)
State Management - Lifting State up and Callbacks (6:46)
State Management - Adding a ScopedModel (6:36)
Moving Functionality to ContactsModel (1:46)
Using a Scoped Model (3:04)
Accessing the Model through ScopedModelDescendant (6:21)
Notifying Listeners of ScopedModel (2:04)
Another Way of Accessing the Model (2:55)
Sorting the Contacts Alphabetically (6:25)
Adding a ContactCreate Page (2:21)
Creating an Input Form (3:00)
Reason for Using Keys for Widgets (1:27)
Getting Data out of the Form with a Key (4:08)
Styling an Input Form (5:33)
Validating the Name Field (5:23)
Regular Expressions to Validate the Email (4:18)
Validating the Phone Number (2:53)
Adding New Contacts to the ContactsModel (1:55)
Implementing the Saving of the Form (5:33)
Adding a Floating Action Button (2:13)
Navigating using MaterialPageRoute (6:29)
Creating ContactEditPage (3:29)
Passing Edited Data to the ContactForm (2:50)
Navigating to ContactEditPage (2:20)
Pre-populating ContactForm with Data (2:19)
Editing a Contact in the ContactModel (5:00)
Preserving isFavorite Value after Editing (4:54)
Adding Null Safe Access Elvis Operators (1:39)
Making List Items Slidable (4:27)
Fixing Slidable UI with a Container (1:41)
Creating a Helper Build Function (1:58)
Deleting a Contact from the ContactModel (1:27)
Adding default images for contacts (2:50)
Adding Default Images for Contacts (2:52)
Getting Device Dimensions with MediaQuery (2:59)
Fixing ContactCreatePage’s Contact Image (2:20)
Making a Hero Animation (5:55)
Setting up the image_picker Library (2:07)
Configuring Image Picker on iOS (3:10)
Using the image_picker Library (3:49)
Picking an Image from the Device (4:17)
Displaying the Picked Image in ContactForm (5:19)
Displaying Images while Creating a Contact (3:07)
Adding an Image Field to the Contact Class (1:15)
Displaying the Contact’s Image in ContactTile (3:04)
Pre-populating an Edited Image in ContactEditPage (2:08)
SEMBAST and Other Packages for Data Persistence (2:29)
Converting Contact Objects to Map (3:32)
Converting Map Objects to Contacts (4:09)
Opening a SEMBAST Database (8:16)
Writing Asynchronous Code with Completer (6:39)
Preparing for the Singleton Pattern (4:34)
Making AppDatabase into a Singleton (3:00)
Understanding How SEMBAST Stores Data (3:39)
Creating a Data Access Object for Contacts (6:12)
Adding ID Field to Contact Class (2:57)
Preserving the ID while Editing (1:27)
Updating and Deleting Contacts with SEMBAST (4:12)
Getting All Contacts in Sorted Order - Part 1 (3:43)
Getting All Contacts in Sorted Order - Part 2 (2:19)
Adding ContactDao to ContactsModel (2:46)
Loading Contacts from ContactDao in ContactsModel (4:54)
Modifying ContactsModel to Work with ContactDao (3:03)
Fixing Newly Broken Code (1:57)
Testing Persistent Storage Functionality (3:04)
Displaying a Loading Indicator (2:39)
Adding Back the Favoriting of Contacts (3:20)
Making Contacts Sortable based on isFavorite (4:57)
Adding UI for Contacting the Contacts (2:48)
Using url_launcher to Call a Contact (6:56)
Writing an Email to a Contact (1:42)
Adding Padding to the ContactForm (0:58)
Conclusion
Conclusion (1:15)
Reason for Using Keys for Widgets
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock