sliver_stream_builder 0.2.1 copy "sliver_stream_builder: ^0.2.1" to clipboard
sliver_stream_builder: ^0.2.1 copied to clipboard

outdated

Package to transform data stream to sliver list or sliver grid

sliver_stream_builder #

Package to transform data stream to sliver list or sliver grid, with helper to create stream from next function

Usage #

Simple usage example #

CustomScrollView(
  slivers: [
    SliverStreamBuilder<NewsModel>(
      stream: NewsNetwork.getNews(),
      builder: (ctx, item) => NewsItem(news: item),
    )
  ],
);

With custom sliver builder #

CustomScrollView(
  slivers: [
    SliverStreamBuilder<String>(
      stream: ImageNetwork.getImages(),
      sliverBuilder: (context, delegate) => SliverGrid(
        delegate: delegate,
        gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(
          maxCrossAxisExtent: 150,
        ),
      ),
      itemBuilder: (ctx, url) => CachedNetworkImage(imageUrl: url),
    ),
  ],
);

With empty builder #

CustomScrollView(
  slivers: [
    SliverStreamBuilder<NewsModel>(
      stream: NewsNetwork.getNews(),
      builder: (ctx, item) => NewsItem(news: item),
      // display when stream done, and not emit any elements
      emptyBuilder: (_) => Center(child: Text('Nothing new here :(')),
    )
  ],
);

Create stream from next function #

dataStreamWrapper function that manage stream controller and transform next function to stream. Implements pause, resume logic and error processing

Stream<NewsModel> getNews() {
  int page = 0;
  return dataStreamWrapper(() async {
    final ans = await dio.get('/news?page=$page');
    final ansList = (ans.data as List);
    if (ansList.isEmpty) return null;
    final ret = ansList.map((e) => NewsModel.fromJson(e)).toList();
    // increment page only here for allow to refetch same data if exception was throw
    // all errors throw inside this function is captured and added to stream
    page += 1;
    return ret;
  });
}
3
likes
0
points
55
downloads

Publisher

unverified uploader

Weekly Downloads

Package to transform data stream to sliver list or sliver grid

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter

More

Packages that depend on sliver_stream_builder