Fkafka Dart Package
The fkafka
package offers an elegant solution for sending messages across different parts of your Dart or Flutter application without establishing direct connections. It simplifies event-driven programming by allowing you to emit and listen to topics anywhere in your app.
Features
- Emit Topics: Easily broadcast data across different parts of your app.
- Listen to Topics: Set up listeners for specific topics and react to the data received.
- Control Listeners: Ability to pause, resume, or close topic listeners.
- Reconnect Capability: Automatically re-establish connections when they are closed.
Getting Started
To get started with fkafka
, add it to your project's dependencies:
For Flutter Projects
flutter pub add fkafka
For Dart Projects
dart pub add fkafka
Or manually add it to your pubspec.yaml
file:
dependencies:
fkafka: ^2.0.0
Usage
Import the package and create an instance of Fkafka
:
import 'package:fkafka/fkafka.dart';
final kafka = Fkafka();
Emitting Data
In this example, we're emitting a list of products:
// Assuming Product is a defined class
final List<Product> products = [
Product(name: 'phone', type: 'iphone', price: 1500.0),
];
// Emitting a list of products on the 'products.loaded' topic
kafka.emit('products.loaded', products);
Listening to Topics
Set up a listener for the 'products.loaded' topic:
final kafka = Fkafka();
// Listening for the list of products
kafka.listen<List<Product>>(
'products.loaded',
onTopic: (List<Product> products) {
// Handle the received list of products
print(products);
},
);
Remember to close the instance when it's no longer needed:
kafka.closeInstance();
Managing Fkafka Instance
To close all Fkafka instances and release resources:
Fkafka.closeAll();
Advanced Usage
- Pausing and Resuming Subscriptions: Control your topic listeners by pausing and resuming them as needed.
- Check Active Listeners: Verify if a topic has active listeners in a particular instance.
Contributing
Contributions to the fkafka
package are welcome. Please read our contributing guidelines for more information.
License
This project is licensed under the MIT License.