0 purchases
class fields
Class Fields
Generate all field names as Strings to use within Maps, serialization, etc!
Purpose #
When serializing to & from json, you need to provide the field names as Strings for the keys to the map. Strings are great! ... just make sure to have the right format, you don't have any typos, and that if you ever update the string, that you don't forget to update all the places that also use that same string!
class_fields is a library that generates all the field names to help you keep your code DRY and type safe. class_fields creates a single reference point that can be used throughout your codebase.
Usage #
Depend on it #
Add class_fields and class_fields_annotations within your pubspec.yaml
# annotations belong in the dependencies because they are used within your code
dependencies:
class_fields_annotations: [recent_version]
# class_fields is only used to generate the code, and is not used within your codebase
# so it belongs in the dev_dependencies
dev_dependencies:
class_fields: [recent_version]
# needed to use class_fields
build_runner: [recent_cersion]
copied to clipboard
Use it #
Add the part file #
part 'main.f.dart';
copied to clipboard
Annotate your class #
Decorate your class with the @fields annotation
@fields
class Person {
const Person({
required this.name,
required this.age,
});
final String name;
final int age;
}
copied to clipboard
Run the build_runner #
# run once
flutter packages pub run build_runner build --delete-conflicting-outputs
# run and listen to changes
flutter packages pub run build_runner watch --delete-conflicting-outputs
copied to clipboard
Use the generated code #
// generated code
class _$PersonFields {
const _$PersonFields();
final name = 'name';
final age = 'age';
}
copied to clipboard
class Person {
...
// add a static instance of the generated class
static const fields = _$PersonFields();
}
copied to clipboard
// somewhere in your code
final value = map[Person.fields.name];
map[Person.fields.name] = value
copied to clipboard
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.