AnimatedFutureBuilder<T> constructor

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

Implementation

AnimatedFutureBuilder({
  required Future<T> future,
  required DataBuilder<T?> builder,
  WidgetBuilder? nullBuilder,
  ErrorBuilder? error,
  WidgetBuilder? loading,
  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) {
                  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,
          );
        },
      );