{{#imports}} {{path}} {{/imports}} class {{class}}Base extends BaseWidget { {{class}}Base({ @required this.constructor, {{#fields}} {{type}} {{name}}, {{/fields}} }) {{constructor_divider}} {{#fields}} this._{{name}} = {{name}}, {{/fields}} { this.value = this.toJson(); } @override final String constructor; factory {{class}}Base.fromJson(Map data, String constructor) { return {{class}}Base( constructor: constructor, {{#fields}} {{name}}: {{value}}, {{/fields}} ); } factory {{class}}Base.readOnly() { return {{class}}Base( constructor: '{{class}}', {{#fields}} {{name}}: null, {{/fields}} ); } @override String get description => r""" {{description}} """; {{#fields}} {{type}} _{{name}}; {{/fields}} @override Map get properties => { {{#fields}} '{{key}}': '{{type}}', {{/fields}} }; @override void setProperty(String name, dynamic value) { switch(name) { {{#fields}} case '{{name}}': this._{{name}} = value; break; {{/fields}} default: } this.value = this.toJson(); this.notifyListeners(); } @override dynamic getProperty(String name) { switch(name) { {{#fields}} case '{{name}}': return this._{{name}}; {{/fields}} default: } return null; } @override Map toJson() { return { 'name' : '${constructor}', 'params': { {{#fields}} '{{key}}': this._{{name}}, {{/fields}} } }; } @override Map flavors(BuildContext context) { return { {{#constructors}} '{{name}}': {{widget}}, {{/constructors}} }; } @override List get constructors => [ {{#constructors}} '{{name}}', {{/constructors}} ]; }