felangel / data_class
- воскресенье, 19 мая 2024 г. в 00:00:07
Experimental support for data classes in Dart using macros.
🚧 Experimental support for data classes in Dart using macros.
🪨 const
constructors with required, named parameters
🖨️ copyWith
with optional, nullable, named parameters
✨ toString
for an improved string representation
☯️ operator==
and hashCode
for value equality
import 'package:data_class_macro/data_class_macro.dart';
@Data()
class Person {
final String name;
}
void main() {
// 🪨 Create a const instance with required, name parameters.
const dash = Person(name: 'Dash');
// 🖨️ Create copies of your object.
final sparky = dash.copyWith(name: () => 'Sparky');
// ✨ Human-readable string representation.
print(dash); // Person(name: Dash)
print(sparky); // Person(name: Sparky)
// ☯️ Value equality comparisons.
print(dash == dash.copyWith()); // true
print(dash == sparky); // false
}
Switch to the Flutter master
channel
flutter channel master
Add package:data_class_macro
to your pubspec.yaml
dependencies:
data_class_macro: ^0.0.0-dev.1
Enable experimental macros in analysis_options.yaml
analyzer:
enable-experiment:
- macros
Use the @Data
annotation (see above example).
Run it
dart --enable-experiment=macros run main.dart
*Requires Dart SDK >= 3.5.0-152.0.dev