use_request 0.7.0 copy "use_request: ^0.7.0" to clipboard
use_request: ^0.7.0 copied to clipboard

A Flutter useRequest-style async request management library based on dio, flutter_hooks, and Riverpod.

简体中文 | English

useRequest #

面向 Flutter 的异步任务状态管理库,提供自动/手动执行、loading/error/data、刷新、轮询、防抖、节流、重试、缓存、取消和本地数据更新。service 可以是任意 Future;Dio 与 Riverpod 是当前 0.7.0 的内置集成。

安装 #

dependencies:
  use_request: ^0.7.0

闭包模式 #

筛选条件或页面状态变化时,优先使用 useRequestFn

class UserName extends HookWidget {
  const UserName({super.key, required this.userId});

  final int userId;

  @override
  Widget build(BuildContext context) {
    final request = useRequestFn(
      () => api.fetchUser(userId),
      options: UseRequestOptions(refreshDeps: [userId]),
    );

    if (request.loading) return const CircularProgressIndicator();
    if (request.error != null) return Text('${request.error}');
    return Text(request.data?.name ?? 'No user');
  }
}

显式参数模式 #

按钮、提交或搜索等一次性动作使用 run(params)

final request = useRequest<User, int>(
  api.fetchUser,
  options: const UseRequestOptions(manual: true),
);

ElevatedButton(
  onPressed: () => request.run(42),
  child: const Text('Load user'),
);

refreshDeps 只决定何时刷新;参数模式的 refresh() 会复用最近一次参数。条件本身就是参数时使用闭包模式。

文档与示例 #

import 'package:use_request/use_request.dart';

0.7.0 保持现有统一入口和公开 API。主包目前仍直接依赖 Dio、flutter_hooks、Riverpod 与 Web 可见性支持;仅调整导出文件不会让这些依赖变为可选。

验证 #

flutter analyze
flutter test
cd example && flutter test
cd ../website && flutter test && flutter build web

许可证见 LICENSE

1
likes
160
points
197
downloads

Documentation

Documentation
API reference

Publisher

unverified uploader

Weekly Downloads

A Flutter useRequest-style async request management library based on dio, flutter_hooks, and Riverpod.

Repository (GitHub)
View/report issues

Topics

#hooks #dio #riverpod #async #request

License

MIT (license)

Dependencies

dio, flutter, flutter_hooks, flutter_riverpod, web

More

Packages that depend on use_request