|
Module 1:
Introduction to Flutter |
- What is Flutter.
- Understanding the Flutter Architectur.
- Flutter macOS Setup.
- macOS Development Environment.
- Flutter Windows Setup.
- Windows Development Environment.
- Flutter is Under Active Development.
|
Module 2:
Diving Into the Basics & Understanding Widgets |
- Creating a New Flutter Project.
- Exploring the Default Project Structure.
- Diving Into the “main.dart” File.
- Widgets in Flutter – Theory.
- Creating a Widget.
- Adding the “Build” Method.
- Adding the Scaffold.
- Diving Deeper Into the Syntax.
- Adding Cards & Images.
- Diving Into the Official Docs.
- Adding a Button.
- Creating a Stateful Widget.
- Managing Data Inside Stateful Widgets.
- Adding the Stateful Widget & Lists.
- Creating the “Product Manager” Widget.
- Passing Data to Stateful Widgets.
- Understanding Lifecycle Hooks.
- Diving Into Google’s Material Design.
- Understanding Additional Dart Features.
- Passing Data Up.
- Understanding “const” & “final”.
|
Module 3:
Debugging Flutter Apps |
- Fixing Syntax Errors.
- Understanding Runtime Errors & Runtime Messages.
- Dealing with Logical Errors.
- Using Breakpoints.
- Debugging the User Interface.
- Visual Helpers.
|
Module 4:
Running the App on Different Devices |
- Testing Devices.
- How to Start the App.
- Testing a Real Android Device.
- Using the iOS Emulator & a Real Device.
- Using the Native IDE Consoles.
|
Module 5:
Working with Lists & Conditionals |
- Creating Scrollable Lists with “ListView”.
- Optimizing the List Loading Behaviour.
- Rendering Content Conditionally.
- Alternative Approaches to Render Content Conditionally.
|
Module 6:
Navigation
|
- Adding Multiple Pages to our App.
- Adding Buttons.
- Implementing a Basic Navigation.
- Improving the Look of the Product Page.
- Passing Data Around (“Pushing” the Page).
- Passing Information Back (“Popping” the Page).
- Adding Reactions Upon Button Pressing.
- Adding the Basic Authentication Page & Replacing Routes.
- Adding the Sidedrawer & the Hamburger Icon.
- Understanding Stack Based Navigation.
- Adding Tabs.
- Parsing Route Data Manually.
- Lifting State Up.
- Using the Named Routes.
- Working with “onUnknownRoute” as Fallback.
- Adding Alert Dialogs.
- Showing a Modal.
|
Module 7:
Handling User Input
|
- Saving User Input.
- Configuring Text Fields.
- Styling Text Fields.
- Fixing a Bug & Adding a Button.
- Using our Form to Create a New Product.
- Improving the Style of our Form.
|
Module 8:
Diving Deeper Into Widgets |
- Exploring the Widget Catalogue.
- There’s More Than One Widget For The Job.
- Working with Text & Fonts.
- Working with Rows.
- Decorating Boxes & Styling a Price Tag.
- Setting Borders.
- Understanding “Expanded” & “Flexible”.
- Adding a Background Image.
- Centering Input Fields.
- Adding Icons to our Sidemenu.
- Adding Icon Buttons.
- Outsourcing Code into Separate Widgets.
- Refactoring our Code.
- Creating a Standardized Tile Widget.
- Adding Separate Methods for Specific Widgets.
- Optimizing our Project.
- Responsive Design Problems.
- Adding Media Queries.
- Understanding Media Queries with ListView.
- Working with Themes.
- Listening to Touch Events with the Gesture Detector.
|
Module 9:
Working with Forms |
- Using the Form Widget.
- Adding Form Validation.
- Advanced Validation.
- Closing the Keyboard.
- Submitting Data.
- Outputting Lists of Products.
- Re-Using the Product Create Form.
- Setting Initial Values.
- Updating Products.
- Ensuring Input Visibility.
|
Module 10:
Improving the App |
- Improving the List Tile.
- Adding the Dismissible Widget.
- Deleting Products Upon Swipe.
- Restructuring the Code.
|
Module 11:
Models & State Management |
- What can be Improved?.
- Adding a Product Model.
- Creating a Scoped Model.
- Connecting the Scoped Model.
- Providing the Scoped Model.
- Viewing Single Products.
- Editing & Deleting Products with the Scoped Model.
- Finishing the Product Model.
- A Note on Immutability.
- Creating the Toggle Favorite Method.
- Working on the Favorite Feature.
- Adding “notifylisteners”.
- Finishing the Favorite Feature.
- Using Mixins to Merge Models.
- Adding a User Model.
- Logging in with the Main & the User Model.
- Connecting Models & Sharing Data.
|
Module 12:
Models & State Management |
- Understanding the Backend Setup.
- Sending a POST Request.
- Using the Response.
- Getting Data From a Server.
- Transforming & Extracting Response Data.
- Displaying a Loading Spinner.
- Finishing the Loading Spinner.
- Updating Products.
- Deleting Products.
- Using Pull to Refresh.
- Adding “fadein” to the Image Placeholder.
- Adjusting the Scoped Model & the Selected Product.
- Fixing the Product Selection.
- Handling Error Responses.
- Generic Error Handling.
- Adding “async” “await”.
|
Module 13:
Authentication |
- How Authentication Works.
- Adding a “Confirm Password” Textfield.
- Implementing the Signup Functionality.
- Handling Errors.
- Adding a Spinner Whilst Signing Up.
- Adding the Signin Functionality.
- Refactoring our Code.
- Authenticating Requests with Tokens.
- Storing the Token on the Device.
- Signing Users In Automatically.
- Adding a Logout Button.
- Adding Autologout.
- Route Protection & Redirection.
- Fixing the Manual Logout.
- Time for a Quick Recap Regarding our Code Structure.
- Adding Optimistic Updating to Store the Favorite Status.
- Fetching the Favorite Status.
- Allow Editing for own Posts Only.
|
Module 14:
Adding Google Maps to our App |
- Using MapView with the latest Flutter Version.
- Unlocking the Required APIs.
- Requesting Permissions.
- Preparing our Text Form Field.
- Adding a Static Dummy Map.
- Sending a Request to Convert an Address to Coordinates.
- Adding Geocoding & Maps with Real Coordinates.
- Working on the Map Control.
- Storing Location Data in the Database.
- Fixing a Bug.
- Loading Location Data from the Backend.
- Updating an Existing Product’s Position.
- Adding the Update Method for the Location.
- Adding the Location Package.
- Getting the User Location.
- Preventing Memory Leaks.
- Displaying the Address.
- Showing a Fullscreen Map.
|
Module 15:
Accessing the Device Camera |
- Adding an Image Picker Button.
- Adding the “Use Camera” & “Gallery” Buttons.
- Connecting the “Choose” Buttons to the Image Picker.
- Adding an Image Preview.
- Adding Text Editing Controllers.
- Setting Up Firebase Cloud Functions.
- Adding Server Side Code.
- Reading Incoming Files & Fields.
- Storing Data and Move it to a Temporary Storage.
- Deploying our Firebase Cloud Function.
- Configuring the Upload Request.
- Setting Headers to Add the Token.
- Fixing an Error.
- Fetching & Using Images.
- Previewing & Editing the Image.
- Adding the Image Upload Flow.
- Deleting Images When Deleting a Product.
|
Module 16:
Adding Animations to our Project |
- Adding Floating Action Buttons (FABs).
- Adding Functionality to our Favorite Button.
- Working on the Contact Button.
- Animating the Contact Icon.
- Animating the Favorite Icon.
- Animating the Options Button.
- Fading the Password Field In & Out.
- Sliding the Password Field In & Out.
- Adding Hero Widgets.
- Adding the Sliver Effect.
- Adding Route Transitions.
|
Module 17:
Polishing & Bugfixing |
- Fixing an Autologout Bug.
- Fixing the Price Input in Landscape Mode.
- Fixing the Filtered Product Index.
- Fixing the Product Title Style & the Favorite Product Selection.
- Clearing All Products Before Fetching.
- Testing the iPhone & Fixing the Product Reset Logic.
- Adding Space on the Product Card.
- Using Flutter Analyze.
- Possible Code Restructurings.
- Managing Global Values.
- Testing the App on an Android Device.
- Testing the App on an iPhone & Fixing the European Decimal Comma.
|
Module 18:
Running Platform Specific Code |
- Understanding Material Design & Cupertino.
- Detecting the Platform.
- Using Platform Specific Widgets.
- Adding a Platform Specific Theme.
- When Should we Use Platform Specific Themes?.
- iOS Support since Flutter 0.8.2.
|
Module 19:
Adding Native Code to our Flutter App |
- Understanding the Communication Between Flutter & Native Code.
- Writing Native Android Code.
- Running Native Android Code.
- Writing Native iOS Code.
- Running Native iOS Code.
|
Module 20:
Adding Native Code to our Flutter App |
- Finalizing our Code.
- Restricting API Keys.
- Installing Flutter Launch Icons.
- Adding a Splash Screen.
- Adjusting the App Name.
- Deploying the Android App.
- Deploying the iOS App.
|