Week 1: Introduction to Flutter & Dart
Day 1: Getting Started
- Overview of Mobile App Development
- Introduction to Flutter & Dart
- Installing Flutter (Windows, macOS, Linux)
- Setting up IDE (VSCode, Android Studio)
Day 2: First Flutter App
- Understanding Flutter project structure
- Running the default Flutter app
- Hot Reload and Hot Restart
Day 3: Basics of Dart Programming
- Variables and Data Types
- Functions and Control Flow (if/else, loops)
Day 4: Object-Oriented Programming in Dart
- Classes, Constructors, Inheritance
- Hands-on: Building simple Dart programs
Week 2: Flutter Widgets & UI
Day 1: Widgets 101
- Introduction to Flutter Widgets
- Stateless vs Stateful Widgets
- Common Widgets: Text, Container, Row, Column
Day 2: Layout Basics
- Padding, Alignment, Flexbox
- Layout creation using Rows and Columns
- Building flexible UIs with Expanded and Flex
Day 3: Complex Widgets
- ListView and GridView
- Images and Icons in Flutter
- Hands-on: Creating a basic static UI with these widgets
Day 4: Hands-on Project
- Build a static UI for a simple mobile app (e.g., profile page or settings page)
Week 3: Building Interactive UI
Day 1: User Input and Forms
- TextFields and Buttons
- Handling form inputs and validation
Day 2: Navigation and Routing
- Navigating between screens (push/pop, Navigator)
- Passing data between screens using arguments
Day 3: State Management Basics
- Introduction to State and setState
- Handling user interactions: Clicks, Gestures, and Taps
Day 4: Hands-on Project
- Create a multi-screen app that captures user input and navigates between pages
Week 4: Working with Lists and Data
Day 1: Lists and Grids
- Displaying dynamic lists using ListView.builder
- Creating scrollable and interactive lists
Day 2: Handling User Actions on Lists
- Using GestureDetectors for interactivity
- Handling swipe actions and clicks
Day 3: Dynamic Data and UI Updates
- Updating the UI in response to data changes
- Using setState for dynamic updates
Day 4: Hands-on Project
- Create a dynamic list app (e.g., task manager) that updates based on user input
Week 5: Building Multi-Page Apps with Widgets
Day 1: Advanced Widgets
- Using advanced widgets like Stack, Positioned, and Hero
- Building layered UIs with Stack and Positioned
Day 2: Custom Widgets and Reusability
- Creating custom widgets for reusability
- Passing data to custom widgets through constructors
Day 3: Navigating with Bottom Navigation and TabBar
- Implementing bottom navigation bars
- Creating a TabBar with multiple tabs
- Navigating between multiple pages using tabs
Day 4: Hands-on Project
- Build a multi-page app (e.g., e-commerce app, recipe app) using a combination of Stack, Tabs,
and advanced widgets
Week 6: State Management and Local Storage
Day 1: Introduction to State Management
- Understanding state in Flutter
- Introduction to setState for managing simple state
- When to use Stateful vs Stateless widgets
Day 2: State Management with Provider
- Introduction to the Provider package for global state management
- Using ChangeNotifier and Consumer
- Managing app-wide state efficiently
Day 3: Local Storage Basics
- Saving and retrieving data locally using SharedPreferences
- Persisting simple data like user preferences
- Introduction to SQLite for structured local storage
Day 4: Hands-on Project
- Build a small app (e.g., to-do app) that uses Provider for state management and
SharedPreferences for saving user data persistently
Week 7: Building a To-Do App with Hive and Bloc
Day 1: Introduction to Hive Database
- Overview of Hive as a lightweight and fast NoSQL database for Flutter
- Setting up Hive in a Flutter project
- Storing and retrieving data using Hive
- Managing tasks with Hive boxes
Day 2: Introduction to Bloc for State Management
- Understanding the Bloc (Business Logic Component) pattern
- Setting up Bloc in Flutter
- Managing state transitions using Bloc and Cubit
- Connecting UI with Bloc for better state management
Day 3: Integrating Hive with Bloc
- Combining Hive for data storage and Bloc for state management
- Persisting and updating to-do items using Hive and Bloc
- Implementing CRUD (Create, Read, Update, Delete) operations with Hive and Bloc
Day 4: Hands-on Project
- Build a complete to-do app using Hive for data persistence and Bloc for state management
- Implement task addition, deletion, and modification with proper state management
Week 8: Networking and API Integration
Day 1: Introduction to REST APIs and Networking in Flutter
- What is a REST API and how it works
- Using the http package in Flutter for making HTTP requests
- Fetching data from APIs using GET requests
- Parsing and handling JSON data in Flutter
Day 2: Sending Data to APIs (POST, PUT, DELETE)
- Sending data to APIs using POST requests
- Updating data using PUT requests
- Deleting data using DELETE requests
- Handling errors and retries in network requests
Day 3: Handling Asynchronous Data with Future and Stream
- Introduction to asynchronous programming in Flutter
- Using Future, async, and await for API calls
- Working with Streams for handling real-time data
- Error handling in asynchronous operations
Day 4: Hands-on Project
- Build an app that fetches data from a public API (e.g., weather app, news app)
- Allow users to submit data (e.g., search queries, form submissions) and update UI accordingly
- Implement error handling and loading indicators for a smooth user experience
Week 9: Building a News App
Day 1: Setting Up the News App and Fetching Data
- Introduction to a news API (e.g., NewsAPI, NY Times API)
- Setting up API access (API keys, endpoints)
- Structuring the Flutter project for the news app
- Fetching top headlines or articles from the API using GET requests
Day 2: Displaying News Articles
- Parsing and displaying news articles in a ListView
- Creating UI components to display article titles, descriptions, and images
- Implementing lazy loading for images and articles
Day 3: News Article Details Page and Navigation
- Navigating from the article list to a detailed news article page
- Passing article data between screens
- Displaying full article details including the author, published date, and content
- Adding the option to open the full article in an in-app browser (WebView)
Day 4: Hands-on Project
- Finalizing the news app by implementing search functionality to look up articles by keyword
- Adding pagination or infinite scroll for continuous loading of articles
- Handling API errors and loading states
- Wrap-up: Testing, debugging, and optimizing the app with Version Control (GitHub/Git)
Week 10: Revision & Capstone Preparation
Day 1: Full Revision of Flutter Concepts
- Review key topics:
- Flutter and Dart basics
- Widgets and UI layouts
- State management techniques (setState, Provider, Bloc)
- Networking and API integration
- Local storage with Hive
- Recap with Q&A and quick hands-on exercises
- Discuss any unclear concepts
Days 2-4: Capstone Project Planning
- Introduce the Movie App as the capstone project
- Outline the project scope and goals
- Brainstorm and research Movie App UI/UX design
- Review relevant documentation and best practices for app development
- Divide roles (frontend, backend, API integration, UI/UX design)
- Set up collaborative tools (GitHub, Trello, Figma, etc.)
Weeks 11-12: Team Project - Building a Movie App
Week 11: Team Collaboration and Development
Day 1: Set up project repositories and development environment
Day 2: Team divides roles and starts working on individual components (UI, API integration, state
management)
Day 3: Regular check-ins and debugging sessions as a team
Day 4: Merge components and start testing the core features
Week 12: Final Touches and Deployment
Day 1: Finalize the app, conduct extensive testing (unit tests, UI tests)
Day 2: Prepare for deployment (app store guidelines, submission processes)
Day 3: Create project presentation materials (slides, demo video)
Day 4: Present the final Movie App to the class and receive feedback