ListBuilder<T> constructor

ListBuilder<T>({
  1. Key? key,
  2. required FieldControl<List<T>> control,
  3. required ControlWidgetBuilder<List<T>> builder,
  4. WidgetBuilder? noData,
  5. bool nullOk = false,
})

Stream based Widget builder. Listening FieldControlStream.stream about changes. control - required Stream controller. FieldControl or FieldControlSub. builder - required Widget builder. Only non empty List is passed directly to handle. noData - Widget to show, when List is empty. nullOk - Determine where to handle empty List. 'true' - empty List will be passed to builder.

Implementation

ListBuilder({
  super.key,
  required FieldControl<List<T>> control,
  required ControlWidgetBuilder<List<T>> builder,
  WidgetBuilder? noData,
  bool nullOk = false,
}) : super(
        control: control,
        builder: (context, snapshot) {
          if ((snapshot.hasData && snapshot.data!.length > 0) || nullOk) {
            return builder(context, snapshot.data ?? const []);
          }

          if (noData != null) {
            return noData(context);
          }

          return Container();
        },
      );