import 'dart:async'; import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:fcs/vo/announcement.dart'; import 'base_model.dart'; import 'constants.dart'; import 'firebase_helper.dart'; class AnnouncementModel extends BaseModel { List announcements = []; void initUser(user) { super.initUser(user); _loadAnnouncements(); } @override logout() async { announcements = []; } Future _loadAnnouncements() async { Stream snapshots = Firestore.instance .collection( "/$biz_collection/${setting.okEnergyId}/$announcement_collection") .snapshots(); snapshots.listen((snaps) async { announcements = snaps.documents.map((documentSnapshot) { var data = Announcement.fromMap( documentSnapshot.data, documentSnapshot.documentID); return data; }).toList(); notifyListeners(); }); } Future getAnnouncement(String id) async { String path = "/$biz_collection/${setting.okEnergyId}/$announcement_collection"; var snap = await getDocSnap(path, id); return Announcement.fromMap(snap.data, snap.documentID); } Future createAnnouncement(Announcement announcement) async { await request("/announcement", "POST", payload: announcement.toMap(), token: await getToken()); } Future updateAnnouncement(Announcement announcement) async { await request("/announcement", "PUT", payload: announcement.toMap(), token: await getToken()); } Future deleteAnnouncement(Announcement announcement) async { await request("/announcement", "DELETE", payload: announcement.toMap(), token: await getToken()); } }