scaff

Last updated:

0 purchases

scaff Image
scaff Images
Add to Cart

Description:

scaff

Introduction #
Scaffold Generator for Dart and Flutter.
scaff is a simple command-line utility for generating Dart and Flutter components from template files.
It is a very tedious job to keep replicating the boilerplate codes every time you try to add a new component in your app. Using scaff, you can generate dart or flutter components from the custom-defined templates. You can even include template variables in the component files and directories name for easy and flexible scaffolding.
scaff uses 'Mustache templating library' variable schemes for defining and processing the template files.
Installation/Upgrade #
$ dart pub global activate scaff
copied to clipboard
Usage #
$ dart pub global run scaff
copied to clipboard
Example #
Let us create a simple component. First of all, we need to create a working directory and it should contain a scaff.setup.json file. The scaff.setup.json file should contain all the template variables used in the working directory.
The component subdirectories and files should be included inside the working directory.
The files and directories name may contain template variables as well.
Template variable examples: {{var1}}, {{className}}Base, {{fileName}}_store
The example template directory structure:
component_templates
│   └── general_store_architecture
│   ├── scaff.setup.json
│   └── {{componentName}}
│   ├── {{componentName}}.dart
│   └── {{componentName}}_store.dart
copied to clipboard

Create a new directory in the project root

$ mkdir -p component_templates/general_store_architecture
$ cd component_templates/general_store_architecture
copied to clipboard

Create the component directory

$ mkdir {{componentName}}
$ cd {{componentName}}
copied to clipboard

Create the component template file

$ touch {{componentName}}.dart
copied to clipboard

Add the code to {{componentName}}.dart file

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

import '../../data/mobx/{{componentName}}_store.dart';

class {{className}}Screen extends StatelessWidget {
{{className}}Screen({
Key key,
}) : super(key: key);

@override
Widget build(BuildContext context) {
final {{componentName}} = Provider.of<{{className}}Store>(context);

return Scaffold(
body: Center(
child: Column(),
),
);
}
}
copied to clipboard

Create the store template file

$ touch {{componentName}}_store.dart
copied to clipboard

Add the code to {{componentName}}_store.dart file

import 'package:mobx/mobx.dart';

abstract class {{className}}StoreBase with Store {
@observable
bool dummyValue = false;
}
copied to clipboard

Create the scaff.setup.json file

$ cd ..
$ touch scaff.setup.json
copied to clipboard

Add all the template variables used in the working directory to scaff.setup.json file as

{
"variables": [
"componentName",
"className"
],
"mappedVariables": {
"componentName": "login",
"className": "LoginScreen"
}
}
copied to clipboard

variables holds a list of template variables. The CLI will prompt for the user input.
mappedVariables holds the values for the template variables. The generator will pick values from the mappedVariables automatically, if required.
You may use either of the one or in combination. CLI will skip the prompt if the value for a template variable is already available inside the mappedVariables.


cd into general_store_architecture folder.

$ pwd # it should be pointing to => /path/component_templates/general_store_architecture
copied to clipboard

Run scaff globally

$ dart pub global run scaff
copied to clipboard

You will be prompted to:

Enter source directory (/path/component_templates/general_store_architecture) »
Enter destination directory (/path/component_templates/general_store_architecture/__component__) »
Enter template extension (dart) »
Enter 'componentName' variable value » login
Enter 'className' variable value » Login
copied to clipboard

The destination directory will have the newly generated component.
The destination directory structure:

└── login
├── login.dart
└── login_store.dart
copied to clipboard

Development and debugging

dart pub global activate --source path /path/to/scaff
dart pub global run scaff
copied to clipboard
Buy me a coffee #
Help me keep the app FREE and open for all.
Paypal me: paypal.me/ganeshrvel
Contacts #
Please feel free to contact me at [email protected]
About #

Author: Ganesh Rathinavel
License: MIT
Package URL: https://pub.dev/packages/scaff
Repo URL: https://github.com/ganeshrvel/pub-scaff
Contacts: [email protected]

License #
scaff | Scaffold Generator for Dart and Flutter. MIT License.
Copyright © 2018-Present Ganesh Rathinavel

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.