@@ -137,15 +137,18 @@ export class ClassCodeGenerator {
137137
138138class ${ rootWidget . controller } Base {
139139 bool _loaded = false;
140- bool _controllerAttached = false ;
140+ Map<String, dynamic> _attachedControllers = Map() ;
141141 ${ varsLines . join ( '\n ' ) }
142142
143- void _attachFormControllers(${ formControls . map ( a => `${ a . controller } ` ) . join ( ',\n ' ) } ) {
144- if (_controllerAttached) {
145- return;
143+ dynamic _attachController(String controlName, controllerBuilder) {
144+ if (_attachedControllers.containsKey(controlName)) {
145+ final controller = _attachedControllers[controlName];
146+ return controller;
146147 }
147- _controllerAttached = true;
148- ${ formControls . map ( a => `${ a . name } .attachTextEditingController(${ a . controller } );` ) . join ( '\n ' ) }
148+ final controller = controllerBuilder();
149+ _attachedControllers[controlName] = controller;
150+ formGroup.get(controlName).attachTextEditingController(controller);
151+ return controller;
149152 }
150153
151154 void _load(BuildContext context) {
@@ -196,7 +199,6 @@ class ${widgetName} extends StatelessWidget${mixinsCode} {
196199 ...rootWidget . vars . map ( a => `${ a . type } ${ a . name } ;` ) ,
197200 ...( routeAware ? [ `RouteObserver<Route> _routeObserver;` ] : [ ] )
198201 ] ;
199- const attachFormControllersCode = `ctrl._attachFormControllers(${ formControls . map ( a => `${ a . controller } ` ) . join ( ',\n ' ) } );` ;
200202 const stateVarsInit : string [ ] = [
201203 ...( hasController ? [ `ctrl = new ${ rootWidget . controller } ();` ] : [ ] ) ,
202204 ...rootWidget . params . map ( a => `ctrl._${ a . name } = widget.${ a . name } ;` ) ,
@@ -231,7 +233,7 @@ class _${widgetName}State extends State<${widgetName}>${mixinsCode} {
231233 void didChangeDependencies() {
232234 super.didChangeDependencies();${ routeAware ? `\n _routeObserver = Provider.of<RouteObserver<Route>>(context)..subscribe(this, ModalRoute.of(context));` : '' }
233235 ${ rootWidget . providers . map ( a => `${ hasController ? `ctrl._${ a . name } = ` : '' } ${ a . name } = Provider.of<${ a . type } >(context);` ) . join ( '\n ' ) }
234- ${ hasController ? `ctrl._load(context);\n ${ attachFormControllersCode } ` : '' }
236+ ${ hasController ? `ctrl._load(context);` : '' }
235237 }
236238
237239 @override
0 commit comments