import 'package:flutter/material.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter/gestures.dart'; {{#imports}} {{path}} {{/imports}} {{#classes}} class {{class}}Render extends StatelessWidget { factory {{class}}Render.fromJson(Map data, VoidCallback update) { return {{class}}Render(update, {{#fields}} {{name}}Val: BaseCore<{{type}}>(null, update), {{/fields}} ); } {{class}}Render(this._update, { {{#fields}} @required this.{{name}}Val, {{/fields}} }); @override final VoidCallback _update; {{#fields}} {{core}} {{name}}Val; {{type}} get {{name}} { return {{name}}Val.value; } set {{name}}({{type}} val) { if (val == this.{{name}}) { return; } {{name}}Val.value = val; } {{/fields}} @override Map get staticFields => { {{#static}} '{{name}}': {{value}}, {{/static}} }; @override List get props => [ {{#fields}} this.{{name}}Val, {{/fields}} ]; @override String get description { final sb = StringBuffer(); {{#comments}} sb.writeln("{{comments}}"); {{/comments}} return sb.toString(); } @override Map get constructors { return { {{#constructors}} '{{name}}': {{className}}( {{#props}} {{key}}{{separator}} this.{{name}}, {{/props}} ), {{/constructors}} }; } @override Map> get properties { return { {{#constructors}} '{{name}}': { {{#props}} '{{key}}': this.{{name}}, {{/props}} }, {{/constructors}} }; } @override Map toJson() { return { 'name': '{{class}}', 'props': { {{#fields}} '{{name}}': this.{{name}}Val.toJson(), {{/fields}} } }; } @override Map toCode() { return { {{#constructors}} '{{name}}': """{{className}}( {{#props}} {{key}}{{separator}} ${this.{{name}}Val.toCode()}, {{/props}} )""", {{/constructors}} }; } final _controller = ValueNotifier(null); ValueListenable get stats => _controller; @override Widget build(BuildContext context) { if (isWidget) return TrackedWidget( controller: _controller, child: defaultBase, ); return Container(); } @override bool get isWidget => defaultBase is Widget; @override Object get defaultBase => constructors['default']; @override void debugFillProperties(DiagnosticPropertiesBuilder properties) { super.debugFillProperties(properties); {{#fields}} properties.add(DiagnosticsProperty('{{name}}', this.{{name}})); {{/fields}} } } {{/classes}}