NyFormWidget class abstract

NyFormWidget is an abstract StatefulWidget for building forms declaratively.

Extend this class and override fields to define your form structure. The form class IS the widget — no separate NyFormData subclass or wrapper needed.

Example:

class ProfileForm extends NyFormWidget {
  ProfileForm({super.key, super.submitButton, super.onSubmit, super.onFailure});

  @override
  List<dynamic> fields() => [
    Field.text("username"),
    Field.text("bio"),
  ];

  static NyFormActions get actions => const NyFormActions('ProfileForm');
}

// Usage:
ProfileForm(
  submitButton: Button.primary(text: "Submit"),
  onSubmit: (data) { ... },
)

// Actions:
ProfileForm.actions.updateField('username', 'JohnDoe');
ProfileForm.actions.submit(onSuccess: (data) => print(data));

Learn more: https://nylo.dev/docs/7.x/forms

Inheritance
Available extensions

Constructors

NyFormWidget({Key? key, double crossAxisSpacing = 10, double mainAxisSpacing = 10, Map<String, dynamic>? initialData, dynamic onChanged(Field field, dynamic value)?, Widget? header, Widget? submitButton, Widget? footer, double headerSpacing = 10, double submitButtonSpacing = 10, double footerSpacing = 10, LoadingStyle? loadingStyle, bool locked = false, dynamic onSubmit(dynamic data)?, dynamic onFailure(dynamic error)?, String? name})

Properties

crossAxisSpacing double
The cross axis spacing for form fields
final
The footer widget
final
footerSpacing double
The footer spacing
final
formName String
Form name — defaults to runtimeType.toString()
no setter
hashCode int
The hash code for this object.
no setterinherited
The header widget
final
headerSpacing double
The header spacing
final
init → dynamic Function()?
Override for async initial data loading
no setter
initialData Map<String, dynamic>?
Initial data to populate form fields
final
key Key?
Controls how one widget replaces another widget in the tree.
finalinherited
loadingStyle LoadingStyle?
The loading style
final
locked bool
Lock the form to prevent interaction
final
mainAxisSpacing double
The main axis spacing for form fields
final
onChanged → dynamic Function(Field field, dynamic value)?
Callback invoked when any field value changes
final
onFailure → dynamic Function(dynamic error)?
Callback invoked with validation errors when validation fails.
final
onSubmit → dynamic Function(dynamic data)?
Callback invoked with the form data when validation passes.
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
submitButton Widget?
The submit button widget
final
submitButtonSpacing double
The submit button spacing
final

Methods

connectiveOr({required Widget offline}) Widget

Available on Widget, provided by the ConnectiveExtension extension

Wraps the widget in a Connective that shows an offline placeholder.
createElement() StatefulElement
Creates a StatefulElement to manage this widget's location in the tree.
inherited
createState() State<StatefulWidget>
Creates the mutable state for this widget at a given location in the tree.
override
debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
inherited
faderBottom({double strength = 0.2, Color color = Colors.black}) FadeOverlay

Available on StatefulWidget, provided by the NyStatefulExt extension

Make gradient fader from the bottom of the widget. strength ranges from 0.0 (subtle) to 1.0 (strong).
faderFrom({double strength = 0.2, Color color = Colors.black, AlignmentGeometry begin = Alignment.topCenter, AlignmentGeometry end = Alignment.bottomCenter}) FadeOverlay

Available on StatefulWidget, provided by the NyStatefulExt extension

Make gradient fader with custom alignment. strength ranges from 0.0 (subtle) to 1.0 (strong).
faderLeft({double strength = 0.2, Color color = Colors.black}) FadeOverlay

Available on StatefulWidget, provided by the NyStatefulExt extension

Make gradient fader from the left of the widget. strength ranges from 0.0 (subtle) to 1.0 (strong).
faderRight({double strength = 0.2, Color color = Colors.black}) FadeOverlay

Available on StatefulWidget, provided by the NyStatefulExt extension

Make gradient fader from the right of the widget. strength ranges from 0.0 (subtle) to 1.0 (strong).
faderTop({double strength = 0.2, Color color = Colors.black}) FadeOverlay

Available on StatefulWidget, provided by the NyStatefulExt extension

Make gradient fader from the top of the widget. strength ranges from 0.0 (subtle) to 1.0 (strong).
fields() List
Override to define form fields
flexible({Key? key, int flex = 1, FlexFit fit = FlexFit.loose}) Flexible

Available on StatefulWidget, provided by the NyStatefulExt extension

Make a StatefulWidget Flexible.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
onChange(String field, Map<String, dynamic> data) → void
Override for custom field change handling
onlyOffline() Widget

Available on Widget, provided by the ConnectiveExtension extension

Only shows the widget when offline, otherwise shows nothing.
onlyOnline() Widget

Available on Widget, provided by the ConnectiveExtension extension

Only shows the widget when online, otherwise shows nothing.
pullable({required Future<void> onRefresh()?, PullableConfig? pullableConfig}) Widget

Available on Widget, provided by the NyWidgetExt extension

Make a widget pullable using the Pullable widget.
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toSkeleton({Key? key, bool? ignoreContainers, bool? justifyMultiLineText, Color? containersColor, bool ignorePointers = true, bool enabled = true, PaintingEffect? effect, TextBoneBorderRadius? textBoneBorderRadius}) → Skeletonizer

Available on Widget, provided by the NyWidgetExt extension

Make a widget a skeleton using the Skeletonizer package.
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) String
Returns a one-line detailed description of the object.
inherited
toStringShort() String
A short, textual description of this widget.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Methods

state(String stateName) String
Get the state name
stateClearData(String stateName) → void
Clear all data in the form
stateRefresh(String stateName) → void
Refresh the state of the form
stateRefreshForm(String stateName) → void
Refresh the form fields
stateSetOptions(String stateName, String key, dynamic value) → void
Set field options in the form
stateSetValue(String stateName, String key, dynamic value) → void
Set field in the form
submit(String name, {required dynamic onSuccess(dynamic value), dynamic onFailure(List<FormValidationError>)?, bool showToastError = true}) → void
Submit the form