Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @immutable
- class StreamWidget<T> extends StatelessWidget {
- final Stream<T> stream;
- final DataBuilder<T> builder;
- final LoadingBuilder loadingBuilder;
- final ErrorBuilder errorBuilder;
- StreamWidget(
- {@required this.stream,
- @required this.builder,
- this.loadingBuilder,
- this.errorBuilder});
- @override
- Widget build(BuildContext context) =>
- StreamBuilder<T>(builder: (context, snapshot) {
- if (snapshot.hasError) {
- return errorBuilder != null
- ? errorBuilder(context, snapshot.error)
- : Container();
- }
- if (!snapshot.hasData) {
- return loadingBuilder != null ? loadingBuilder(context) : Container();
- }
- builder(context, snapshot.data);
- });
- }
- class MyFancyWidget extends StatefulWidget {
- @override
- _MyFancyWidgetState createState() => _MyFancyWidgetState();
- }
- class _MyFancyWidgetState extends State<MyFancyWidget> {
- @override
- Widget build(BuildContext context) {
- return StreamWidget<String>(
- stream: Observable.just("Hello!").delay(Duration(seconds: 2)),
- loadingBuilder: (context) => CircularProgressIndicator(),
- builder: (context, message) => Text(message));
- }
- }
Add Comment
Please, Sign In to add comment