diff --git a/.github/workflows/pr-check-annotation.yml b/.github/workflows/pr-check-annotation.yml index f0344f1e..6af10a95 100644 --- a/.github/workflows/pr-check-annotation.yml +++ b/.github/workflows/pr-check-annotation.yml @@ -18,7 +18,7 @@ jobs: - name: Setup Flutter uses: subosito/flutter-action@v2 with: - flutter-version: 3.27.4 + flutter-version: 3.32.2 channel: stable cache: true - name: Check out repository code diff --git a/.github/workflows/pr-check-example.yml b/.github/workflows/pr-check-example.yml index 6af2cb9f..a75378d7 100644 --- a/.github/workflows/pr-check-example.yml +++ b/.github/workflows/pr-check-example.yml @@ -18,7 +18,7 @@ jobs: - name: Setup Flutter uses: subosito/flutter-action@v2 with: - flutter-version: 3.27.4 + flutter-version: 3.32.2 channel: stable cache: true - name: Check out repository code diff --git a/.github/workflows/pr-check-generator-test.yml b/.github/workflows/pr-check-generator-test.yml index 9324bf02..918437a3 100644 --- a/.github/workflows/pr-check-generator-test.yml +++ b/.github/workflows/pr-check-generator-test.yml @@ -18,7 +18,7 @@ jobs: - name: Setup Flutter uses: subosito/flutter-action@v2 with: - flutter-version: 3.27.4 + flutter-version: 3.32.2 channel: stable cache: true - name: Check out repository code diff --git a/.github/workflows/pr-check-generator.yml b/.github/workflows/pr-check-generator.yml index e797fd8c..d0b0c505 100644 --- a/.github/workflows/pr-check-generator.yml +++ b/.github/workflows/pr-check-generator.yml @@ -18,7 +18,7 @@ jobs: - name: Setup Flutter uses: subosito/flutter-action@v2 with: - flutter-version: 3.27.4 + flutter-version: 3.32.2 channel: stable cache: true - name: Check out repository code diff --git a/packages/reactive_forms_annotations/CHANGELOG.md b/packages/reactive_forms_annotations/CHANGELOG.md index 1ab0cc64..f38c574c 100644 --- a/packages/reactive_forms_annotations/CHANGELOG.md +++ b/packages/reactive_forms_annotations/CHANGELOG.md @@ -1,3 +1,23 @@ +## [8.0.1] + +* bugfix + +## [8.0.0] + +* Rf18 + +## [8.0.0-beta0] + +* Rf18 + +## [7.0.1] + +* ReactiveFormArrayItemBuilder + +## [7.0.0] + +* v7 release + ## [7.0.0-beta0] * freezed 3 diff --git a/packages/reactive_forms_annotations/lib/reactive_forms_annotations.dart b/packages/reactive_forms_annotations/lib/reactive_forms_annotations.dart index 9514183a..392c4406 100644 --- a/packages/reactive_forms_annotations/lib/reactive_forms_annotations.dart +++ b/packages/reactive_forms_annotations/lib/reactive_forms_annotations.dart @@ -11,6 +11,7 @@ export 'package:reactive_forms/src/widgets/reactive_form_pop_scope.dart'; export 'src/reactive_form_annotation.dart'; export 'src/form_group_annotation.dart'; export 'src/form_array_annotation.dart'; +export 'src/form_array.dart'; export 'src/form_control_annotation.dart'; export 'src/form_model.dart'; export 'src/extended_control.dart'; diff --git a/packages/reactive_forms_annotations/lib/src/form_array.dart b/packages/reactive_forms_annotations/lib/src/form_array.dart new file mode 100644 index 00000000..f1cb7415 --- /dev/null +++ b/packages/reactive_forms_annotations/lib/src/form_array.dart @@ -0,0 +1,69 @@ +import 'package:flutter/material.dart'; +import 'package:reactive_forms/reactive_forms.dart'; + +class ReactiveFormArrayItemBuilder extends StatelessWidget { + const ReactiveFormArrayItemBuilder({ + Key? key, + this.formControl, + this.builder, + required this.itemBuilder, + this.emptyBuilder, + this.controlFilter, + }) : super(key: key); + + final FormArray? formControl; + + final Widget Function(BuildContext context, List itemList)? builder; + + final Widget Function( + BuildContext context, + int i, + FormControl control, + T? item, + ) itemBuilder; + + final Widget Function(BuildContext context)? emptyBuilder; + + final bool Function(FormControl control)? controlFilter; + + @override + Widget build(BuildContext context) { + return ReactiveFormArray( + formArray: formControl, + builder: (context, formArray, child) { + final values = formArray.controls.indexed + .where((e) => + controlFilter?.call( + e.$2 as FormControl, + ) ?? + true) + .toList(); + + final itemList = values + .map((item) { + return MapEntry( + item.$1, + itemBuilder( + context, + item.$1, + formArray.controls[item.$1] as FormControl, + item.$2.value, + ), + ); + }) + .map((e) => e.value) + .toList(); + + if (emptyBuilder != null && itemList.isEmpty) { + return emptyBuilder!(context); + } + + return builder?.call( + context, + itemList, + ) ?? + Column(children: itemList); + }, + ); + } +} diff --git a/packages/reactive_forms_annotations/pubspec.yaml b/packages/reactive_forms_annotations/pubspec.yaml index 24a6c849..4d8eeb86 100644 --- a/packages/reactive_forms_annotations/pubspec.yaml +++ b/packages/reactive_forms_annotations/pubspec.yaml @@ -2,14 +2,14 @@ name: reactive_forms_annotations description: Annotations for reactive_forms_generator repository: https://github.com/artflutter/reactive_forms_generator -version: 7.0.0-beta0 +version: 8.0.1 environment: sdk: ">=3.6.0 <4.0.0" resolution: workspace dependencies: - reactive_forms: ^17.0.0 + reactive_forms: ^18.0.0 collection: ^1.18.0 logging: ^1.3.0 flutter: diff --git a/packages/reactive_forms_generator/CHANGELOG.md b/packages/reactive_forms_generator/CHANGELOG.md index 67186563..a64de7d6 100644 --- a/packages/reactive_forms_generator/CHANGELOG.md +++ b/packages/reactive_forms_generator/CHANGELOG.md @@ -1,3 +1,35 @@ +## [8.0.1] + +* bugfix + +## [8.0.0] + +* Rf18 + +## [8.0.0-beta0] + +* Rf18 + +## [7.0.4] + +* ReactiveFormArrayItemBuilder + +## [7.0.3] + +* fix + +## [7.0.2] + +* fix + +## [7.0.1] + +* array builder improvements + +## [7.0.0] + +* v7 release + ## [7.0.0-beta4] * bugfix diff --git a/packages/reactive_forms_generator/example/lib/docs/animated_url_list/animated_url_list.gform.dart b/packages/reactive_forms_generator/example/lib/docs/animated_url_list/animated_url_list.gform.dart index ee1d2a7b..e72b733a 100644 --- a/packages/reactive_forms_generator/example/lib/docs/animated_url_list/animated_url_list.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/animated_url_list/animated_url_list.gform.dart @@ -54,7 +54,7 @@ class ReactiveAnimatedUrlListForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -63,7 +63,8 @@ class ReactiveAnimatedUrlListForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static AnimatedUrlListForm? of( BuildContext context, { @@ -90,7 +91,7 @@ class ReactiveAnimatedUrlListForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -111,7 +112,7 @@ class AnimatedUrlListFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -122,7 +123,8 @@ class AnimatedUrlListFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, AnimatedUrlListForm formModel, Widget? child) @@ -210,7 +212,7 @@ class _AnimatedUrlListFormBuilderState child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -879,45 +881,28 @@ class ReactiveAnimatedUrlListFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder< + ReactiveAnimatedUrlListFormArrayBuilderT>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -971,45 +956,34 @@ class ReactiveAnimatedUrlListFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder< + ReactiveAnimatedUrlListFormArrayBuilderT>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/animated_url_list/animated_url_list_output.gform.dart b/packages/reactive_forms_generator/example/lib/docs/animated_url_list/animated_url_list_output.gform.dart index 1c5b111a..34d08469 100644 --- a/packages/reactive_forms_generator/example/lib/docs/animated_url_list/animated_url_list_output.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/animated_url_list/animated_url_list_output.gform.dart @@ -54,7 +54,7 @@ class ReactiveAnimatedUrlLisOForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -63,7 +63,8 @@ class ReactiveAnimatedUrlLisOForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static AnimatedUrlLisOForm? of( BuildContext context, { @@ -90,7 +91,7 @@ class ReactiveAnimatedUrlLisOForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -111,7 +112,7 @@ class AnimatedUrlLisOFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -122,7 +123,8 @@ class AnimatedUrlLisOFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, AnimatedUrlLisOForm formModel, Widget? child) @@ -210,7 +212,7 @@ class _AnimatedUrlLisOFormBuilderState child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -953,45 +955,28 @@ class ReactiveAnimatedUrlLisOFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder< + ReactiveAnimatedUrlLisOFormArrayBuilderT>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -1045,45 +1030,34 @@ class ReactiveAnimatedUrlLisOFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder< + ReactiveAnimatedUrlLisOFormArrayBuilderT>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/annotateless/annotateless.gform.dart b/packages/reactive_forms_generator/example/lib/docs/annotateless/annotateless.gform.dart index 55a71723..ae746939 100644 --- a/packages/reactive_forms_generator/example/lib/docs/annotateless/annotateless.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/annotateless/annotateless.gform.dart @@ -53,7 +53,7 @@ class ReactiveAnnotatelessForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveAnnotatelessForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static AnnotatelessForm? of( BuildContext context, { @@ -89,7 +90,7 @@ class ReactiveAnnotatelessForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -110,7 +111,7 @@ class AnnotatelessFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -121,7 +122,8 @@ class AnnotatelessFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, AnnotatelessForm formModel, Widget? child) builder; @@ -207,7 +209,7 @@ class _AnnotatelessFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -554,45 +556,27 @@ class ReactiveAnnotatelessFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -646,45 +630,33 @@ class ReactiveAnnotatelessFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/annotateless/annotateless_output.gform.dart b/packages/reactive_forms_generator/example/lib/docs/annotateless/annotateless_output.gform.dart index e8aa3b4d..ecf3acc8 100644 --- a/packages/reactive_forms_generator/example/lib/docs/annotateless/annotateless_output.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/annotateless/annotateless_output.gform.dart @@ -53,7 +53,7 @@ class ReactiveAnnotatelessOForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveAnnotatelessOForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static AnnotatelessOForm? of( BuildContext context, { @@ -89,7 +90,7 @@ class ReactiveAnnotatelessOForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -110,7 +111,7 @@ class AnnotatelessOFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -121,7 +122,8 @@ class AnnotatelessOFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, AnnotatelessOForm formModel, Widget? child) builder; @@ -207,7 +209,7 @@ class _AnnotatelessOFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -565,45 +567,27 @@ class ReactiveAnnotatelessOFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -657,45 +641,33 @@ class ReactiveAnnotatelessOFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/array_nullable/array_nullable.gform.dart b/packages/reactive_forms_generator/example/lib/docs/array_nullable/array_nullable.gform.dart index c424d28e..7527bfe1 100644 --- a/packages/reactive_forms_generator/example/lib/docs/array_nullable/array_nullable.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/array_nullable/array_nullable.gform.dart @@ -53,7 +53,7 @@ class ReactiveArrayNullableForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveArrayNullableForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static ArrayNullableForm? of( BuildContext context, { @@ -89,7 +90,7 @@ class ReactiveArrayNullableForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -110,7 +111,7 @@ class ArrayNullableFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -121,7 +122,8 @@ class ArrayNullableFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, ArrayNullableForm formModel, Widget? child) builder; @@ -207,7 +209,7 @@ class _ArrayNullableFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -1198,45 +1200,27 @@ class ReactiveArrayNullableFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -1290,45 +1274,33 @@ class ReactiveArrayNullableFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/array_nullable/array_nullable_output.gform.dart b/packages/reactive_forms_generator/example/lib/docs/array_nullable/array_nullable_output.gform.dart index 87670293..ca3968d2 100644 --- a/packages/reactive_forms_generator/example/lib/docs/array_nullable/array_nullable_output.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/array_nullable/array_nullable_output.gform.dart @@ -54,7 +54,7 @@ class ReactiveArrayNullableOForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -63,7 +63,8 @@ class ReactiveArrayNullableOForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static ArrayNullableOForm? of( BuildContext context, { @@ -90,7 +91,7 @@ class ReactiveArrayNullableOForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -111,7 +112,7 @@ class ArrayNullableOFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -122,7 +123,8 @@ class ArrayNullableOFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, ArrayNullableOForm formModel, Widget? child) @@ -209,7 +211,7 @@ class _ArrayNullableOFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -1076,7 +1078,6 @@ class ArrayNullableOOutput { final List? vegetablesList; final List? someList; final List? modeList; - ArrayNullableOOutput( {@RfArray(validators: [RequiredValidator()]) required this.emailList, @RfArray() this.fruitList = const [], @@ -1128,45 +1129,28 @@ class ReactiveArrayNullableOFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder< + ReactiveArrayNullableOFormArrayBuilderT>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -1220,45 +1204,34 @@ class ReactiveArrayNullableOFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder< + ReactiveArrayNullableOFormArrayBuilderT>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/create/create_output.gform.dart b/packages/reactive_forms_generator/example/lib/docs/create/create_output.gform.dart index b2c76958..e7676b5b 100644 --- a/packages/reactive_forms_generator/example/lib/docs/create/create_output.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/create/create_output.gform.dart @@ -53,7 +53,7 @@ class ReactiveMSICreateForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveMSICreateForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static MSICreateForm? of( BuildContext context, { @@ -88,7 +89,7 @@ class ReactiveMSICreateForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -108,7 +109,7 @@ class MSICreateFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -119,7 +120,8 @@ class MSICreateFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, MSICreateForm formModel, Widget? child) builder; @@ -202,7 +204,7 @@ class _MSICreateFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -3084,45 +3086,27 @@ class ReactiveMSICreateFormArrayBuilder throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -3175,45 +3159,33 @@ class ReactiveMSICreateFormArrayBuilder2 throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/delivery_list/delivery_list.gform.dart b/packages/reactive_forms_generator/example/lib/docs/delivery_list/delivery_list.gform.dart index 10fb06f9..2a21c593 100644 --- a/packages/reactive_forms_generator/example/lib/docs/delivery_list/delivery_list.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/delivery_list/delivery_list.gform.dart @@ -53,7 +53,7 @@ class ReactiveDeliveryListForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveDeliveryListForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static DeliveryListForm? of( BuildContext context, { @@ -89,7 +90,7 @@ class ReactiveDeliveryListForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -110,7 +111,7 @@ class DeliveryListFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -121,7 +122,8 @@ class DeliveryListFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, DeliveryListForm formModel, Widget? child) builder; @@ -207,7 +209,7 @@ class _DeliveryListFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -1914,45 +1916,27 @@ class ReactiveDeliveryListFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -2006,45 +1990,33 @@ class ReactiveDeliveryListFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -2161,7 +2133,7 @@ class ReactiveStandaloneDeliveryPointForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -2170,7 +2142,8 @@ class ReactiveStandaloneDeliveryPointForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static StandaloneDeliveryPointForm? of( BuildContext context, { @@ -2197,7 +2170,7 @@ class ReactiveStandaloneDeliveryPointForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -2218,7 +2191,7 @@ class StandaloneDeliveryPointFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -2229,7 +2202,8 @@ class StandaloneDeliveryPointFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function(BuildContext context, StandaloneDeliveryPointForm formModel, Widget? child) builder; @@ -2317,7 +2291,7 @@ class _StandaloneDeliveryPointFormBuilderState child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -2690,46 +2664,28 @@ class ReactiveStandaloneDeliveryPointFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl< - ReactiveStandaloneDeliveryPointFormArrayBuilderT>, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] as FormControl< - ReactiveStandaloneDeliveryPointFormArrayBuilderT>, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder< + ReactiveStandaloneDeliveryPointFormArrayBuilderT>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -2784,46 +2740,34 @@ class ReactiveStandaloneDeliveryPointFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl< - ReactiveStandaloneDeliveryPointFormArrayBuilderT>, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] as FormControl< - ReactiveStandaloneDeliveryPointFormArrayBuilderT>, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder< + ReactiveStandaloneDeliveryPointFormArrayBuilderT>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/delivery_list/delivery_list_output.gform.dart b/packages/reactive_forms_generator/example/lib/docs/delivery_list/delivery_list_output.gform.dart index a4edc102..d34b9579 100644 --- a/packages/reactive_forms_generator/example/lib/docs/delivery_list/delivery_list_output.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/delivery_list/delivery_list_output.gform.dart @@ -53,7 +53,7 @@ class ReactiveDeliveryListOForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveDeliveryListOForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static DeliveryListOForm? of( BuildContext context, { @@ -89,7 +90,7 @@ class ReactiveDeliveryListOForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -110,7 +111,7 @@ class DeliveryListOFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -121,7 +122,8 @@ class DeliveryListOFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, DeliveryListOForm formModel, Widget? child) builder; @@ -207,7 +209,7 @@ class _DeliveryListOFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -1968,45 +1970,27 @@ class ReactiveDeliveryListOFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -2060,45 +2044,33 @@ class ReactiveDeliveryListOFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -2215,7 +2187,7 @@ class ReactiveStandaloneDeliveryPointForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -2224,7 +2196,8 @@ class ReactiveStandaloneDeliveryPointForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static StandaloneDeliveryPointForm? of( BuildContext context, { @@ -2251,7 +2224,7 @@ class ReactiveStandaloneDeliveryPointForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -2272,7 +2245,7 @@ class StandaloneDeliveryPointFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -2283,7 +2256,8 @@ class StandaloneDeliveryPointFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function(BuildContext context, StandaloneDeliveryPointForm formModel, Widget? child) builder; @@ -2371,7 +2345,7 @@ class _StandaloneDeliveryPointFormBuilderState child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -2745,46 +2719,28 @@ class ReactiveStandaloneDeliveryPointFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl< - ReactiveStandaloneDeliveryPointFormArrayBuilderT>, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] as FormControl< - ReactiveStandaloneDeliveryPointFormArrayBuilderT>, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder< + ReactiveStandaloneDeliveryPointFormArrayBuilderT>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -2839,46 +2795,34 @@ class ReactiveStandaloneDeliveryPointFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl< - ReactiveStandaloneDeliveryPointFormArrayBuilderT>, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] as FormControl< - ReactiveStandaloneDeliveryPointFormArrayBuilderT>, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder< + ReactiveStandaloneDeliveryPointFormArrayBuilderT>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/freezed/freezed_class.gform.dart b/packages/reactive_forms_generator/example/lib/docs/freezed/freezed_class.gform.dart index a37d71b4..93d1d0dc 100644 --- a/packages/reactive_forms_generator/example/lib/docs/freezed/freezed_class.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/freezed/freezed_class.gform.dart @@ -53,7 +53,7 @@ class ReactiveFreezedClassForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveFreezedClassForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static FreezedClassForm? of( BuildContext context, { @@ -89,7 +90,7 @@ class ReactiveFreezedClassForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -110,7 +111,7 @@ class FreezedClassFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -121,7 +122,8 @@ class FreezedClassFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, FreezedClassForm formModel, Widget? child) builder; @@ -207,7 +209,7 @@ class _FreezedClassFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -1040,45 +1042,27 @@ class ReactiveFreezedClassFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -1132,45 +1116,33 @@ class ReactiveFreezedClassFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/freezed/freezed_class_output.gform.dart b/packages/reactive_forms_generator/example/lib/docs/freezed/freezed_class_output.gform.dart index 760ee4e7..e50e0424 100644 --- a/packages/reactive_forms_generator/example/lib/docs/freezed/freezed_class_output.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/freezed/freezed_class_output.gform.dart @@ -53,7 +53,7 @@ class ReactiveFreezedClassOForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveFreezedClassOForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static FreezedClassOForm? of( BuildContext context, { @@ -89,7 +90,7 @@ class ReactiveFreezedClassOForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -110,7 +111,7 @@ class FreezedClassOFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -121,7 +122,8 @@ class FreezedClassOFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, FreezedClassOForm formModel, Widget? child) builder; @@ -207,7 +209,7 @@ class _FreezedClassOFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -1315,7 +1317,6 @@ class FreezedClassOForm @Rf(output: true) abstract class FreezedClassOOutput with _$FreezedClassOOutput { FreezedClassOOutput._(); - factory FreezedClassOOutput(@RfControl() String? gender, @RfControl(validators: [RequiredValidator()]) String genderR, {@RfControl() String? id, @@ -1325,10 +1326,8 @@ abstract class FreezedClassOOutput with _$FreezedClassOOutput { @JsonKey(name: 'logo_image') @RfControl() String? logoImage, @RfControl() double? year, @Default([]) List selectedSpaces}) = _FreezedClassOOutput; - factory FreezedClassOOutput.fromJson(Map json) => _$FreezedClassOOutputFromJson(json); - bool method() => false; } @@ -1375,45 +1374,27 @@ class ReactiveFreezedClassOFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -1467,45 +1448,33 @@ class ReactiveFreezedClassOFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/freezed2/test.gform.dart b/packages/reactive_forms_generator/example/lib/docs/freezed2/test.gform.dart index 6e49e185..894059d7 100644 --- a/packages/reactive_forms_generator/example/lib/docs/freezed2/test.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/freezed2/test.gform.dart @@ -53,7 +53,7 @@ class ReactiveTestForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveTestForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static TestForm? of( BuildContext context, { @@ -88,7 +89,7 @@ class ReactiveTestForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -107,7 +108,7 @@ class TestFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -118,7 +119,8 @@ class TestFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function(BuildContext context, TestForm formModel, Widget? child) builder; @@ -201,7 +203,7 @@ class _TestFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -575,45 +577,27 @@ class ReactiveTestFormArrayBuilder throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -666,45 +650,33 @@ class ReactiveTestFormArrayBuilder2 throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/generic/generic.gform.dart b/packages/reactive_forms_generator/example/lib/docs/generic/generic.gform.dart index f991a114..073b2958 100644 --- a/packages/reactive_forms_generator/example/lib/docs/generic/generic.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/generic/generic.gform.dart @@ -53,7 +53,7 @@ class ReactiveTagsForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveTagsForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static TagsForm? of( BuildContext context, { @@ -88,7 +89,7 @@ class ReactiveTagsForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -107,7 +108,7 @@ class TagsFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -118,7 +119,8 @@ class TagsFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, TagsForm formModel, Widget? child) builder; @@ -201,7 +203,7 @@ class _TagsFormBuilderState extends State> { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -492,45 +494,27 @@ class ReactiveTagsFormArrayBuilder throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -583,45 +567,33 @@ class ReactiveTagsFormArrayBuilder2 throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/generic/generic_output.gform.dart b/packages/reactive_forms_generator/example/lib/docs/generic/generic_output.gform.dart index 2ab0d055..f409ff97 100644 --- a/packages/reactive_forms_generator/example/lib/docs/generic/generic_output.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/generic/generic_output.gform.dart @@ -53,7 +53,7 @@ class ReactiveTagsOForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveTagsOForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static TagsOForm? of( BuildContext context, { @@ -88,7 +89,7 @@ class ReactiveTagsOForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -108,7 +109,7 @@ class TagsOFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -119,7 +120,8 @@ class TagsOFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, TagsOForm formModel, Widget? child) builder; @@ -202,7 +204,7 @@ class _TagsOFormBuilderState extends State> { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -455,7 +457,6 @@ class TagsOForm implements FormModel, TagsOOutput> { @Rf(output: true) abstract class TagsOOutput with _$TagsOOutput { factory TagsOOutput({@RfControl() required List? tags}) = _TagsOOutput; - const TagsOOutput._(); } @@ -502,45 +503,27 @@ class ReactiveTagsOFormArrayBuilder throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -593,45 +576,33 @@ class ReactiveTagsOFormArrayBuilder2 throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/generic_status_list/generic_status_list.gform.dart b/packages/reactive_forms_generator/example/lib/docs/generic_status_list/generic_status_list.gform.dart index f0e62ff2..24598d50 100644 --- a/packages/reactive_forms_generator/example/lib/docs/generic_status_list/generic_status_list.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/generic_status_list/generic_status_list.gform.dart @@ -54,7 +54,7 @@ class ReactiveStatusListForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -63,7 +63,8 @@ class ReactiveStatusListForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static StatusListForm? of( BuildContext context, { @@ -90,7 +91,7 @@ class ReactiveStatusListForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -111,7 +112,7 @@ class StatusListFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -122,7 +123,8 @@ class StatusListFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, StatusListForm formModel, Widget? child) builder; @@ -209,7 +211,7 @@ class _StatusListFormBuilderState child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -523,45 +525,27 @@ class ReactiveStatusListFormArrayBuilder( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -614,45 +598,33 @@ class ReactiveStatusListFormArrayBuilder2( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/generic_status_list/generic_status_list_output.gform.dart b/packages/reactive_forms_generator/example/lib/docs/generic_status_list/generic_status_list_output.gform.dart index 4ecb6702..68a260f0 100644 --- a/packages/reactive_forms_generator/example/lib/docs/generic_status_list/generic_status_list_output.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/generic_status_list/generic_status_list_output.gform.dart @@ -55,7 +55,7 @@ class ReactiveStatusListOForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -64,7 +64,8 @@ class ReactiveStatusListOForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static StatusListOForm? of( BuildContext context, { @@ -91,7 +92,7 @@ class ReactiveStatusListOForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -112,7 +113,7 @@ class StatusListOFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -123,7 +124,8 @@ class StatusListOFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, StatusListOForm formModel, Widget? child) @@ -211,7 +213,7 @@ class _StatusListOFormBuilderState child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -532,45 +534,27 @@ class ReactiveStatusListOFormArrayBuilder( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -623,45 +607,33 @@ class ReactiveStatusListOFormArrayBuilder2( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/group/group.gform.dart b/packages/reactive_forms_generator/example/lib/docs/group/group.gform.dart index bc31771e..7b0ded29 100644 --- a/packages/reactive_forms_generator/example/lib/docs/group/group.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/group/group.gform.dart @@ -53,7 +53,7 @@ class ReactiveGroupForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveGroupForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static GroupForm? of( BuildContext context, { @@ -88,7 +89,7 @@ class ReactiveGroupForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -107,7 +108,7 @@ class GroupFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -118,7 +119,8 @@ class GroupFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, GroupForm formModel, Widget? child) builder; @@ -201,7 +203,7 @@ class _GroupFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -1982,45 +1984,27 @@ class ReactiveGroupFormArrayBuilder throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -2073,45 +2057,33 @@ class ReactiveGroupFormArrayBuilder2 throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/group/group_output.gform.dart b/packages/reactive_forms_generator/example/lib/docs/group/group_output.gform.dart index 1aa6633c..acd29dde 100644 --- a/packages/reactive_forms_generator/example/lib/docs/group/group_output.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/group/group_output.gform.dart @@ -53,7 +53,7 @@ class ReactiveGroupOForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveGroupOForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static GroupOForm? of( BuildContext context, { @@ -88,7 +89,7 @@ class ReactiveGroupOForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -107,7 +108,7 @@ class GroupOFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -118,7 +119,8 @@ class GroupOFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, GroupOForm formModel, Widget? child) builder; @@ -201,7 +203,7 @@ class _GroupOFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -1952,7 +1954,6 @@ class GroupOOutput { final PhoneOOutput? phone; final AddressOOutput? address; final AddressOOutput? address2; - GroupOOutput({this.personal, this.phone, this.address, this.address2}); } @@ -1960,7 +1961,6 @@ class GroupOOutput { class PersonalOOutput { final String? name; final String? email; - PersonalOOutput( {@RfControl() this.name, @RfControl() this.email}); } @@ -1969,7 +1969,6 @@ class PersonalOOutput { class PhoneOOutput { final String? phoneNumber; final String? countryIso; - PhoneOOutput( {@RfControl() this.phoneNumber, @RfControl() this.countryIso}); @@ -1980,7 +1979,6 @@ class AddressOOutput { final String? street; final String? city; final String? zip; - AddressOOutput( {@RfControl() this.street, @RfControl() this.city, @@ -2030,45 +2028,27 @@ class ReactiveGroupOFormArrayBuilder throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -2121,45 +2101,33 @@ class ReactiveGroupOFormArrayBuilder2 throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/login/login.gform.dart b/packages/reactive_forms_generator/example/lib/docs/login/login.gform.dart index 71f90b9a..c802a89d 100644 --- a/packages/reactive_forms_generator/example/lib/docs/login/login.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/login/login.gform.dart @@ -53,7 +53,7 @@ class ReactiveLoginForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveLoginForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static LoginForm? of( BuildContext context, { @@ -88,7 +89,7 @@ class ReactiveLoginForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -107,7 +108,7 @@ class LoginFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -118,7 +119,8 @@ class LoginFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, LoginForm formModel, Widget? child) builder; @@ -201,7 +203,7 @@ class _LoginFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -550,45 +552,27 @@ class ReactiveLoginFormArrayBuilder throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -641,45 +625,33 @@ class ReactiveLoginFormArrayBuilder2 throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/login/login_form.dart b/packages/reactive_forms_generator/example/lib/docs/login/login_form.dart index cf462ece..7c1f9d9f 100644 --- a/packages/reactive_forms_generator/example/lib/docs/login/login_form.dart +++ b/packages/reactive_forms_generator/example/lib/docs/login/login_form.dart @@ -23,7 +23,7 @@ class _LoginFormWidgetState extends State { title: const Text('Login'), body: LoginFormBuilder( canPop: (formGroup) => true, - onPopInvoked: (formGroup, didPop) => {}, + onPopInvokedWithResult: (formGroup, didPop, result) => {}, model: _emptyModel, builder: (context, formModel, child) { return Column( diff --git a/packages/reactive_forms_generator/example/lib/docs/login/login_output.gform.dart b/packages/reactive_forms_generator/example/lib/docs/login/login_output.gform.dart index d46f5acf..4222d473 100644 --- a/packages/reactive_forms_generator/example/lib/docs/login/login_output.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/login/login_output.gform.dart @@ -53,7 +53,7 @@ class ReactiveLoginOForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveLoginOForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static LoginOForm? of( BuildContext context, { @@ -88,7 +89,7 @@ class ReactiveLoginOForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -107,7 +108,7 @@ class LoginOFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -118,7 +119,8 @@ class LoginOFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, LoginOForm formModel, Widget? child) builder; @@ -201,7 +203,7 @@ class _LoginOFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -571,12 +573,10 @@ class LoginOForm implements FormModel { class LoginOOutput extends Equatable { final String email; final String password; - const LoginOOutput( {@RfControl(validators: [RequiredValidator(), RequiredValidator()]) required this.email, @RfControl(validators: [RequiredValidator2()]) required this.password}); - @override List get props => [email, password]; } @@ -624,45 +624,27 @@ class ReactiveLoginOFormArrayBuilder throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -715,45 +697,33 @@ class ReactiveLoginOFormArrayBuilder2 throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/login_extended/login_extended.gform.dart b/packages/reactive_forms_generator/example/lib/docs/login_extended/login_extended.gform.dart index f20b6a99..e587c017 100644 --- a/packages/reactive_forms_generator/example/lib/docs/login_extended/login_extended.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/login_extended/login_extended.gform.dart @@ -53,7 +53,7 @@ class ReactiveLoginExtendedForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveLoginExtendedForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static LoginExtendedForm? of( BuildContext context, { @@ -89,7 +90,7 @@ class ReactiveLoginExtendedForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -110,7 +111,7 @@ class LoginExtendedFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -121,7 +122,8 @@ class LoginExtendedFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, LoginExtendedForm formModel, Widget? child) builder; @@ -207,7 +209,7 @@ class _LoginExtendedFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -1190,45 +1192,27 @@ class ReactiveLoginExtendedFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -1282,45 +1266,33 @@ class ReactiveLoginExtendedFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/login_extended/login_extended_output.gform.dart b/packages/reactive_forms_generator/example/lib/docs/login_extended/login_extended_output.gform.dart index d8bc5ff3..5d4ede40 100644 --- a/packages/reactive_forms_generator/example/lib/docs/login_extended/login_extended_output.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/login_extended/login_extended_output.gform.dart @@ -54,7 +54,7 @@ class ReactiveLoginExtendedOForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -63,7 +63,8 @@ class ReactiveLoginExtendedOForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static LoginExtendedOForm? of( BuildContext context, { @@ -90,7 +91,7 @@ class ReactiveLoginExtendedOForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -111,7 +112,7 @@ class LoginExtendedOFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -122,7 +123,8 @@ class LoginExtendedOFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, LoginExtendedOForm formModel, Widget? child) @@ -209,7 +211,7 @@ class _LoginExtendedOFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -1340,45 +1342,28 @@ class ReactiveLoginExtendedOFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder< + ReactiveLoginExtendedOFormArrayBuilderT>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -1432,45 +1417,34 @@ class ReactiveLoginExtendedOFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder< + ReactiveLoginExtendedOFormArrayBuilderT>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/login_extended_nullable/login_extended_nullable.gform.dart b/packages/reactive_forms_generator/example/lib/docs/login_extended_nullable/login_extended_nullable.gform.dart index 7cdf5a8b..7b0246d2 100644 --- a/packages/reactive_forms_generator/example/lib/docs/login_extended_nullable/login_extended_nullable.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/login_extended_nullable/login_extended_nullable.gform.dart @@ -54,7 +54,7 @@ class ReactiveLoginExtendedNullableForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -63,7 +63,8 @@ class ReactiveLoginExtendedNullableForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static LoginExtendedNullableForm? of( BuildContext context, { @@ -90,7 +91,7 @@ class ReactiveLoginExtendedNullableForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -111,7 +112,7 @@ class LoginExtendedNullableFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -122,7 +123,8 @@ class LoginExtendedNullableFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function(BuildContext context, LoginExtendedNullableForm formModel, Widget? child) builder; @@ -210,7 +212,7 @@ class _LoginExtendedNullableFormBuilderState child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -1190,46 +1192,28 @@ class ReactiveLoginExtendedNullableFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl< - ReactiveLoginExtendedNullableFormArrayBuilderT>, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] as FormControl< - ReactiveLoginExtendedNullableFormArrayBuilderT>, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder< + ReactiveLoginExtendedNullableFormArrayBuilderT>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -1283,46 +1267,34 @@ class ReactiveLoginExtendedNullableFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl< - ReactiveLoginExtendedNullableFormArrayBuilderT>, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] as FormControl< - ReactiveLoginExtendedNullableFormArrayBuilderT>, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder< + ReactiveLoginExtendedNullableFormArrayBuilderT>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/login_extended_nullable/login_extended_nullable_output.gform.dart b/packages/reactive_forms_generator/example/lib/docs/login_extended_nullable/login_extended_nullable_output.gform.dart index 562d008a..1993f9cd 100644 --- a/packages/reactive_forms_generator/example/lib/docs/login_extended_nullable/login_extended_nullable_output.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/login_extended_nullable/login_extended_nullable_output.gform.dart @@ -54,7 +54,7 @@ class ReactiveLoginExtendedNullableOForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -63,7 +63,8 @@ class ReactiveLoginExtendedNullableOForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static LoginExtendedNullableOForm? of( BuildContext context, { @@ -90,7 +91,7 @@ class ReactiveLoginExtendedNullableOForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -111,7 +112,7 @@ class LoginExtendedNullableOFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -122,7 +123,8 @@ class LoginExtendedNullableOFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function(BuildContext context, LoginExtendedNullableOForm formModel, Widget? child) builder; @@ -210,7 +212,7 @@ class _LoginExtendedNullableOFormBuilderState child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -1211,46 +1213,28 @@ class ReactiveLoginExtendedNullableOFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl< - ReactiveLoginExtendedNullableOFormArrayBuilderT>, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] as FormControl< - ReactiveLoginExtendedNullableOFormArrayBuilderT>, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder< + ReactiveLoginExtendedNullableOFormArrayBuilderT>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -1304,46 +1288,34 @@ class ReactiveLoginExtendedNullableOFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl< - ReactiveLoginExtendedNullableOFormArrayBuilderT>, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] as FormControl< - ReactiveLoginExtendedNullableOFormArrayBuilderT>, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder< + ReactiveLoginExtendedNullableOFormArrayBuilderT>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/mailing_list/mailing_list.gform.dart b/packages/reactive_forms_generator/example/lib/docs/mailing_list/mailing_list.gform.dart index 15e86fe9..d50bdfbf 100644 --- a/packages/reactive_forms_generator/example/lib/docs/mailing_list/mailing_list.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/mailing_list/mailing_list.gform.dart @@ -53,7 +53,7 @@ class ReactiveMailingListForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveMailingListForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static MailingListForm? of( BuildContext context, { @@ -89,7 +90,7 @@ class ReactiveMailingListForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -109,7 +110,7 @@ class MailingListFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -120,7 +121,8 @@ class MailingListFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, MailingListForm formModel, Widget? child) builder; @@ -205,7 +207,7 @@ class _MailingListFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -519,45 +521,27 @@ class ReactiveMailingListFormArrayBuilder throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -610,45 +594,33 @@ class ReactiveMailingListFormArrayBuilder2 throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/mailing_list/mailing_list_output.gform.dart b/packages/reactive_forms_generator/example/lib/docs/mailing_list/mailing_list_output.gform.dart index b0792580..b04e6259 100644 --- a/packages/reactive_forms_generator/example/lib/docs/mailing_list/mailing_list_output.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/mailing_list/mailing_list_output.gform.dart @@ -53,7 +53,7 @@ class ReactiveMailingListOForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveMailingListOForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static MailingListOForm? of( BuildContext context, { @@ -89,7 +90,7 @@ class ReactiveMailingListOForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -110,7 +111,7 @@ class MailingListOFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -121,7 +122,8 @@ class MailingListOFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, MailingListOForm formModel, Widget? child) builder; @@ -207,7 +209,7 @@ class _MailingListOFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -533,45 +535,27 @@ class ReactiveMailingListOFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -625,45 +609,33 @@ class ReactiveMailingListOFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/model_extends/model_extends.gform.dart b/packages/reactive_forms_generator/example/lib/docs/model_extends/model_extends.gform.dart index 5a58a6ec..ce6afa8e 100644 --- a/packages/reactive_forms_generator/example/lib/docs/model_extends/model_extends.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/model_extends/model_extends.gform.dart @@ -53,7 +53,7 @@ class ReactiveModelExtendsForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveModelExtendsForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static ModelExtendsForm? of( BuildContext context, { @@ -89,7 +90,7 @@ class ReactiveModelExtendsForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -110,7 +111,7 @@ class ModelExtendsFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -121,7 +122,8 @@ class ModelExtendsFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, ModelExtendsForm formModel, Widget? child) builder; @@ -207,7 +209,7 @@ class _ModelExtendsFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -554,45 +556,27 @@ class ReactiveModelExtendsFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -646,45 +630,33 @@ class ReactiveModelExtendsFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/model_implements/model_implements.gform.dart b/packages/reactive_forms_generator/example/lib/docs/model_implements/model_implements.gform.dart index 9d4b5432..f513f544 100644 --- a/packages/reactive_forms_generator/example/lib/docs/model_implements/model_implements.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/model_implements/model_implements.gform.dart @@ -54,7 +54,7 @@ class ReactiveModelImplementsForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -63,7 +63,8 @@ class ReactiveModelImplementsForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static ModelImplementsForm? of( BuildContext context, { @@ -90,7 +91,7 @@ class ReactiveModelImplementsForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -111,7 +112,7 @@ class ModelImplementsFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -122,7 +123,8 @@ class ModelImplementsFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, ModelImplementsForm formModel, Widget? child) @@ -210,7 +212,7 @@ class _ModelImplementsFormBuilderState child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -558,45 +560,28 @@ class ReactiveModelImplementsFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder< + ReactiveModelImplementsFormArrayBuilderT>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -650,45 +635,34 @@ class ReactiveModelImplementsFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder< + ReactiveModelImplementsFormArrayBuilderT>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/nested/nested.gform.dart b/packages/reactive_forms_generator/example/lib/docs/nested/nested.gform.dart index 7064ffa8..7c90f223 100644 --- a/packages/reactive_forms_generator/example/lib/docs/nested/nested.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/nested/nested.gform.dart @@ -53,7 +53,7 @@ class ReactiveSubGroupForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveSubGroupForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static SubGroupForm? of( BuildContext context, { @@ -88,7 +89,7 @@ class ReactiveSubGroupForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -108,7 +109,7 @@ class SubGroupFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -119,7 +120,8 @@ class SubGroupFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, SubGroupForm formModel, Widget? child) builder; @@ -202,7 +204,7 @@ class _SubGroupFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -465,45 +467,27 @@ class ReactiveSubGroupFormArrayBuilder throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -556,45 +540,33 @@ class ReactiveSubGroupFormArrayBuilder2 throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -711,7 +683,7 @@ class ReactiveGroupForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -720,7 +692,8 @@ class ReactiveGroupForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static GroupForm? of( BuildContext context, { @@ -746,7 +719,7 @@ class ReactiveGroupForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -765,7 +738,7 @@ class GroupFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -776,7 +749,8 @@ class GroupFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, GroupForm formModel, Widget? child) builder; @@ -859,7 +833,7 @@ class _GroupFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -1317,45 +1291,27 @@ class ReactiveGroupFormArrayBuilder throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -1408,45 +1364,33 @@ class ReactiveGroupFormArrayBuilder2 throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -1563,7 +1507,7 @@ class ReactiveNestedForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -1572,7 +1516,8 @@ class ReactiveNestedForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static NestedForm? of( BuildContext context, { @@ -1598,7 +1543,7 @@ class ReactiveNestedForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -1617,7 +1562,7 @@ class NestedFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -1628,7 +1573,8 @@ class NestedFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, NestedForm formModel, Widget? child) builder; @@ -1711,7 +1657,7 @@ class _NestedFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -2083,45 +2029,27 @@ class ReactiveNestedFormArrayBuilder throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -2174,45 +2102,33 @@ class ReactiveNestedFormArrayBuilder2 throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/nested/nested_output.gform.dart b/packages/reactive_forms_generator/example/lib/docs/nested/nested_output.gform.dart index 33baa33c..8d3176f9 100644 --- a/packages/reactive_forms_generator/example/lib/docs/nested/nested_output.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/nested/nested_output.gform.dart @@ -53,7 +53,7 @@ class ReactiveSubGroupOForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveSubGroupOForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static SubGroupOForm? of( BuildContext context, { @@ -88,7 +89,7 @@ class ReactiveSubGroupOForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -108,7 +109,7 @@ class SubGroupOFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -119,7 +120,8 @@ class SubGroupOFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, SubGroupOForm formModel, Widget? child) builder; @@ -202,7 +204,7 @@ class _SubGroupOFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -429,7 +431,6 @@ class SubGroupOForm implements FormModel { abstract class SubGroupOOutput with _$SubGroupOOutput { const factory SubGroupOOutput({@RfControl() required String id}) = _SubGroupOOutput; - factory SubGroupOOutput.fromJson(Map json) => _$SubGroupOOutputFromJson(json); } @@ -442,7 +443,6 @@ abstract class GroupOOutput with _$GroupOOutput { {@RfControl() required String id, @RfArray() required List subGroupList}) = _GroupOOutput; - factory GroupOOutput.fromJson(Map json) => _$GroupOOutputFromJson(json); } @@ -454,7 +454,6 @@ abstract class NestedOOutput with _$NestedOOutput { const factory NestedOOutput( {@RfArray() required List groupList}) = _NestedOOutput; - factory NestedOOutput.fromJson(Map json) => _$NestedOOutputFromJson(json); } @@ -502,45 +501,27 @@ class ReactiveSubGroupOFormArrayBuilder throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -593,45 +574,33 @@ class ReactiveSubGroupOFormArrayBuilder2 throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -748,7 +717,7 @@ class ReactiveGroupOForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -757,7 +726,8 @@ class ReactiveGroupOForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static GroupOForm? of( BuildContext context, { @@ -783,7 +753,7 @@ class ReactiveGroupOForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -802,7 +772,7 @@ class GroupOFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -813,7 +783,8 @@ class GroupOFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, GroupOForm formModel, Widget? child) builder; @@ -896,7 +867,7 @@ class _GroupOFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -1355,45 +1326,27 @@ class ReactiveGroupOFormArrayBuilder throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -1446,45 +1399,33 @@ class ReactiveGroupOFormArrayBuilder2 throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -1601,7 +1542,7 @@ class ReactiveNestedOForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -1610,7 +1551,8 @@ class ReactiveNestedOForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static NestedOForm? of( BuildContext context, { @@ -1636,7 +1578,7 @@ class ReactiveNestedOForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -1655,7 +1597,7 @@ class NestedOFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -1666,7 +1608,8 @@ class NestedOFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, NestedOForm formModel, Widget? child) builder; @@ -1749,7 +1692,7 @@ class _NestedOFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -2122,45 +2065,27 @@ class ReactiveNestedOFormArrayBuilder throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -2213,45 +2138,33 @@ class ReactiveNestedOFormArrayBuilder2 throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics.freezed.dart b/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics.freezed.dart index c2ed046e..f47679e1 100644 --- a/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics.freezed.dart +++ b/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics.freezed.dart @@ -17,7 +17,6 @@ T _$identity(T value) => value; mixin _$ProductDetails

{ @RfControl() String? get description; - @Rf(output: false) Id? get id; @@ -53,7 +52,6 @@ abstract mixin class $ProductDetailsCopyWith

{ factory $ProductDetailsCopyWith(ProductDetails value, $Res Function(ProductDetails) _then) = _$ProductDetailsCopyWithImpl; - @useResult $Res call( {@RfControl() String? description, @Rf(output: false) Id? id}); @@ -152,7 +150,6 @@ abstract mixin class _$ProductDetailsCopyWith

value, $Res Function(_ProductDetails) _then) = __$ProductDetailsCopyWithImpl; - @override @useResult $Res call( @@ -209,7 +206,6 @@ class __$ProductDetailsCopyWithImpl

mixin _$Id

{ @RfControl() String? get companyName; - @RfControl() String? get name; @@ -243,7 +239,6 @@ mixin _$Id

{ abstract mixin class $IdCopyWith

{ factory $IdCopyWith(Id value, $Res Function(Id) _then) = _$IdCopyWithImpl; - @useResult $Res call({@RfControl() String? companyName, @RfControl() String? name}); } @@ -321,7 +316,6 @@ abstract mixin class _$IdCopyWith

implements $IdCopyWith { factory _$IdCopyWith(_Id value, $Res Function(_Id) _then) = __$IdCopyWithImpl; - @override @useResult $Res call({@RfControl() String? companyName, @RfControl() String? name}); @@ -359,7 +353,6 @@ class __$IdCopyWithImpl

/// @nodoc mixin _$Product { String? get companyName; - String? get name; /// Create a copy of Product @@ -392,7 +385,6 @@ mixin _$Product { abstract mixin class $ProductCopyWith<$Res> { factory $ProductCopyWith(Product value, $Res Function(Product) _then) = _$ProductCopyWithImpl; - @useResult $Res call({String? companyName, String? name}); } @@ -466,7 +458,6 @@ class _Product extends Product { abstract mixin class _$ProductCopyWith<$Res> implements $ProductCopyWith<$Res> { factory _$ProductCopyWith(_Product value, $Res Function(_Product) _then) = __$ProductCopyWithImpl; - @override @useResult $Res call({String? companyName, String? name}); @@ -503,7 +494,6 @@ class __$ProductCopyWithImpl<$Res> implements _$ProductCopyWith<$Res> { /// @nodoc mixin _$Cart { Product? get product; - String? get description; /// Create a copy of Cart @@ -536,7 +526,6 @@ mixin _$Cart { abstract mixin class $CartCopyWith<$Res> { factory $CartCopyWith(Cart value, $Res Function(Cart) _then) = _$CartCopyWithImpl; - @useResult $Res call({Product? product, String? description}); @@ -626,7 +615,6 @@ class _Cart extends Cart { abstract mixin class _$CartCopyWith<$Res> implements $CartCopyWith<$Res> { factory _$CartCopyWith(_Cart value, $Res Function(_Cart) _then) = __$CartCopyWithImpl; - @override @useResult $Res call({Product? product, String? description}); diff --git a/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics.gform.dart b/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics.gform.dart index 0066b993..f0ef17a5 100644 --- a/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics.gform.dart @@ -56,7 +56,7 @@ class ReactiveProductDetailsForm

required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -65,7 +65,8 @@ class ReactiveProductDetailsForm

final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static ProductDetailsForm? of

( BuildContext context, { @@ -92,7 +93,7 @@ class ReactiveProductDetailsForm

stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -116,7 +117,7 @@ class ProductDetailsFormBuilder

this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -127,7 +128,8 @@ class ProductDetailsFormBuilder

final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function(BuildContext context, ProductDetailsForm formModel, Widget? child) builder; @@ -214,7 +216,7 @@ class _ProductDetailsFormBuilderState

child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -971,45 +973,28 @@ class ReactiveProductDetailsFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder< + ReactiveProductDetailsFormArrayBuilderT>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -1065,45 +1050,34 @@ class ReactiveProductDetailsFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder< + ReactiveProductDetailsFormArrayBuilderT>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -1224,7 +1198,7 @@ class ReactiveIdForm

required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -1233,7 +1207,8 @@ class ReactiveIdForm

final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static IdForm? of

( BuildContext context, { @@ -1259,7 +1234,7 @@ class ReactiveIdForm

stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -1280,7 +1255,7 @@ class IdFormBuilder

extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -1291,7 +1266,8 @@ class IdFormBuilder

extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, IdForm formModel, Widget? child) builder; @@ -1375,7 +1351,7 @@ class _IdFormBuilderState

child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -1427,45 +1403,27 @@ class ReactiveIdFormArrayBuilder( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -1518,45 +1476,33 @@ class ReactiveIdFormArrayBuilder2( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics_output.freezed.dart b/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics_output.freezed.dart index f2848c31..78e7d2e1 100644 --- a/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics_output.freezed.dart +++ b/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics_output.freezed.dart @@ -17,7 +17,6 @@ T _$identity(T value) => value; mixin _$ProductDetailsO

{ @RfControl() String? get description; - @Rf(output: false) IdO? get id; @@ -54,7 +53,6 @@ abstract mixin class $ProductDetailsOCopyWith

value, $Res Function(ProductDetailsO) _then) = _$ProductDetailsOCopyWithImpl; - @useResult $Res call( {@RfControl() String? description, @Rf(output: false) IdO? id}); @@ -153,7 +151,6 @@ abstract mixin class _$ProductDetailsOCopyWith

value, $Res Function(_ProductDetailsO) _then) = __$ProductDetailsOCopyWithImpl; - @override @useResult $Res call( @@ -210,7 +207,6 @@ class __$ProductDetailsOCopyWithImpl

mixin _$IdO

{ @RfControl() String? get companyName; - @RfControl() String? get name; @@ -244,7 +240,6 @@ mixin _$IdO

{ abstract mixin class $IdOCopyWith

{ factory $IdOCopyWith(IdO value, $Res Function(IdO) _then) = _$IdOCopyWithImpl; - @useResult $Res call({@RfControl() String? companyName, @RfControl() String? name}); } @@ -322,7 +317,6 @@ abstract mixin class _$IdOCopyWith

implements $IdOCopyWith { factory _$IdOCopyWith(_IdO value, $Res Function(_IdO) _then) = __$IdOCopyWithImpl; - @override @useResult $Res call({@RfControl() String? companyName, @RfControl() String? name}); @@ -360,7 +354,6 @@ class __$IdOCopyWithImpl

/// @nodoc mixin _$Product { String? get companyName; - String? get name; /// Create a copy of Product @@ -393,7 +386,6 @@ mixin _$Product { abstract mixin class $ProductCopyWith<$Res> { factory $ProductCopyWith(Product value, $Res Function(Product) _then) = _$ProductCopyWithImpl; - @useResult $Res call({String? companyName, String? name}); } @@ -467,7 +459,6 @@ class _Product extends Product { abstract mixin class _$ProductCopyWith<$Res> implements $ProductCopyWith<$Res> { factory _$ProductCopyWith(_Product value, $Res Function(_Product) _then) = __$ProductCopyWithImpl; - @override @useResult $Res call({String? companyName, String? name}); @@ -504,7 +495,6 @@ class __$ProductCopyWithImpl<$Res> implements _$ProductCopyWith<$Res> { /// @nodoc mixin _$Cart { Product? get product; - String? get description; /// Create a copy of Cart @@ -537,7 +527,6 @@ mixin _$Cart { abstract mixin class $CartCopyWith<$Res> { factory $CartCopyWith(Cart value, $Res Function(Cart) _then) = _$CartCopyWithImpl; - @useResult $Res call({Product? product, String? description}); @@ -627,7 +616,6 @@ class _Cart extends Cart { abstract mixin class _$CartCopyWith<$Res> implements $CartCopyWith<$Res> { factory _$CartCopyWith(_Cart value, $Res Function(_Cart) _then) = __$CartCopyWithImpl; - @override @useResult $Res call({Product? product, String? description}); @@ -682,7 +670,6 @@ class __$CartCopyWithImpl<$Res> implements _$CartCopyWith<$Res> { mixin _$ProductDetailsOOutput

{ @RfControl() String? get description; - @Rf(output: false) IdOOutput? get id; @@ -720,7 +707,6 @@ abstract mixin class $ProductDetailsOOutputCopyWith

value, $Res Function(ProductDetailsOOutput) _then) = _$ProductDetailsOOutputCopyWithImpl; - @useResult $Res call( {@RfControl() String? description, @@ -823,7 +809,6 @@ abstract mixin class _$ProductDetailsOOutputCopyWith< factory _$ProductDetailsOOutputCopyWith(_ProductDetailsOOutput value, $Res Function(_ProductDetailsOOutput) _then) = __$ProductDetailsOOutputCopyWithImpl; - @override @useResult $Res call( @@ -881,7 +866,6 @@ class __$ProductDetailsOOutputCopyWithImpl

{ @RfControl() String? get companyName; - @RfControl() String? get name; @@ -918,7 +902,6 @@ abstract mixin class $IdOOutputCopyWith

value, $Res Function(IdOOutput) _then) = _$IdOOutputCopyWithImpl; - @useResult $Res call({@RfControl() String? companyName, @RfControl() String? name}); } @@ -998,7 +981,6 @@ abstract mixin class _$IdOOutputCopyWith

value, $Res Function(_IdOOutput) _then) = __$IdOOutputCopyWithImpl; - @override @useResult $Res call({@RfControl() String? companyName, @RfControl() String? name}); diff --git a/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics_output.gform.dart b/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics_output.gform.dart index 806fc718..f27447b2 100644 --- a/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics_output.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics_output.gform.dart @@ -56,7 +56,7 @@ class ReactiveProductDetailsOForm

required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -65,7 +65,8 @@ class ReactiveProductDetailsOForm

final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static ProductDetailsOForm? of

( BuildContext context, { @@ -92,7 +93,7 @@ class ReactiveProductDetailsOForm

stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -116,7 +117,7 @@ class ProductDetailsOFormBuilder

this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -127,7 +128,8 @@ class ProductDetailsOFormBuilder

final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function(BuildContext context, ProductDetailsOForm formModel, Widget? child) builder; @@ -214,7 +216,7 @@ class _ProductDetailsOFormBuilderState

child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -936,7 +938,6 @@ abstract class ProductDetailsOOutput

factory ProductDetailsOOutput( {@RfControl() String? description, @Rf(output: false) IdOOutput? id}) = _ProductDetailsOOutput; - ProductDetailsOOutput._(); } @@ -948,7 +949,6 @@ abstract class IdOOutput

factory IdOOutput( {@RfControl() String? companyName, @RfControl() String? name}) = _IdOOutput; - IdOOutput._(); } @@ -997,45 +997,28 @@ class ReactiveProductDetailsOFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder< + ReactiveProductDetailsOFormArrayBuilderT>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -1091,45 +1074,34 @@ class ReactiveProductDetailsOFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder< + ReactiveProductDetailsOFormArrayBuilderT>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -1250,7 +1222,7 @@ class ReactiveIdOForm

required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -1259,7 +1231,8 @@ class ReactiveIdOForm

final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static IdOForm? of

( BuildContext context, { @@ -1285,7 +1258,7 @@ class ReactiveIdOForm

stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -1306,7 +1279,7 @@ class IdOFormBuilder

extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -1317,7 +1290,8 @@ class IdOFormBuilder

extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, IdOForm formModel, Widget? child) builder; @@ -1401,7 +1375,7 @@ class _IdOFormBuilderState

child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -1453,45 +1427,27 @@ class ReactiveIdOFormArrayBuilder( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -1544,45 +1500,33 @@ class ReactiveIdOFormArrayBuilder2( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/profile/profile.gform.dart b/packages/reactive_forms_generator/example/lib/docs/profile/profile.gform.dart index 30e94f09..4703764b 100644 --- a/packages/reactive_forms_generator/example/lib/docs/profile/profile.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/profile/profile.gform.dart @@ -53,7 +53,7 @@ class ReactiveProfileForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveProfileForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static ProfileForm? of( BuildContext context, { @@ -88,7 +89,7 @@ class ReactiveProfileForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -107,7 +108,7 @@ class ProfileFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -118,7 +119,8 @@ class ProfileFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, ProfileForm formModel, Widget? child) builder; @@ -201,7 +203,7 @@ class _ProfileFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -2504,45 +2506,27 @@ class ReactiveProfileFormArrayBuilder throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -2595,45 +2579,33 @@ class ReactiveProfileFormArrayBuilder2 throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/profile/profile_output.gform.dart b/packages/reactive_forms_generator/example/lib/docs/profile/profile_output.gform.dart index 60a7866f..f543ce45 100644 --- a/packages/reactive_forms_generator/example/lib/docs/profile/profile_output.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/profile/profile_output.gform.dart @@ -53,7 +53,7 @@ class ReactiveProfileOForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveProfileOForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static ProfileOForm? of( BuildContext context, { @@ -88,7 +89,7 @@ class ReactiveProfileOForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -108,7 +109,7 @@ class ProfileOFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -119,7 +120,8 @@ class ProfileOFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, ProfileOForm formModel, Widget? child) builder; @@ -202,7 +204,7 @@ class _ProfileOFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -2473,7 +2475,6 @@ class TimerSettingOForm @Rf(output: true) abstract class ProfileOOutput with _$ProfileOOutput { const ProfileOOutput._(); - factory ProfileOOutput(String id, {required String anotherId, @RfControl() required String name, @@ -2486,7 +2487,6 @@ abstract class ProfileOOutput with _$ProfileOOutput { required ThresholdSettingOOutput threshold, required TimerSettingOOutput timer, @RfControl() required bool audioGuidance}) = _ProfileOOutput; - factory ProfileOOutput.fromJson(Map json) => _$ProfileOOutputFromJson(json); } @@ -2495,11 +2495,9 @@ abstract class ProfileOOutput with _$ProfileOOutput { @RfGroup() abstract class ThresholdSettingOOutput with _$ThresholdSettingOOutput { static const values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; - const factory ThresholdSettingOOutput( {@RfControl() @Default(true) bool isEnabled, @RfControl() @Default(2) int value}) = _ThresholdSettingOOutput; - factory ThresholdSettingOOutput.fromJson(Map json) => _$ThresholdSettingOOutputFromJson(json); } @@ -2508,11 +2506,9 @@ abstract class ThresholdSettingOOutput with _$ThresholdSettingOOutput { @RfGroup() abstract class TimerSettingOOutput with _$TimerSettingOOutput { static const values = [1, 2, 3, 4, 5, 6]; - const factory TimerSettingOOutput( {@RfControl() @Default(false) bool isEnabled, @RfControl() @Default(5) int value}) = _TimerSettingOOutput; - factory TimerSettingOOutput.fromJson(Map json) => _$TimerSettingOOutputFromJson(json); } @@ -2528,7 +2524,6 @@ abstract class IncidenceFilterOOutput with _$IncidenceFilterOOutput { @RfControl() @Default(true) bool isCalculusEnabled, @RfControl() @Default(true) bool isPlaqueEnabled}) = _IncidenceFilterOOutput; - factory IncidenceFilterOOutput.fromJson(Map json) => _$IncidenceFilterOOutputFromJson(json); } @@ -2576,45 +2571,27 @@ class ReactiveProfileOFormArrayBuilder throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -2667,45 +2644,33 @@ class ReactiveProfileOFormArrayBuilder2 throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/renamed_basic/renamed_basic.gform.dart b/packages/reactive_forms_generator/example/lib/docs/renamed_basic/renamed_basic.gform.dart index f0a3f818..28218e37 100644 --- a/packages/reactive_forms_generator/example/lib/docs/renamed_basic/renamed_basic.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/renamed_basic/renamed_basic.gform.dart @@ -53,7 +53,7 @@ class ReactiveSomeWiredNameForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveSomeWiredNameForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static SomeWiredNameForm? of( BuildContext context, { @@ -89,7 +90,7 @@ class ReactiveSomeWiredNameForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -110,7 +111,7 @@ class SomeWiredNameFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -121,7 +122,8 @@ class SomeWiredNameFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, SomeWiredNameForm formModel, Widget? child) builder; @@ -207,7 +209,7 @@ class _SomeWiredNameFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -554,45 +556,27 @@ class ReactiveSomeWiredNameFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -646,45 +630,33 @@ class ReactiveSomeWiredNameFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/renamed_basic/renamed_basic_output.gform.dart b/packages/reactive_forms_generator/example/lib/docs/renamed_basic/renamed_basic_output.gform.dart index 117abce6..cc566b86 100644 --- a/packages/reactive_forms_generator/example/lib/docs/renamed_basic/renamed_basic_output.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/renamed_basic/renamed_basic_output.gform.dart @@ -53,7 +53,7 @@ class ReactiveSomeWiredNameForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveSomeWiredNameForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static SomeWiredNameForm? of( BuildContext context, { @@ -89,7 +90,7 @@ class ReactiveSomeWiredNameForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -110,7 +111,7 @@ class SomeWiredNameFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -121,7 +122,8 @@ class SomeWiredNameFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, SomeWiredNameForm formModel, Widget? child) builder; @@ -207,7 +209,7 @@ class _SomeWiredNameFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -573,7 +575,6 @@ class SomeWiredNameForm class RenamedBasicOOutput { final String email; final String password; - RenamedBasicOOutput( {@RfControl(validators: [RequiredValidator()]) required this.email, @RfControl(validators: [RequiredValidator()]) required this.password}); @@ -622,45 +623,27 @@ class ReactiveSomeWiredNameFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -714,45 +697,33 @@ class ReactiveSomeWiredNameFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/user_profile/user_profile.gform.dart b/packages/reactive_forms_generator/example/lib/docs/user_profile/user_profile.gform.dart index 03231708..a87fccc0 100644 --- a/packages/reactive_forms_generator/example/lib/docs/user_profile/user_profile.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/user_profile/user_profile.gform.dart @@ -53,7 +53,7 @@ class ReactiveUserProfileForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveUserProfileForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static UserProfileForm? of( BuildContext context, { @@ -89,7 +90,7 @@ class ReactiveUserProfileForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -109,7 +110,7 @@ class UserProfileFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -120,7 +121,8 @@ class UserProfileFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, UserProfileForm formModel, Widget? child) builder; @@ -205,7 +207,7 @@ class _UserProfileFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -1293,45 +1295,27 @@ class ReactiveUserProfileFormArrayBuilder throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -1384,45 +1368,33 @@ class ReactiveUserProfileFormArrayBuilder2 throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/lib/docs/user_profile/user_profile_output.gform.dart b/packages/reactive_forms_generator/example/lib/docs/user_profile/user_profile_output.gform.dart index 86e55a5a..119ad222 100644 --- a/packages/reactive_forms_generator/example/lib/docs/user_profile/user_profile_output.gform.dart +++ b/packages/reactive_forms_generator/example/lib/docs/user_profile/user_profile_output.gform.dart @@ -53,7 +53,7 @@ class ReactiveUserProfileOForm extends StatelessWidget { required this.form, required this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, }) : super(key: key); final Widget child; @@ -62,7 +62,8 @@ class ReactiveUserProfileOForm extends StatelessWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; static UserProfileOForm? of( BuildContext context, { @@ -89,7 +90,7 @@ class ReactiveUserProfileOForm extends StatelessWidget { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); @@ -110,7 +111,7 @@ class UserProfileOFormBuilder extends StatefulWidget { this.model, this.child, this.canPop, - this.onPopInvoked, + this.onPopInvokedWithResult, required this.builder, this.initState, }) : super(key: key); @@ -121,7 +122,8 @@ class UserProfileOFormBuilder extends StatefulWidget { final bool Function(FormGroup formGroup)? canPop; - final void Function(FormGroup formGroup, bool didPop)? onPopInvoked; + final ReactiveFormPopInvokedWithResultCallback? + onPopInvokedWithResult; final Widget Function( BuildContext context, UserProfileOForm formModel, Widget? child) builder; @@ -207,7 +209,7 @@ class _UserProfileOFormBuilderState extends State { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, @@ -1381,45 +1383,27 @@ class ReactiveUserProfileOFormArrayBuilder< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder( - context, - item.$1, - formArray.controls[item.$1] - as FormControl, - item.$2.value, - formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( + context, + itemList, + formModel, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(context, i, control, item, formModel), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } @@ -1473,45 +1457,33 @@ class ReactiveUserProfileOFormArrayBuilder2< throw FormControlParentNotFoundException(this); } - return ReactiveFormArray( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e as FormControl, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.$1, - itemBuilder(( - context: context, - i: item.$1, - control: formArray.controls[item.$1] - as FormControl, - item: item.$2.value, - formModel: formModel - )), - ); - }) - .map((e) => e.value) - .toList(); - - if (emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + final builder = this.builder; + final itemBuilder = this.itemBuilder; + + return ReactiveFormArrayItemBuilder( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( + context: context, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); } } diff --git a/packages/reactive_forms_generator/example/pubspec.yaml b/packages/reactive_forms_generator/example/pubspec.yaml index d83454f9..e33b477d 100644 --- a/packages/reactive_forms_generator/example/pubspec.yaml +++ b/packages/reactive_forms_generator/example/pubspec.yaml @@ -13,14 +13,17 @@ dependencies: sdk: flutter reactive_forms_annotations: path: ../../reactive_forms_annotations - reactive_forms: ^17.0.1 + reactive_forms: ^18.0.0 intl: ">=0.19.0 <1.0.0" freezed_annotation: ^3.0.0 dartz: ^0.10.1 json_annotation: ^4.9.0 # reactive_text_field: ^1.0.0 equatable: ^2.0.7 - reactive_forms_lbc: ^4.0.0 + reactive_forms_lbc: ^4.0.4 + +dependency_overrides: + reactive_forms: ^18.0.0 dev_dependencies: reactive_forms_generator: diff --git a/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form.dart b/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form.dart index 757f82d9..a0f61c49 100644 --- a/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form.dart +++ b/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form.dart @@ -45,7 +45,7 @@ class ReactiveForm { ), Parameter( (b) => b - ..name = 'onPopInvoked' + ..name = 'onPopInvokedWithResult' ..toThis = true ..named = true, ), @@ -88,10 +88,10 @@ class ReactiveForm { ), Field( (b) => b - ..name = 'onPopInvoked' + ..name = 'onPopInvokedWithResult' ..modifier = FieldModifier.final$ ..type = const Reference( - 'void Function(FormGroup formGroup, bool didPop)?'), + 'ReactiveFormPopInvokedWithResultCallback?'), ), ]) ..methods.addAll( @@ -154,7 +154,7 @@ class ReactiveForm { stream: form.form.statusChanged, child: ReactiveFormPopScope( canPop: canPop, - onPopInvoked: onPopInvoked, + onPopInvokedWithResult: onPopInvokedWithResult, child: child, ), ); diff --git a/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form_array_builder.dart b/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form_array_builder.dart index ae97c93b..563642c3 100644 --- a/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form_array_builder.dart +++ b/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form_array_builder.dart @@ -91,46 +91,34 @@ class ReactiveFormArrayBuilder { if (formModel == null) { throw FormControlParentNotFoundException(this); } + + final builder = this.builder; + final itemBuilder = this.itemBuilder; - return ReactiveFormArray<$T>( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.\$2 as FormControl<$T>, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.\$1, - itemBuilder( + return ReactiveFormArrayItemBuilder<$T>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder( context, - item.\$1, - formArray.controls[item.\$1] - as FormControl<$T>, - item.\$2.value, + itemList, formModel, - ), - ); - }) - .map((e) => e.value) - .toList(); - - if(emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call( - context, - itemList, - formModel, - ) ?? - Column(children: itemList); - }, + ) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder( + context, + i, + control, + item, + formModel + ), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); '''), ); diff --git a/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form_array_builder2.dart b/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form_array_builder2.dart index a13ea04d..fb199a05 100644 --- a/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form_array_builder2.dart +++ b/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form_array_builder2.dart @@ -91,45 +91,34 @@ class ReactiveFormArrayBuilder2 { if (formModel == null) { throw FormControlParentNotFoundException(this); } + + final builder = this.builder; + final itemBuilder = this.itemBuilder; - return ReactiveFormArray<$T>( - formArray: formControl ?? control?.call(formModel), - builder: (context, formArray, child) { - final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.\$2 as FormControl<$T>, - ) ?? - true) - .toList(); - - final itemList = values - .map((item) { - return MapEntry( - item.\$1, - itemBuilder(( + return ReactiveFormArrayItemBuilder<$T>( + formControl: formControl ?? control?.call(formModel), + builder: builder != null + ? (context, itemList) => builder(( context: context, - i: item.\$1, - control: formArray.controls[item.\$1] as FormControl<$T>, - item: item.\$2.value, - formModel: formModel) - ), - ); - }) - .map((e) => e.value) - .toList(); - - if(emptyBuilder != null && itemList.isEmpty) { - return emptyBuilder!(context); - } - - return builder?.call(( - context: context, - itemList: itemList, - formModel: formModel, - )) ?? - Column(children: itemList); - }, + itemList: itemList, + formModel: formModel, + )) + : null, + itemBuilder: ( + context, + i, + control, + item, + ) => + itemBuilder(( + context: context, + i: i, + control: control, + item: item, + formModel: formModel + )), + emptyBuilder: emptyBuilder, + controlFilter: controlFilter, ); '''), ); diff --git a/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form_builder.dart b/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form_builder.dart index 76850533..981b6534 100644 --- a/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form_builder.dart +++ b/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form_builder.dart @@ -69,7 +69,7 @@ class ReactiveFormBuilder { ), Parameter( (b) => b - ..name = 'onPopInvoked' + ..name = 'onPopInvokedWithResult' ..named = true ..toThis = true, ), @@ -115,10 +115,10 @@ class ReactiveFormBuilder { ), Field( (b) => b - ..name = 'onPopInvoked' + ..name = 'onPopInvokedWithResult' + ..modifier = FieldModifier.final$ ..type = const Reference( - 'void Function(FormGroup formGroup, bool didPop)?') - ..modifier = FieldModifier.final$, + 'ReactiveFormPopInvokedWithResultCallback?'), ), Field( (b) => b @@ -248,7 +248,7 @@ class ReactiveFormBuilder { child: ReactiveFormBuilder( form: () => _formModel.form, canPop: widget.canPop, - onPopInvoked: widget.onPopInvoked, + onPopInvokedWithResult: widget.onPopInvokedWithResult, builder: (context, formGroup, child) => widget.builder(context, _formModel, widget.child), child: widget.child, ), diff --git a/packages/reactive_forms_generator/pubspec.yaml b/packages/reactive_forms_generator/pubspec.yaml index 3503bdc4..d5fa3228 100644 --- a/packages/reactive_forms_generator/pubspec.yaml +++ b/packages/reactive_forms_generator/pubspec.yaml @@ -2,7 +2,7 @@ name: reactive_forms_generator description: Generator for reactive_forms. Generates form classes based on model. repository: https://github.com/artflutter/reactive_forms_generator -version: 7.0.0-beta4 +version: 8.0.1 environment: sdk: ">=3.6.0 <4.0.0" diff --git a/pubspec.lock b/pubspec.lock index 625487a2..8a0fb8b0 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -37,18 +37,18 @@ packages: dependency: transitive description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.13.0" boolean_selector: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" build: dependency: transitive description: @@ -125,10 +125,10 @@ packages: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" charcode: dependency: transitive description: @@ -165,10 +165,10 @@ packages: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" code_builder: dependency: transitive description: @@ -181,10 +181,10 @@ packages: dependency: transitive description: name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.19.0" + version: "1.19.1" conventional_commit: dependency: transitive description: @@ -253,10 +253,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.3" file: dependency: transitive description: @@ -372,10 +372,10 @@ packages: dependency: transitive description: name: intl - sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf + sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" url: "https://pub.dev" source: hosted - version: "0.19.0" + version: "0.20.2" io: dependency: transitive description: @@ -412,18 +412,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" + sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" url: "https://pub.dev" source: hosted - version: "10.0.7" + version: "10.0.9" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 url: "https://pub.dev" source: hosted - version: "3.0.8" + version: "3.0.9" leak_tracker_testing: dependency: transitive description: @@ -452,10 +452,10 @@ packages: dependency: transitive description: name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.16+1" + version: "0.12.17" material_color_utilities: dependency: transitive description: @@ -476,10 +476,10 @@ packages: dependency: transitive description: name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.16.0" mime: dependency: transitive description: @@ -524,10 +524,10 @@ packages: dependency: transitive description: name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" platform: dependency: transitive description: @@ -585,21 +585,21 @@ packages: source: hosted version: "1.5.0" reactive_forms: - dependency: transitive + dependency: "direct overridden" description: name: reactive_forms - sha256: "9b1fb18e0aae9c50cfa0aaabaaa38bc4d78eefc9b7b95fa9c947b051f6524b8e" + sha256: "8394f3bbea59a49820174893739152bbce292e130fc1f3f1fb2a5f83f7e7c43e" url: "https://pub.dev" source: hosted - version: "17.0.1" + version: "18.0.0" reactive_forms_lbc: dependency: transitive description: name: reactive_forms_lbc - sha256: "62e714eef3e257b1f51111f7b1f92d5a2ecb96ecc531efd95e4c24e4b9a6b6c5" + sha256: "51576520d6034d0676a68f60527290450ab240c3be3c4534581aabfafbae7f90" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "4.0.4" recase: dependency: transitive description: @@ -681,26 +681,26 @@ packages: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.10.1" stack_trace: dependency: transitive description: name: stack_trace - sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.12.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" stream_transform: dependency: transitive description: @@ -713,18 +713,18 @@ packages: dependency: transitive description: name: string_scanner - sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.1" term_glyph: dependency: transitive description: name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" test: dependency: transitive description: @@ -777,10 +777,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b + sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 url: "https://pub.dev" source: hosted - version: "14.3.0" + version: "15.0.0" watcher: dependency: transitive description: @@ -838,5 +838,5 @@ packages: source: hosted version: "2.2.2" sdks: - dart: ">=3.6.0 <4.0.0" + dart: ">=3.7.0-0 <4.0.0" flutter: ">=3.18.0-18.0.pre.54"