Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 60 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,37 @@ Watch for changes:
flutter pub run build_runner watch
```

---

## Build configuration

To control what is generated, configure your `build.yaml`:

Generate only main dimension files (no snippets):
```yaml
targets:
$default:
builders:
dimengen|dimengen:
enabled: true
dimengen|snippet_builder:
enabled: false
```

Generate both dimension files and snippets:
```yaml
targets:
$default:
builders:
dimengen|dimengen:
enabled: true
dimengen|snippet_builder:
enabled: true
```

You can also remove the `snippet_builder` section entirely if you do not need snippets.

---

Why Use Dimengen?
- 📐 Centralized dimension values
Expand All @@ -153,6 +183,35 @@ Why Use Dimengen?

---


## Snippet generation
After every `build_runner` run, two files are produced automatically:

* `.vscode/dimengen.code-snippets`
* `.idea/liveTemplates/DimensionsTemplates.xml`

### How to enable snippet generation
Snippets are generated only for classes marked with the annotation `@DimengenSnippets()`:

```dart

@DimengenSnippets()
class Dimensions {
static const double small = 8.0;
static const double medium = 16.0;
static const double large = 32.0;
}
```

Classes without this annotation will be ignored by the snippet builder.

Import the generated files into your IDE (VS Code or Android Studio) and use
`d16`, `in16`, `sp16` … abbreviations instead of magic numbers.

> ⚠️ Snippet import for Android Studio is not tested yet. Please report your experience!

---

## Contributing

Have suggestions, ideas, or found a bug? Contributions are welcome!
Expand Down
26 changes: 17 additions & 9 deletions build.yaml
Original file line number Diff line number Diff line change
@@ -1,18 +1,26 @@
targets:
$default:
sources:
- lib/**.dart
builders:
dimengen:
generate_for:
include:
- lib/**.dart
options:
parse_ast: true
dimengen|dimengen:
enabled: true
dimengen|snippet_builder:
enabled: true

builders:
dimengen:
import: "package:dimengen/builder.dart"
builder_factories: ["dimengenBuilder"]
build_extensions: {".dart": ["dimengen.g.part"]}
build_extensions: {".dart": [".g.dart"]}
auto_apply: dependents
build_to: cache
applies_builders: ["source_gen|combining_builder"]
build_to: source
runs_before: ["source_gen|combining_builder"]

snippet_builder:
import: "package:dimengen/builder.dart"
builder_factories: ["snippetBuilder"]
build_extensions: {r"$package$": [".vscode/dimengen.code-snippets", ".idea/liveTemplates/DimensionsTemplates.xml"]}
auto_apply: dependents
build_to: source
runs_before: ["source_gen|combining_builder"]
107 changes: 107 additions & 0 deletions example/.vscode/dimengen.code-snippets
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
{
"d8": {
"prefix": "d8",
"body": "Dimensions.s",
"description": "Dimensions.s (8.0)"
},
"in8": {
"prefix": "in8",
"body": "Insets.s",
"description": "Insets.s (8.0)"
},
"iv8": {
"prefix": "iv8",
"body": "Insets.sVertical",
"description": "Insets.sVertical (8.0)"
},
"ih8": {
"prefix": "ih8",
"body": "Insets.sHorizontal",
"description": "Insets.sHorizontal (8.0)"
},
"sp8": {
"prefix": "sp8",
"body": "Spaces.s",
"description": "Spaces.s (8.0)"
},
"sv8": {
"prefix": "sv8",
"body": "Spaces.sVertical",
"description": "Spaces.sVertical (8.0)"
},
"sh8": {
"prefix": "sh8",
"body": "Spaces.sHorizontal",
"description": "Spaces.sHorizontal (8.0)"
},
"d16": {
"prefix": "d16",
"body": "Dimensions.m",
"description": "Dimensions.m (16.0)"
},
"in16": {
"prefix": "in16",
"body": "Insets.m",
"description": "Insets.m (16.0)"
},
"iv16": {
"prefix": "iv16",
"body": "Insets.mVertical",
"description": "Insets.mVertical (16.0)"
},
"ih16": {
"prefix": "ih16",
"body": "Insets.mHorizontal",
"description": "Insets.mHorizontal (16.0)"
},
"sp16": {
"prefix": "sp16",
"body": "Spaces.m",
"description": "Spaces.m (16.0)"
},
"sv16": {
"prefix": "sv16",
"body": "Spaces.mVertical",
"description": "Spaces.mVertical (16.0)"
},
"sh16": {
"prefix": "sh16",
"body": "Spaces.mHorizontal",
"description": "Spaces.mHorizontal (16.0)"
},
"d24": {
"prefix": "d24",
"body": "Dimensions.l",
"description": "Dimensions.l (24.0)"
},
"in24": {
"prefix": "in24",
"body": "Insets.l",
"description": "Insets.l (24.0)"
},
"iv24": {
"prefix": "iv24",
"body": "Insets.lVertical",
"description": "Insets.lVertical (24.0)"
},
"ih24": {
"prefix": "ih24",
"body": "Insets.lHorizontal",
"description": "Insets.lHorizontal (24.0)"
},
"sp24": {
"prefix": "sp24",
"body": "Spaces.l",
"description": "Spaces.l (24.0)"
},
"sv24": {
"prefix": "sv24",
"body": "Spaces.lVertical",
"description": "Spaces.lVertical (24.0)"
},
"sh24": {
"prefix": "sh24",
"body": "Spaces.lHorizontal",
"description": "Spaces.lHorizontal (24.0)"
}
}
7 changes: 7 additions & 0 deletions example/build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
targets:
$default:
builders:
dimengen|dimengen:
enabled: true
dimengen|snippet_builder:
enabled: true
Empty file added example/generate_snippets.dart
Empty file.
Loading