Feed stream with changenotifier

This commit is contained in:
SomnusVeritas
2023-10-20 21:13:49 +02:00
parent f849a42cf9
commit 8c1254ee1a
5 changed files with 82 additions and 1 deletions

View File

@@ -0,0 +1,36 @@
import 'package:flutter/material.dart';
import 'package:maggs_victory_voyage/services/db_helper.dart';
import '../models/feed_item.dart';
class Feed extends ChangeNotifier {
final List<FeedItem> _feed = [];
Stream? feedStream;
List<FeedItem> get feed {
if (feedStream == null) {
DbHelper.fetchFeed().then((value) {
_feed.clear();
_feed.addAll(value);
});
feedStream = DbHelper.feedStream;
feedStream!.listen(
(event) => _updateFeed(event),
);
}
return _feed;
}
void _updateFeed(List<Map<String, dynamic>> data) {
final List<FeedItem> newFeed =
data.map((e) => FeedItem.fromMap(e)).toList();
final newItems =
newFeed.where((element) => !_feed.contains(element)).toList();
if (newItems.isNotEmpty) {
_feed.addAll(newItems);
notifyListeners();
}
}
}