locality_social_cloud_stories 0.0.1
locality_social_cloud_stories: ^0.0.1 copied to clipboard
A locality_core based story exchange interface.
example/main.dart
import 'package:flutter/material.dart';
import 'package:locality_core/locality_core.dart';
import 'package:locality_social_cloud_stories/locality_social_cloud_stories.dart';
// Angenommen, deine Datei heißt story_manager.dart oder ähnlich:
// import 'story_manager.dart';
// Beispielhafte Implementierung einer konkreten Story-Klasse
class ConcreteStory implements Story {
@override
String id;
String title;
String content;
ConcreteStory({required this.id, required this.title, required this.content});
}
// Beispielhafte Factory-Implementierung
class ConcreteStoryFactory implements StoryFactory {
@override
Story fromBroadcast(Broadcast broadcast) {
Map<String, dynamic> payload = broadcast.getPayload();
return ConcreteStory(
id: payload['id'] ?? broadcast.uuid,
title: payload['title'] ?? 'Untitled',
content: payload['content'] ?? '',
);
}
@override
Map<String, dynamic> toMap(Story story) {
ConcreteStory concreteStory = story as ConcreteStory;
return {
'id': concreteStory.id,
'title': concreteStory.title,
'content': concreteStory.content,
};
}
}
void main() async {
LocalitySocialCloudStories.factory = ConcreteStoryFactory();
StoryPubSub storyPubSub = StoryPubSub("my-story-topic-123");
await LocalitySocialCloud.supervise(pubSub: storyPubSub);
storyPubSub
.update(ConcreteStory(id: "id", title: "title", content: "content"));
storyPubSub.addListener(() {
// on change ...
});
StorySource source = await LocalitySocialCloudStories.getUserStories(
PublicUser("id", "publicKey"));
List<Story> stories = source.stories.values.toList();
source.addListener(() {
// on change ...
});
}