select<T> static method

ArcaneField select<T>({
  1. String? name,
  2. String? description,
  3. IconData? icon,
  4. ArcaneEnumFieldType? mode,
  5. Widget itemBuilder(
    1. BuildContext,
    2. T
    )?,
  6. Widget cardBuilder(
    1. BuildContext,
    2. T,
    3. T
    )?,
  7. required T defaultValue,
  8. required List<T> options,
  9. required Future<T> getter(),
  10. required Future setter(
    1. T
    ),
})

Creates an enum selection field for choosing from a list of values. Supports various modes like dropdown or cards, with customizable builders for items and cards. This field is a core part of Arcane's form input system, allowing typed selection within Form widgets, often wrapped by FieldWrapper for enhanced UX.

Parameters:

  • name: Optional name.
  • description: Optional description.
  • icon: Optional icon.
  • mode: Selection mode (e.g., dropdown, cards).
  • itemBuilder: Builder for individual enum items.
  • cardBuilder: Builder for card-based selection previews.
  • defaultValue: Required initial enum value.
  • options: Required list of available enum options.
  • getter: Async enum getter.
  • setter: Async enum setter.

Returns: An ArcaneField<T> using ArcaneEnumField builder.

Implementation

static ArcaneField select<T>(
        {String? name,
        String? description,
        IconData? icon,
        ArcaneEnumFieldType? mode,
        Widget Function(BuildContext, T)? itemBuilder,
        Widget Function(BuildContext, T, T)? cardBuilder,
        required T defaultValue,
        required List<T> options,
        required Future<T> Function() getter,
        required Future Function(T) setter}) =>
    ArcaneField<T>(
        meta: ArcaneFieldMetadata(
          name: name,
          description: description,
          icon: icon,
        ),
        provider: ArcaneFieldDirectProvider(
            defaultValue: defaultValue,
            getter: (_) => getter(),
            setter: (_, v) => setter(v)),
        builder: (context) => ArcaneEnumField<T>(
              options: options,
              mode: mode,
              itemBuilder: itemBuilder,
              cardBuilder: cardBuilder,
            ));