walk method
Copies this instance, mapping each field with f
.
Example
import 'package:kind/kind.dart';
class Person with HasKind, HasMapping {
static const kind = ImmutableKind<Person>.withMapperMethod(
blank: const Person(),
);
final String name;
const Person({this.name=''});
@override
Kind<Person> runtimeKind => kind;
@override
Person mapper(Mapper f) {
return Person(
f(name, 'name', kind: const StringKind()),
);
}
}
Implementation
@override
FieldMirror<T> walk(Mapper f) {
final name = f(
this.name,
'name',
kind: const StringKind.singleLineShort(),
);
final jsonName = f(
this.jsonName,
'jsonName',
kind: const StringKind.singleLineShort(),
);
final kind = f(
this.kind,
'kind',
superKind: Kind.forKindInDebugMode,
);
final defaultValue = f(this.defaultValue, 'defaultValue');
if (f.canReturnSame) {
return this;
}
return FieldMirror<T>(
name: name,
jsonName: jsonName,
kind: kind,
defaultValue: defaultValue,
);
}