import 'dart:async'; import 'package:uuid/uuid.dart' as uuid; import 'package:flutter/foundation.dart'; import '../models/_models.dart'; import '_dao.dart'; class SampleDao extends Dao { static SampleDao? _instance; // singleton instance factory SampleDao() => _instance ??= SampleDao._internal(); SampleDao._internal() { // initialization logic here } final Map _storage = {}; final StreamController> _streamController = StreamController>.broadcast(); @override Future delete(String id) async { var removed = _storage.remove(id); _emit(); return removed; } @override Future deleteAll() async { _storage.clear(); _emit(); return true; } @override Sample? get(String id) { return _storage[id]; } @override List getAll() { return _storage.values.toList(); } @override Sample create() { return Sample(); } @override Future insert(Sample item) async { var id = const uuid.Uuid().v4(); //var newSample = Sample(name: item.name)..id = id; var newSample = item..id = id; _storage[id] = newSample; _emit(); return newSample; } @override Future> fetchAll() async { return _storage.values.toList(); } @override Future fetch(String id) async { return _storage[id]; } @override Future update(Sample item, String id) async { _storage[id] = item; _emit(); return item..id = id; } @override Future upsert(Sample item) async { return (item.id == null) ? insert(item) : update(item, item.id!); } @override Stream> subscribe() => _streamController.stream; void _emit() { _streamController.add(_storage.values.toList()); } }