SimpleStreamBuilder<T> constructor

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

Implementation

SimpleStreamBuilder({
  Key? key,
  required Stream<T> stream,
  required DataBuilder<T?> builder,
  WidgetBuilder? nullBuilder,
  WidgetBuilder? loading,
  ErrorBuilder? error,
  T? initialData,
}) : super(
        key: key,
        initialData: initialData,
        stream: stream,
        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:
              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;
            case ConnectionState.done:
              if (error != null) {
                widget = error(context, 'ConnectionState.done');
              } else {
                widget = Text('ConnectionState.done');
              }
              break;
          }
          return widget;
        },
      );