jt_flutter_cli 1.0.0 copy "jt_flutter_cli: ^1.0.0" to clipboard
jt_flutter_cli: ^1.0.0 copied to clipboard

A command-line tool that simplifies auto-code generation. Fully flexible, allowing you to generate a feature and widget for your Flutter applications.

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
1.0.0 3.2.6 3.16.0 - 3.19.3 3.16.9+1
0.0.10 3.2.6 3.16.0 - 3.19.3 3.16.9+1
0.0.9 3.2.6 3.16.0 - 3.19.3 3.16.9+1
0.0.8 3.2.6 3.16.0 - 3.19.3 3.16.9+1
0.0.7 3.2.6 3.16.0 - 3.19.3 3.16.9+1
0.0.6 3.2.6 3.16.0 - 3.19.3 3.16.9+1
0.0.5 3.2.6 3.16.0 - 3.19.3 3.16.9+1
0.0.4 3.2.6 3.16.0 - 3.19.3 3.16.9+1
0.0.3 3.2.6 3.16.0 - 3.19.3 3.16.9+1
0.0.2 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.0.0

Then run:

    flutter pub get

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="")

Usage #

Create new feature:

    flutter pub run jt_flutter_cli create feature {name_of_feature}

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  
└── ...

Create new widget:

    flutter pub run jt_flutter_cli create widget {name_of_widget}

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}

Add GET API call:

    flutter pub run jt_flutter_cli Add get-api-call {API_end_point} {API_name}

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}

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}

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)}

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());
  • 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
  • Add mime package to the project if not added already
  • 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
3
likes
90
pub points
68%
popularity

Publisher

verified publisherjarvistechnolabs.com

A command-line tool that simplifies auto-code generation. Fully flexible, allowing you to generate a feature and widget for your Flutter applications.

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

ansicolor, convert, dart_style, grapheme_splitter, image, path, process_run, yaml

More

Packages that depend on jt_flutter_cli