app_stream_kit 0.0.1
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: aStreamBuilder-like widget with customizable loading/empty/error builders.AppStreamListener: lifecycle-aware stream subscription withonData,onError, andonDonecallbacks.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 #
- GitHub: https://github.com/rsumit1618/app_stream_kit
- Issues: https://github.com/rsumit1618/app_stream_kit/issues
Pull requests welcome.