This commit is contained in:
2025-04-08 15:28:18 +02:00
parent a287f4cf85
commit 91feadff64
2 changed files with 154 additions and 155 deletions

View File

@@ -362,7 +362,6 @@ void _validateSubGroups(FormGroupStructure groupStructure) {
}); });
} }
// void initializeFormGroup(FormGroupStructure groupStructure, {int initialCount = 1}) { // void initializeFormGroup(FormGroupStructure groupStructure, {int initialCount = 1}) {
// assert(groupStructure.fields.isNotEmpty, '$groupStructure: Group Fields should NOT be empty.'); // assert(groupStructure.fields.isNotEmpty, '$groupStructure: Group Fields should NOT be empty.');
// if (groupStructure.subGroups != null && groupStructure.subGroups!.isNotEmpty) { // if (groupStructure.subGroups != null && groupStructure.subGroups!.isNotEmpty) {

View File

@@ -1,132 +1,132 @@
//s1 Imports // //s1 Imports
//s2 Packages // //s2 Packages
//s3 Core Packages // //s3 Core Packages
import 'package:flutter/material.dart'; // import 'package:flutter/material.dart';
import '../../../astromic_helpers.dart'; // import '../../../astromic_helpers.dart';
//s3 Internal Packages // //s3 Internal Packages
// import 'package:astromic_elements/astromic_elements.dart'; // // import 'package:astromic_elements/astromic_elements.dart';
//s3 3rd-party Packages // //s3 3rd-party Packages
//s2 Utility // //s2 Utility
//s3 Configs // //s3 Configs
// import '../../../../../core/configs/routing/routing.config.dart'; // // import '../../../../../core/configs/routing/routing.config.dart';
//s3 Misc // //s3 Misc
//s2 Domain // //s2 Domain
//s3 Entities // //s3 Entities
//s3 Usecases // //s3 Usecases
//s2 Presentation // //s2 Presentation
//s3 Design // //s3 Design
// import '../../../../design-system/design_system.dart'; // // import '../../../../design-system/design_system.dart';
//s3 Presenters // //s3 Presenters
//s3 Widgets // //s3 Widgets
//s1 Exports // //s1 Exports
class FormGroupWrapper extends StatefulWidget { // class FormGroupWrapper extends StatefulWidget {
//SECTION - Widget Arguments // //SECTION - Widget Arguments
final AstromicFormController formController; // final AstromicFormController formController;
final String groupID; // final String groupID;
final Widget Function(List<Widget> children, String Function() addItem, void Function(int) removeItem) groupBuilder; // final Widget Function(List<Widget> children, String Function() addItem, void Function(int) removeItem) groupBuilder;
final Widget Function(int index, String composedID, VoidCallback removeItem) itemBuilder; // final Widget Function(int index, String composedID, VoidCallback removeItem) itemBuilder;
final int startLength; // final int startLength;
final bool isSubGroup; // final bool isSubGroup;
//!SECTION // //!SECTION
// // //
const FormGroupWrapper({ // const FormGroupWrapper({
super.key, // super.key,
required this.formController, // required this.formController,
required this.groupID, // required this.groupID,
required this.groupBuilder, // required this.groupBuilder,
required this.itemBuilder, // required this.itemBuilder,
this.isSubGroup = false, // this.isSubGroup = false,
this.startLength = 0, // this.startLength = 0,
}); // });
@override // @override
State<FormGroupWrapper> createState() => _FormGroupWrapperState(); // State<FormGroupWrapper> createState() => _FormGroupWrapperState();
} // }
class _FormGroupWrapperState extends State<FormGroupWrapper> { // class _FormGroupWrapperState extends State<FormGroupWrapper> {
// // //
//SECTION - State Variables // //SECTION - State Variables
//s1 --State // //s1 --State
late List<FormGroupInstance> instances; // late List<FormGroupInstance> instances;
//s1 --State // //s1 --State
// // //
//s1 --Controllers // //s1 --Controllers
//s1 --Controllers // //s1 --Controllers
// // //
//s1 --Constants // //s1 --Constants
//s1 --Constants // //s1 --Constants
//!SECTION // //!SECTION
@override // @override
void initState() { // void initState() {
super.initState(); // super.initState();
// // //
//SECTION - State Variables initializations & Listeners // //SECTION - State Variables initializations & Listeners
//s1 --State // //s1 --State
//s1 --State // //s1 --State
// // //
//s1 --Controllers & Listeners // //s1 --Controllers & Listeners
instances = widget.formController.getFormGroupValue(widget.groupID, isSubGroup: widget.isSubGroup)!.instances;
//s1 --Controllers & Listeners
//
//s1 --Late & Async Initializers
//s1 --Late & Async Initializers
//!SECTION
}
//SECTION - Dumb Widgets
//!SECTION
//SECTION - Stateless functions
//!SECTION
//SECTION - Action Callbacks
//!SECTION
@override
Widget build(BuildContext context) {
//SECTION - Build Setup
//s1 --Values
//double w = MediaQuery.of(context).size.width;
//double h = MediaQuery.of(context).size.height;
//s1 --Values
//
//s1 --Contexted Widgets
//s1 --Contexted Widgets
//!SECTION
//SECTION - Build Return
return widget.groupBuilder(
// Children
List<Widget>.generate(instances.length, (int i) => widget.itemBuilder(i, instances[i].composedID, () => _removeItem(i))),
// Add Callback
() {
String id = '';
setState(() {
// id = widget.formController.addInstanceToFormGroup(widget.groupID,isSubGroup: widget.isSubGroup);
// instances = widget.formController.getFormGroupValue(widget.groupID, isSubGroup: widget.isSubGroup)!.instances; // instances = widget.formController.getFormGroupValue(widget.groupID, isSubGroup: widget.isSubGroup)!.instances;
}); // //s1 --Controllers & Listeners
return id; // //
}, // //s1 --Late & Async Initializers
// Remove Callback // //s1 --Late & Async Initializers
(int i) => _removeItem(i), // //!SECTION
); // }
//!SECTION
}
void _removeItem(int i) { // //SECTION - Dumb Widgets
setState(() { // //!SECTION
// widget.formController.removeInstanceFromFormGroup(widget.groupID, i,isSubGroup: widget.isSubGroup);
// instances = widget.formController.getFormGroupValue(widget.groupID,isSubGroup: widget.isSubGroup)!.instances;
});
}
@override // //SECTION - Stateless functions
void dispose() { // //!SECTION
//SECTION - Disposable variables
//!SECTION // //SECTION - Action Callbacks
super.dispose(); // //!SECTION
}
} // @override
// Widget build(BuildContext context) {
// //SECTION - Build Setup
// //s1 --Values
// //double w = MediaQuery.of(context).size.width;
// //double h = MediaQuery.of(context).size.height;
// //s1 --Values
// //
// //s1 --Contexted Widgets
// //s1 --Contexted Widgets
// //!SECTION
// //SECTION - Build Return
// return widget.groupBuilder(
// // Children
// List<Widget>.generate(instances.length, (int i) => widget.itemBuilder(i, instances[i].composedID, () => _removeItem(i))),
// // Add Callback
// () {
// String id = '';
// setState(() {
// // id = widget.formController.addInstanceToFormGroup(widget.groupID,isSubGroup: widget.isSubGroup);
// // instances = widget.formController.getFormGroupValue(widget.groupID,isSubGroup: widget.isSubGroup)!.instances;
// });
// return id;
// },
// // Remove Callback
// (int i) => _removeItem(i),
// );
// //!SECTION
// }
// void _removeItem(int i) {
// setState(() {
// // widget.formController.removeInstanceFromFormGroup(widget.groupID, i,isSubGroup: widget.isSubGroup);
// // instances = widget.formController.getFormGroupValue(widget.groupID,isSubGroup: widget.isSubGroup)!.instances;
// });
// }
// @override
// void dispose() {
// //SECTION - Disposable variables
// //!SECTION
// super.dispose();
// }
// }