20 lines
622 B
Dart
20 lines
622 B
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_hooks/flutter_hooks.dart';
|
|
|
|
typedef AsyncTask = ({
|
|
ValueNotifier<Future<void>?> pending,
|
|
AsyncSnapshot<void> snapshot,
|
|
bool hasError,
|
|
});
|
|
|
|
/// Creates a hook that provides a [snapshot] of the current asynchronous task passed
|
|
/// to [pending] and a [hasError] value.
|
|
AsyncTask useAsyncTask() {
|
|
final pending = useState<Future<void>?>(null);
|
|
final snapshot = useFuture(pending.value);
|
|
final hasError =
|
|
snapshot.hasError && snapshot.connectionState != ConnectionState.waiting;
|
|
|
|
return (pending: pending, snapshot: snapshot, hasError: hasError);
|
|
}
|