https://github.com/bannzai/async_value_group
https://github.com/bannzai/async_value_group
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/bannzai/async_value_group
- Owner: bannzai
- License: mit
- Created: 2022-11-09T04:41:23.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-03-25T12:12:34.000Z (about 2 years ago)
- Last Synced: 2025-04-06T05:00:01.162Z (about 1 year ago)
- Language: Dart
- Homepage:
- Size: 86.9 KB
- Stars: 46
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
## Features
async_value_group is a a Dart library for grouping some [riverpod](https://github.com/rrousselGit/riverpod) `AsyncValue`s into single `AsyncValue`.
- Grouping some `AsyncValue`s into single `AsyncValue` and retrieve all `AsyncValue.data` as a tuple.
- Waiting to be done multiple asynchronous process.
- If you use hooks_riverpod, call `AsyncValue.when` only once in `Widget.build` method even if multiple AsyncValues are required.
## Usage
```dart
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:async_value_group/async_value_group.dart';
class TweetsPage extends HookConsumerWidget {
const TweetsPage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context, WidgetRef ref) {
return AsyncValueGroup.group2(
ref.watch(tweetsProvider),
ref.watch(userProvider),
).when(
data: (t) => t.$1.isEmpty ? const TweetsEmpty() : TweetsBody(tweets: t.$1, user: t.$2),
error: (error, st) => ErrorPage(error: error),
loading: () => const Loading(),
);
}
}
```