AnimatedStreamBuilder<T> constructor
AnimatedStreamBuilder<T> ({
- required Stream<
T> stream, - 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,
Implementation
AnimatedStreamBuilder({
required Stream<T> stream,
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,
stream: stream,
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:
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 AnimatedSwitcher(
duration: duration,
child: widget,
reverseDuration: reverseDuration,
switchInCurve: switchInCurve,
switchOutCurve: switchOutCurve,
transitionBuilder: transitionBuilder,
layoutBuilder: layoutBuilder,
);
},
);