Reads a value from persistent storage, return a future that completes with an error if it's not a String.
Future<String?> getString(String key) => read<String>(key, _cast);