🧐Understanding your project
Feature Driven Development with Bloc
Approach
FDD is an iterative and incremental software development methodology that focuses on delivering features or functionalities in a systematic and organized manner. It divides the project into small, well-defined features, and each feature is developed independently.
Quickfire will structure your Flutter codebase around features. Each feature in your app corresponds to a set of related functionalities.
For each feature, quickfire will automatically create a corresponding Bloc (Business Logic Component). The Bloc is responsible for managing the business logic and state of that specific feature.
Modularity :
Features are modular and independent. This modular structure makes it easier to understand, maintain, and scale the codebase. Developers can work on different features without interfering with each other's code.
Readability and Maintainability :
The organization of code by features enhances code readability and maintainability. Developers can easily locate and work on specific parts of the application.
Communication between features :
Features can communicate with each other through well-defined interfaces, events, or any other suitable mechanism (In Our Case We Are Using Bloc). This ensures a clean and controlled flow of information between different parts of the app.
Understanding The Folder Architecture
Constants Folder
In this file a GlobalKey is created, which has two methods getScreenWidth
and getScreenheight
which you can use in the entire application to get rid of
Features Folder
Inside lib/features/
a folder is created for every feature.
Each feature contains 4 subfolders.
bloc folder -> Contains Bloc files
ui folder -> Contains a stateless scaffold
repo folder -> You can use this folder to call your services
widgets folder -> Common widgets for this feature
Bloc folder
feature_bloc.dart
feature_state.dart
feature_event.dart
UI Folder
Understanding the Onboarding Feature
There are three basic scaffolds named as intro_page1.dart
intro_page2.dart
intro_page3.dart
on_boarding_screen.dart
controls all the three intro pages using pageview
Quickfire relies on shared_preferences
to show the on_boarding_screen only one time.
Understanding Navigation Screen
Quickfire creates a nav_bar with all the UI files automatically for your app based on the features.
This NavigationScreen Widget acts as root of your UI.
Setting Up Appwrite
Create a new project on appwrite and set it up for flutter.
Inside the void main()
, add your project_id and project_endpoint
Inside lib/features/auth/service/auth_status.dart
In the init
function in lib/features/auth/service/auth_status.dart
Inside android/app/src/main/AndroidManifest.xml
Replace your app name with the name of your project.
Add a $
before {applicationName}
like ${applicationName}
and remove the comment.
Setting up Firebase
Create a new project on Firebase console.
Run flutterfire configure
inside the project
Generate SHA Keys and add them to your firebase project settings.
Select your project.
Setting up FCM
You just need a unique channel inside AndroidManifest.xml
Now go inside lib/features/notification/notification_services.dart
Create a unique FCM Key from Google Cloud and add it here
Last updated