streambox_adapters 1.4.1 copy "streambox_adapters: ^1.4.1" to clipboard
streambox_adapters: ^1.4.1 copied to clipboard

Storage adapters for streambox_core: memory, SharedPrefs, secure storage.

example/main.dart

/// Example usage of streambox_core
///
/// ```dart
/// // πŸ“‚ data layer
/// @RestApi()
/// abstract interface class ExampleApiInterface {
///   factory ExampleApiInterface(Dio dio) = _ExampleApiInterface;
///
///   @GET('items')
///   Future<ItemResponse> fetchItems({
///     @Query('page') required int page,
///     @Query('size') required int size,
///   });
/// }
///
/// final class ExampleDataSource
///     extends BaseDataSource<FetchParams, ItemResponse> {
///   ExampleDataSource({
///     required ExampleApiInterface api,
///     required super.cacheStrategy,
///   }) : _api = api;
///
///   final ExampleApiInterface _api;
///
///   @override
///   Future<ItemResponse> request(FetchParams? params) {
///     assert(params != null);
///     return _api.fetchItems(page: params!.page, size: params.size);
///   }
/// }
///
/// final class ExampleCacheStrategy
///     extends CacheThenRefreshStrategy<FetchParams, ItemResponse> {
///   ExampleCacheStrategy({required super.cache});
///
///   @override
///   String resolveKey(FetchParams? params) =>
///       '${params?.page}-${params?.size}';
/// }
///
/// final class ExampleCache extends BaseKeyValueCache<ItemResponse> {
///   const ExampleCache({required super.store});
///
///   @override
///   String get keyPrefix => 'items';
///
///   @override
///   ItemResponse deserialize(String source) =>
///       ItemResponse.fromJson(decodeAsMap(source));
///
///   @override
///   String serialize(ItemResponse value) => encode(value.toJson());
/// }
///
/// final class ExampleRepoImpl extends SingleSourceRepo<
///     FetchParams, ItemResponse, ExampleEntity>
///     implements ExampleRepo {
///   ExampleRepoImpl({required super.dataSource});
///
///   @override
///   ExampleEntity map(FetchParams? params, ItemResponse value) =>
///       ExampleMapper(value).toEntity();
/// }
///
/// // πŸ“‚ domain layer
/// abstract interface class ExampleRepo
///     implements Repo<FetchParams, ExampleEntity> {}
///
/// // πŸ“‚ di module
/// final exampleRepo = ExampleRepoImpl(
///   dataSource: ExampleDataSource(
///     api: ExampleApiInterface(dio),
///     cacheStrategy: ExampleCacheStrategy(
///       cache: ExampleCache(store: MemoryStoreAdapter()),
///     ),
///   ),
/// );
/// ```
void main() {}
0
likes
155
points
45
downloads

Publisher

verified publisherkalaganov.dev

Weekly Downloads

Storage adapters for streambox_core: memory, SharedPrefs, secure storage.

Repository (GitHub)
View/report issues

Topics

#repository #caching #reactive #strategy #core

Documentation

API reference

License

MIT (license)

Dependencies

flutter, flutter_secure_storage, meta, shared_preferences, streambox_core

More

Packages that depend on streambox_adapters