Riverpod の ProviderContainer の非同期初期化・削除処理をサポートするライブラリである。 Provider 内での非同期初期化タスクの管理や、ProviderContainer 削除時の非同期処理を安全に実行できる。
Features
- 非同期初期化サポート: Provider の初期化時に非同期タスクを登録し、完了を待機
- 非同期削除処理: ProviderContainer 削除時に非同期処理を安全に実行
- タスクキュー管理: 初期化・削除タスクを順次実行し、完了を保証
Getting started
pubspec.yamlに以下の依存関係を追加する:
dependencies:
riverpod_container_async: ^1.0.0
Usage
import 'lib/riverpod_container_async.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
// 非同期初期化・削除をサポートするProviderContainerの作成
final container = ProviderContainer(
overrides: [
...ProviderContainerAsyncHelper.inject(),
// 他のoverrides
],
);
// Provider内で非同期初期化を行う
final myServiceProvider = Provider((ref) {
final service = MyService();
// 非同期初期化タスクを登録
ref.registerInitializeTasks(service.initialize());
// 非同期削除処理を登録
ref.onDisposeAsync(() async {
await service.dispose();
});
return service;
});
// 使用例
void main() async {
final container = ProviderContainer(
overrides: ProviderContainerAsyncHelper.inject(),
);
// すべての初期化タスクが完了するまで待つ
await container.waitInitializeTasks();
// アプリケーションの実行
runApp(MyApp());
// 終了時に非同期削除を実行
await container.disposeAsync();
}
Additional information
このパッケージは Riverpod の ProviderContainer における非同期処理を安全に実行するために作られた。 バグ報告や機能要求はGitHubで受け付けている。