A new Flutter project dedicated to learning Flutter step-by-step by following a structured path, completing tasks, and integrating various Flutter concepts and packages.
This project is a starting point for learning Flutter development. It contains multiple code examples, tutorials, and tasks that cover various Flutter topics, such as:
- Folder structure
- Responsive layouts
- State management with BLoC and GetX
- Networking and API integration
- Routing and navigation
- Firebase integration
- Theme management
- Shared preferences
This project follows a structured learning path. Each section focuses on a specific Flutter concept with tasks and references to deepen understanding.
Understanding the proper folder structure is crucial for scaling Flutter applications.
- References:
Learn how to make Flutter apps responsive across different screen sizes and orientations.
RxDart extends the capabilities of Dart Streams and StreamControllers.
- References:
Implement the BLoC (Business Logic Component) pattern for state management.
- References:
Points to Remember:
- Use the BLoC pattern to integrate data inside the app.
- Use a proper folder structure.
- Create light and dark themes managed by a button in the sidebar.
- Use TMDB (The Movie Database) API for movie data.
- Handle network connectivity; show a message when offline and update when back online.
- Handle network connection using network streams.
- Create two screens:
- Movies card by category list.
- Particular movie details.
- References:
GetX is a fast, stable, and lightweight state management library in Flutter.
- References:
Create a shopping app with two pages.
1. Products Screen:
- Show a loader while fetching data.
- Update the cart instantly when "Add to Cart" is clicked.
2. Cart Screen
-
Display items added to the cart.
-
References:
Note: Creating tutorials for this task is mandatory.
Learn how to handle public and protected routes in Flutter.
- References:
Implement nested routing using the Auto Route package.
Integrate Firebase services into your Flutter app.
Implement Google Sign-In for Android, iOS, and Web.
Use Firebase Storage for storing and retrieving data.
Store data locally using Shared Preferences.
- References:
Points to Remember:
- Create login and signup pages; connect and save data in Firebase Storage.
- Integrate Google Sign-In with a dedicated button.
- Save user data in Firebase; if the user is new, or show an "existing member" alert message.
- After login, save user data in Shared Preferences; don't show the login screen until the user logs out.
- Create a blog form with fields: title, description, category, tags, image URL.
- Create two screens:
- All blogs.
- Logged-in user's blogs with a "Create Blog" button.
- Show home screen blogs as per category.
- Handle routing and navigation using GetX.
- Make the app web and mobile responsive.
The main.dart file is structured to allow you to run different parts of the project by uncommenting specific sections of code. Each section corresponds to a particular learning topic or task.
Example:
//-------------------------------------------------------------------- Enable for BLOC FORM VALIDATION (EP-3) --------------------------------------------------------------
// void main() {
// runApp(MyApp());
// }
//
// class MyApp extends StatefulWidget {
// const MyApp({super.key});
//
// @override
// State<MyApp> createState() => _MyAppState();
// }
//
// class _MyAppState extends State<MyApp> {
// @override
// Widget build(BuildContext context) {
// return const MaterialApp(
// debugShowCheckedModeBanner: false,
// home: WelcomeScreen(),
// );
// }
//}
To run the BLOC FORM VALIDATION example:
- Uncomment the code under the ENABLE FOR BLOC FORM VALIDATION (EP-3) section.
- Comment out other sections to avoid conflicts.
- Run the app using
flutter run
.
Similarly, you can run other examples:
- Responsive Layout:
// ------------------------------------------------ ENABLE FOR RESPONSIVE LAYOUT ------------------------------------------
// void main() {
// runApp(MyApp());
// }
// class MyApp extends StatelessWidget {
// @override
// Widget build(BuildContext context) {
// return MaterialApp(
// home: LayoutOne(),
// );
//
}
// }
By the end of the course, you’ll build a Travel App with features like:
-
Firebase authentication
-
Firebase Firestore for data
-
Payment gateway integration
-
Advanced state management with GetX or BLoC
-
References:
Contributions are always welcome! Please follow the contributing guidelines.