import 'package:shared_preferences/shared_preferences.dart'; import 'package:device_apps/device_apps.dart'; import 'dart:async'; const String FAVORITES = 'favorites'; const String SEPERATOR = ','; StreamController> favorites_$ = StreamController>.broadcast(); Future> getFavorites() async { final prefs = await SharedPreferences.getInstance(); String rawFavoritesList = prefs.getString(FAVORITES); List packageNames = rawFavoritesList?.split(SEPERATOR) ?? []; return Future.wait(packageNames.map((String pkg) => DeviceApps.getApp(pkg))); } void initFavorites() async { List fs = await getFavorites(); favorites_$.add(fs); } Stream> getFavorites$() { return favorites_$.stream; } void setFavorites(List favs) async { final prefs = await SharedPreferences.getInstance(); String rawFavoritesList = favs.map((Application app) => app.packageName).join(SEPERATOR); prefs.setString(FAVORITES, rawFavoritesList); favorites_$.add(await getFavorites()); } void addToFavorites(Application app) async { List fs = await getFavorites(); fs.add(app); await setFavorites(fs); }