SimpleFutureBuilder<T> constructor

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

Implementation

SimpleFutureBuilder({
  Key? key,
  required Future<T> future,
  required DataBuilder<T?> builder,
  WidgetBuilder? nullBuilder,
  WidgetBuilder? loading,
  ErrorBuilder? error,
  T? initialData,
}) : super(
        key: key,
        initialData: initialData,
        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) {
                  widget = builder(context, snapshot.data);
                } else {
                  if (nullBuilder != null) {
                    widget = nullBuilder(context);
                  } else {
                    widget = builder(context, snapshot.data);
                  }
                }
              }
              break;
          }
          return widget;
        },
      );