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 data)?, 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 data)?
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.
paddingOnly({double left = 0.0, double top = 0.0, double right = 0.0, double bottom = 0.0}) → Padding

Available on StatefulWidget, provided by the NyStatefulExt extension

Add padding to the widget.
paddingSymmetric({double horizontal = 0.0, double vertical = 0.0}) → Padding

Available on StatefulWidget, provided by the NyStatefulExt extension

Add symmetric padding to the widget.
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
visibleWhen(bool condition) → Widget

Available on StatefulWidget, provided by the NyStatefulExt extension

Make a widget visible when a condition is true.

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}) → Future<void>
Submit the form