fuery_core 0.0.2
fuery_core: ^0.0.2 copied to clipboard
Asynchronous State Management for Dart
Fuery Core #
Asynchronous State Management for Dart. #
Features #
- Async data fetching, caching, invalidation
- Mutation with side effect
Installation #
flutter pub add fuery_core
Basic Usage #
Query #
int id = 2;
// QueryResult<Post, Error>
late final post = Query.use<Post, Error>(
queryKey: ['posts', id],
queryFn: () => repository.getPostById(id),
);
...
print(post.data.value); // Instance of 'Post'
print(post.status); // QueryStatus.success
Mutation #
// MutationResult<Post, Error, void Function(String), Future<Post> Function(String)>
late final createPost = Mutation.args<String, Post, Error>(
mutationFn: (String content) => repository.createPost(content),
onMutate: (args) => print('mutate started'),
onSuccess: (args, data) => print('mutate succeed'),
onError: (args, error) => print('mutate error occurred'),
);
createPost.mutate('some content');
// or
await createPost.mutateAsync('some content');
// MutationResult<Post, Error, void Function(), Future<void> Function()>
late final removeAll = Mutation.noArgs<void, Error>(
mutationFn: () => repository.removeAll(),
onMutate: () => print('mutate started'),
onSuccess: (data) => print('mutate succeed'),
onError: (error) => print('mutate error occurred'),
);
removeAll.mutate();
// or
await removeAll.mutateAsync();
Fuery Client #
// invalidate
Fuery.invalidateQueries(queryKey: ['posts']);
// configuration global options
Fuery.config(QueryOptions(
gcTime: 1000 * 60 * 60,
staleTime: 0,
refetchInterval: 1000 * 60 * 30,
));
Todo #
- Infinite Query
- More complex features like query-core (from react-query)