Duration 5 days – 35 hrs
Overview
The Flutter Training Course is designed to equip participants with the skills and knowledge needed to develop cross-platform mobile applications using Flutter, Google’s UI toolkit for building natively compiled applications for mobile, web, and desktop from a single codebase. Through a combination of lectures, hands-on coding exercises, and real-world projects, participants will learn the fundamentals of Flutter development, UI design principles, state management, and integration with backend services. By the end of the course, participants will be able to build and deploy mobile applications for iOS and Android platforms using Flutter.
Objectives
- Understand the fundamentals of mobile application testing and the importance of automation in the testing process.
- Build beautiful, fast, and native-quality apps with Flutter
- Become a fully-fledged Flutter developer
- Build iOS and Android apps with just one codebase
- Build iOS and Android apps using just one programming language (Dart)
- Build a portfolio of beautiful Flutter apps to impress any recruiter
- Understand all the fundamental concepts of Flutter development
- Become proficient in one of the fastest-growing technologies
Audience
- Mobile App Developers: Developers involved in mobile app development
- Mobile App Test Leads/Managers: Leads or managers overseeing mobile app development and testing projects and aiming to implement those strategies.
- IT Professionals and Technologists: Individuals with a technical background seeking to expand their knowledge in mobile app testing and design.
- QA Managers/Directors: Managers or directors responsible for quality assurance initiatives, interested in incorporating best practices in design and development.
Pre- requisites
- Basic software testing knowledge
- Familiarity with mobile applications and their functionalities
- Basic programming skills (preferably in Java, Python, or JavaScript)
- Understanding of mobile devices and operating systems
- Ability to set up a test environment
- Knowledge of basic app design
Course Content
Module 1: Introduction to Flutter
- Introduction to the course
- What is Flutter
- Why Flutter…?
- The Anatomy of a Flutter App
Module 2: Setup and Installation
- Windows Setup Step 1 – Install the Flutter SDK
- Windows Setup Step 2 – Install Android Studio
- Windows Setup Step 3 – Install the Android Emulator
- Windows Installation Troubleshooting
- Mac Setup Step 1 – Install the Flutter SDK
- Mac Setup Step 2 – Install Android Studio
- Mac Setup Step 3 – Install the Android Emulator
- Mac Setup Step 4 – Install Xcode and Command Line Tools
- Mac Setup Step 5 – Test the iOS Simulator
- Mac Installation Troubleshooting
- Configure Android Studio for Flutter Development
- Guided Tour of Android Studio for Flutter Development
Module 3: Creating your first Flutter app
- Creating a New Flutter Project from Scratch
- A quick note about Hot Reload
- Scaffolding a Flutter App
- Working with Assets in Flutter & the Pubspec file
- How to Add App Icons to the iOS and Android Apps
- Deploying Your Flutter Apps to a Physical Device
- Deploying Flutter Apps to an Android Phone
- Deploying Flutter Apps to iPhones/iPads
Module 4: Flutter Widget
- MiCard – A Single Screen Personal Business Card App
- Hot Reload and Hot Restart – Flutter Power Tools
- How to Use Container Widgets
- How to use Column & Row Widgets for Layout
- Flutter Layouts Challenge
- Tapping into Widget Properties
- Incorporating Custom Fonts in Your Flutter App
- Adding Material Icons with the Icon Widget
- Flutter Card & ListTile Widgets
Module 5: Flutter state management
- Designing the To-Do List App
- The ListView Challenge
- The BottomSheet Widget
- Positioning the BottomSheet above the Keyboard
- What is the State and How do we Manage it?
- How do Callbacks work in Dart?
- The ListView Builder
- Lifting State Up Challenge
- Flutter App Architecture Patterns
- Introducing the Provider Package
- Using a Provider and a ChangeNotifier to Manage State
- Adding New To-Do List Tasks
- Checking off To-Do List Tasks
- Deleting Tasks using the Provider Design Pattern
Module 6: How to choose and enforce the right architecture for your app:
- Popular App Architectures: MVC, MVVM, Clean Architecture, Bloc
- Architecture as a function of app complexity
- Widgets, controllers, services, and repositories
- Project Structure: Feature-first vs Layer-first
- The repository pattern and the data layer
- Working with Future and Stream-based APIs
Module 7: Getting started with Riverpod:
- Why Riverpod?
- Installation and setup
- Riverpod as a Dependency Injection system
- Working with Providers, ConsumerWidget, and Consumer
- Working with FutureProvider, StreamProvider, and AsyncValue
- The family and autoDispose modifiers
- Creating a reusable AsyncValueWidget helper
- Working with StateNotifier and StateNotifierProvider
- Using AsyncValue as a state class ref.read() vs ref.watch()
- Using ref.listen() to respond to errors
- Working with dependencies and combining providers
- Working with realtime data
Module 8: Strategies for handling errors in Flutter:
- Errors vs Exceptions
- How to represent exceptions: enums vs subclasses vs sealed classes with Freezed
- Creating a robust error handling system
- Logging errors with ProviderObserver
- Functional error handling with Result types vs try/catch
Module 9: Advance concepts
- Diving deep with Flutter and Dart
- Designing multiple applications