Last updated:
0 purchases
jt flutter cli
Introduction #
A command-line tool that simplifies auto-code generation. Allowing you to generate a
feature, widget, model, and API call code for your Flutter applications.
Features #
Feature code generation (Basic structure with classes)
Widget code generation
Model code generation
GET method API call code generation
POST method API call code generation
Multipart API call code generation
Assets image generation from 3x to 1x and 2x
Flutter Compatibility #
Package version
Dart version
Flutter version
Boilerplate version
0.0.2 - 1.3.1
3.2.6
3.16.0 - 3.19.3
3.16.9+1
Getting Started #
To integrate the package into your Flutter project, follow these steps:
Add Dependency #
Add the following dependency to your pubspec.yaml file:
dependencies:
jt_flutter_cli: ^1.3.1
copied to clipboard
Then run:
flutter pub get
copied to clipboard
Rules #
Common Rules:
All the files must contain only one class
Wherever you use Name or any keyword it must be unique
API Rules:
The feature must be created using the CLI tool
The developer must not change any file name of the feature
The API name must be in lowercase with an underscore (Valid Ex: get_profile, profile)
Multipart API Rules:
All file parameters keys in request json must be postfix with _file. eg (xyzAbc_file="")
File parameters value must be empty string. eg (xyzAbc_file="")
All list of files parameters keys in request json must be postfix with _fileList. eg (xyzAbc_fileList="")
List of files parameters value must be empty string. eg (xyzAbc_fileList="")
Usage #
Create new feature:
flutter pub run jt_flutter_cli create feature {name_of_feature}
copied to clipboard
In the above configuration, the package is creating a new feature that is available in the lib/feature/name_of_feature path.
It will generate the name_of_feature folder, which has the dart files and the domain, presentation, and data folders as shown below.
.
├── ...
├── name_of_feature
│ ├── data
│ │ ├── data_source
│ │ │ └── name_of_feature_data_source.dart
│ │ │ └── name_of_feature_data_source_impl.dart
│ │ ├── repository
│ │ │ └── name_of_feature_repo_impl.dart
│ │ │ └── mock_name_of_feature_repo_impl.dart
│ ├── domain
│ │ ├── repositories
│ │ │ └── name_of_feature_repo.dart
│ ├── presentation
│ │ ├── bloc
│ │ │ └── name_of_feature_bloc.dart
│ │ │ └── name_of_feature_data_event.dart
│ │ │ └── name_of_feature_data_state.dart
│ │ ├── screen
│ │ │ └── name_of_feature_screen.dart
│ │ └── name_of_feature_page.dart
└── ...
copied to clipboard
Create new widget:
flutter pub run jt_flutter_cli create widget {name_of_widget}
copied to clipboard
CLI Tool will prompt the user with the following question in terminal:
Do you want to create a common widget or a feature widget? (common/feature)
common: Widget will be created inside the folder lib/core/ui/widgets
feature: It will prompt the user to enter the feature name, and the widget will be created inside the respective feature's folder at lib/feature/name_of_feature/presentation/screen/widgets
Create new model:
flutter pub run jt_flutter_cli create model {model_name} {feature_name} {json_file_path}
copied to clipboard
Add GET API call:
flutter pub run jt_flutter_cli add get-api-call {API_end_point} {API_name}
copied to clipboard
CLI Tool will prompt the user with the following questions for GET API call in terminal:
Enter feature name:
Does this API have request query parameters? (Y/N):
Y : It will ask for json file path
N : It will skip this question and move to next question
Enter request json file path:
Does this API have response body? (Y/N):
Y : It will ask for json file path
N : It will skip this question and move to next question
Enter response json file path:
Do you want to add shimmer to this API call? (Y/N):
Y : It will generate the bloc state for showing shimmer UI in screen
N : It will generate code to call base bloc event for showing progress indicator UI in dialog with no dismissible dialog
Add POST API call:
flutter pub run jt_flutter_cli add post-api-call {API_end_point} {API_name}
copied to clipboard
CLI Tool will prompt the user with the following questions for POST API call in terminal:
Enter feature name:
Does this API have request body? (Y/N):
Y : It will ask for json file path
N : It will skip this question and move to next question
Enter request json file path:
Does this API have response body? (Y/N):
Y : It will ask for json file path
N : It will skip this question and move to next question
Enter response json file path:
Do you want to add shimmer to this API call? (Y/N):
Y : It will generate the bloc state for showing shimmer UI in screen
N : It will generate code to call base bloc event for showing progress indicator UI in dialog with no dismissible dialog
Add MULTIPART API call:
flutter pub run jt_flutter_cli add multipart-api-call {API_end_point} {API_name}
copied to clipboard
Request JSON guide for file parameter:
For file parameters define key with _file postfix in request json. eg (xyzAbc_file="")
Set the file parameters value to empty string. eg (xyzAbc_file="")
For list of files parameters define key with _fileList postfix in request json. eg (xyzAbc_fileList="")
Set the List of files parameters value to empty string. eg (xyzAbc_fileList="")
CLI Tool will prompt the user with the following questions for MULTIPART API call in terminal:
Enter feature name:
Does this API have request body? (Y/N):
Y : It will ask for json file path
N : It will skip this question and move to next question
Enter request json file path:
Does this API have response body? (Y/N):
Y : It will ask for json file path
N : It will skip this question and move to next question
Enter response json file path:
Do you want to add shimmer to this API call? (Y/N):
Y : It will generate the bloc state for showing shimmer UI in screen
N : It will generate code to call base bloc event for showing progress indicator UI in dialog with no dismissible dialog
Assets image generation from 3x to 1x and 2x:
flutter pub run jt_flutter_cli create assets {3x image path} {directory name in assets/images/ (This is where image will be saved)} {image_const_name}
copied to clipboard
Follow below instruction to Auto add generated files to git #
Go to Settings->Version control->Confirmation and Select “Add silently” for “When files are created” and also check the “Apply to files created outside of Android Studio”
Existing project upgrade guide to utilize CLI tool in existing project #
Below changes are required to utilize the CLI tool in the existing project
Upgrade the Flutter version to 3.16.9
Rename MasterBloc to ApiBaseBloc and move a file to core/base/bloc/api_base_bloc/api_base_bloc.dart
Rename MasterApiEvents to ApiBaseBlocEvents and move a file to core/base/bloc/api_base_bloc/api_base_bloc_event.dart
Rename MasterApiState to ApiBaseBlocState and move a file to core/base/bloc/api_base_bloc/api_base_bloc_state.dart
Move /core/base/widget/base_bloc_widget.dart to /core/base/screen/base_bloc_widget.dart
Move data_source to core/api
Move base_api_repo.dart to core/api/repository
Move /core/domain/commons/entities/api_response.dart to /core/api/model/api_response.dart
Move /core/domain/commons/entities/no_request.dart to core/api/model/no_request.dart
Move /core/domain/commons/entities/success.dart to core/api/model/success.dart
Move /core/data/error/failure.dart to /core/api/model/failure.dart
Update Failure and ServerFailure classes from failure.dart file with the latest boilerplate Failure and ServerFailure classes from failure.dart file
Move /core/domain/commons/usecases/usecase.dart to /core/api/base_usecases/base_usecase.dart
Rename UseCase to BaseUseCase
Create /core/const/mock_api_constants.dart file and move all const variable to this file from /core/api/data_source/mock/mock_data_impl.dart
base_bloc change the name of baseBlocObject to apiBaseBlocObject
Add Failure to ErrorApiEvent as a parameter and update the below lines with
apiBaseBlocObject.add(ErrorApiEvent(failure: failure));
baseBlocObject.failureModel = failure;
baseBlocObject.add(ErrorApiEvent());
copied to clipboard
Remove failureModel parameter from ApiBaseBloc and use data from event
Replace the Success class with the Success class from the boilerplate
Move /core/util/api_constant.dart to /core/const/api_constants.dart and update the file name api_constants
Copy lib/core/api/model/file_upload_request_model.dart file from boilerplate and Add the same file in your project at the same path
Replace IFileMultiRequest model with FileUploadRequestModel in executeMultipart method from remote_ds.dart and remote_ds_impl.dart file
Remove IFileRequest and IFileMultiRequest classes from request.dart
Note:
Some features of CLI may require more changes than defined here depending on your project structure and version
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.