SimpleFutureListBuilder<T> constructor

SimpleFutureListBuilder<T>({
  1. required Future<List<T>> future,
  2. required DataBuilder<List<T>?> builder,
  3. WidgetBuilder? nullBuilder,
  4. List<T>? initialData,
  5. ErrorBuilder? error,
  6. WidgetBuilder? loading,
  7. WidgetBuilder? empty,
})

Implementation

SimpleFutureListBuilder({
  required Future<List<T>> future,
  required DataBuilder<List<T>?> builder,
  WidgetBuilder? nullBuilder,
  List<T>? initialData,
  ErrorBuilder? error,
  WidgetBuilder? loading,
  WidgetBuilder? empty,
}) : super(
        future: future,
        builder: (context, snapshot) {
          late Widget widget;
          switch (snapshot.connectionState) {
            case ConnectionState.none:
            case ConnectionState.waiting:
              if (loading != null) {
                widget = loading(context);
              } else {
                widget = Container();
              }
              break;
            case ConnectionState.active:
            case ConnectionState.done:
              if (snapshot.hasError) {
                if (error != null) {
                  widget = error(context, snapshot.error);
                } else {
                  widget = Text('${snapshot.error}');
                }
              } else {
                if (snapshot.hasData) {
                  if (snapshot.data!.isEmpty) {
                    if (empty != null) {
                      widget = empty(context);
                    } else {
                      widget = builder(context, snapshot.data);
                    }
                  } else {
                    widget = builder(context, snapshot.data);
                  }
                } else {
                  if (nullBuilder != null) {
                    widget = nullBuilder(context);
                  } else {
                    widget = builder(context, snapshot.data);
                  }
                }
              }
              break;
          }
          return widget;
        },
      );