Cached Storage
Visit the documentation for more information.
A Storage addon to the CachedQuery package.
Built on top of Sqflite.
Features
- Persist queries to disk
- Accepts any json serializable data.
Getting started
Initialized cached query with the storage interface. This must be initialized before any query is called.
void main() async {
CachedQuery.instance.configFlutter(
storage: await CachedStorage.ensureInitialized(),
);
}
Queries will then automatically be persisted.
Serialization
Cached Storage uses jsonEncode
to convert the data of a query to json, which is then stored. If you are returning
dart objects from the queryFn
you will need to serialized the json back into the dart object. To do this, pass a
serilizer
to the QueryConfig which will be used to turn the stored data back into a dart object.
Query<JokeModel>(
key: 'joke',
config: QueryConfig(
// Use a deserializer to transform the store json to an object.
storageDeserializer: (dynamic json) =>
JokeModel.fromJson(json as Map<String, dynamic>),
),
queryFn: () async {
final req = client.get(
Uri.parse("https://icanhazdadjoke.com/"),
headers: {"Accept": "application/json"},
);
final res = await req;
return JokeModel.fromJson(
jsonDecode(res.body) as Map<String, dynamic>,
);
},
);
Additional information
This package is an addon for Cached Query. For persistent storage take a look at
Cached Storage
.