AnimatedFutureListBuilder<T> constructor

AnimatedFutureListBuilder<T>({
  1. required Future<List<T>> future,
  2. required DataBuilder<List<T>?> builder,
  3. ErrorBuilder? error,
  4. WidgetBuilder? loading,
  5. WidgetBuilder? empty,
  6. WidgetBuilder? nullBuilder,
  7. List<T>? initialData,
  8. Duration duration = const Duration(milliseconds: 300),
  9. Duration? reverseDuration,
  10. Curve switchInCurve = Curves.linear,
  11. Curve switchOutCurve = Curves.linear,
  12. AnimatedSwitcherTransitionBuilder transitionBuilder = AnimatedSwitcher.defaultTransitionBuilder,
  13. AnimatedSwitcherLayoutBuilder layoutBuilder = AnimatedSwitcher.defaultLayoutBuilder,
})

Implementation

AnimatedFutureListBuilder({
  required Future<List<T>> future,
  required DataBuilder<List<T>?> builder,
  ErrorBuilder? error,
  WidgetBuilder? loading,
  WidgetBuilder? empty,
  WidgetBuilder? nullBuilder,
  List<T>? initialData,
  Duration duration = const Duration(milliseconds: 300),
  Duration? reverseDuration,
  Curve switchInCurve = Curves.linear,
  Curve switchOutCurve = Curves.linear,
  AnimatedSwitcherTransitionBuilder transitionBuilder =
      AnimatedSwitcher.defaultTransitionBuilder,
  AnimatedSwitcherLayoutBuilder layoutBuilder =
      AnimatedSwitcher.defaultLayoutBuilder,
}) : super(
        initialData: initialData,
        future: future,
        builder: (context, snapshot) {
          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 AnimatedSwitcher(
            duration: duration,
            child: widget,
            reverseDuration: reverseDuration,
            switchInCurve: switchInCurve,
            switchOutCurve: switchOutCurve,
            transitionBuilder: transitionBuilder,
            layoutBuilder: layoutBuilder,
          );
        },
      );