app_stream_kit 0.0.1 copy "app_stream_kit: ^0.0.1" to clipboard
app_stream_kit: ^0.0.1 copied to clipboard

Utilities for building Flutter UIs from streams.

A small Flutter toolkit that makes it easier to build UI from Streams, with convenient builders and lifecycle-aware listeners.

Features #

  • AppStreamBuilder: a StreamBuilder-like widget with customizable loading/empty/error builders.
  • AppStreamListener: lifecycle-aware stream subscription with onData, onError, and onDone callbacks.
  • AppStreamConsumer: combines listener + builder.
  • AppStreamState: simple typed state classes (optional utility).

Getting started #

Add app_stream_kit to your pubspec.yaml:

dependencies:
  app_stream_kit: ^0.0.1

Usage #

AppStreamBuilder #

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:app_stream_kit/app_stream_kit.dart';

class Example extends StatelessWidget {
  Example({super.key});

  final Stream<int> stream = Stream<int>.periodic(const Duration(seconds: 1), (i) => i);

  @override
  Widget build(BuildContext context) {
    return AppStreamBuilder<int>(
      stream: stream,
      initialData: 0,
      loadingBuilder: (_) => const CircularProgressIndicator(),
      emptyBuilder: (_) => const Text('No data'),
      errorBuilder: (context, error, _) => Text('Error: $error'),
      onData: (data) {
        // optional side-effect
      },
      builder: (context, data) => Text('Latest: $data'),
    );
  }
}

AppStreamListener #

AppStreamListener<int>(
  stream: stream,
  onData: (data) => debugPrint('data: $data'),
  onError: (e) => debugPrint('error: $e'),
  onDone: () => debugPrint('done'),
  child: const Text('Listening...'),
)

AppStreamConsumer #

AppStreamConsumer<int>(
  stream: stream,
  initialData: 0,
  listener: (context, data) {
    debugPrint('consumer data: $data');
  },
  loadingBuilder: (_) => const CircularProgressIndicator(),
  errorBuilder: (context, error, _) => Text('Error: $error'),
  emptyBuilder: (_) => const Text('No data'),
  builder: (context, data) => Text('Latest: $data'),
)

Additional information #

Pull requests welcome.

1
likes
150
points
36
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Utilities for building Flutter UIs from streams.

Homepage
Repository (GitHub)
View/report issues
Contributing

License

MIT (license)

Dependencies

flutter

More

Packages that depend on app_stream_kit