// main.dart
import 'person.dart';
void main() {
var person = Person('Joe', 25);
print(person);
person.decrimentAge();
print(person);
person.incrementAge();
print(person);
}
// person.dart
// указываем путь до файла в котором будем добавлять новую
// фичу для класса Person
import augment 'augment_person.dart';
class Person {
final String name;
int _age;
Person(this.name, this._age);
void incrementAge() {
_age += 1;
}
@override
String toString() {
return 'Person{name: $name, age: $_age}';
}
}
//augment_person.dart
// указываем имя расширяемой библиотеки
augment library 'person.dart';
augment class Person {
// добавляемый к классу Person метод
void decrimentAge() {
_age -= 1;
}
}
Единственный минус - реализована она пока на полшишечки и не поддерживает всех возможностей, описанных в спецификации... ну, на то это и экспериментальный режим))