autoequal_gen

Creator: coderz1093

Last updated:

0 purchases

autoequal_gen Image
autoequal_gen Images

Languages

Categories

Add to Cart

Description:

autoequal gen

Provides Dart Build System builder for generating List<Object?> _$props private extensions for classes annotated with autoequal.
Usage #
In your pubspec.yaml file #

Add autoequal to your dependencies
Add autoequal_gen to your dev_dependencies
Add build_runner to your dev_dependencies

Annotate your class with @autoequal annotation #
import 'package:autoequal/autoequal.dart';
import 'package:equatable/equatable.dart';

part 'some_class.g.dart';

@autoequal
class SomeClass extends Equatable {
const SomeClass({this.id, this.random});

final String id;

@override
List<Object?> get props => _$props; //_$props will be generated
}
copied to clipboard
Make sure that you set the part file as in the example above part 'your_file_name.g.dart';.
Launch code generation
flutter pub run build_runner build
copied to clipboard
The extension will be generated
// GENERATED CODE - DO NOT MODIFY BY HAND

part of 'some_class.dart';

// **************************************************************************
// AutoequalGenerator
// **************************************************************************

extension _$SomeClassAutoequal on SomeClass {
List<Object> get _$props => [id];
}

copied to clipboard
Auto Include with Annotating #
The @autoequal is smart enough to generate the props getter for classes that use Equatable without having to annotate the class with @autoequal.
To do this, update your build.yaml file to:
Include the auto_include: true option
targets:
$default:
builders:
autoequal_gen:
enabled: true
options:
auto_include: true
exclude:
- SomeClass # regex pattern (for class names)
copied to clipboard
Or, add a regex pattern to the include option
targets:
$default:
builders:
autoequal_gen:
enabled: true
options:
include:
- SomeClass # regex pattern (for class names)
copied to clipboard
Then, use equatable and create the props getter as you normally would.
class SomeClass with EquatableMixin { // or `extends Equatable`
const SomeClass({this.id});

final String id;

@override
List<Object?> get props => _$props;
}
copied to clipboard
NOTE: If the props getter is not defined, the autoequal will not generate the _$props variable.
Inheritance #
If your class extends another class that uses Equatable, you can use the @autoequal annotation and autoequal will do the rest!
@autoequal
class SubClass extends BaseClass { // BaseClass extends Equatable
const SubClass({required this.name, required super.id});

final String name;


@override
List<Object?> get props => _$props;
}

// generated code
extension _$SubClassAutoequal on SubClass {
List<Object?> get _$props => [name, id];
}
copied to clipboard
Field/Getter annotations #
Ignore #
You can include fields or getter methods in props by annotating them with @ignore.
@ignore
final int random;
copied to clipboard
Include #
You can include fields or getter methods in props by annotating them with @include.
@include
String get id => _id;
copied to clipboard
Build.yaml options #
By default, the builder will ignore all getter methods in props, but you can change this behavior by adding the following to your build.yaml file:
targets:
$default:
builders:

autoequal_gen:
enabled: true
options:
... # view options below
copied to clipboard
Options #
To view a comprehensive list of options, view the source code
All options are optional.
All option's keys are formatted in snake_case.

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.