pd_load_state library

一个用于管理网络请求不同 UI 状态的 Flutter 库,支持泛型数据携带。

本库提供了一种简单高效的方式,根据请求状态(加载中、成功、错误、空数据、完成、初始、离线) 显示不同的 UI 视图。支持自定义组件、全局配置以及带动画和渐变效果的增强版 UI。 新增泛型数据携带能力,可在成功状态时传递强类型数据。

功能特性

  • 🎯 多状态管理(加载中/成功/错误/空数据/完成/初始/离线)
  • 📦 泛型数据携带,支持强类型数据传递
  • 🎨 增强版 UI,支持动画和渐变效果(可选)
  • ✨ 状态切换动画(AnimatedSwitcher)
  • 🌓 深色模式适配
  • 📊 进度显示支持
  • 🌍 国际化支持(中文/英文)
  • ♿ 无障碍支持
  • 📱 多平台支持(Android、iOS、Web、macOS、Windows、Linux)
  • ⚡ 轻量级且易于使用的 API
  • 🔄 基于 Stream 的状态广播,支持自动清理
  • 📖 完全向后兼容,旧代码无需修改

快速开始

添加到你的 pubspec.yaml

dependencies:
  pd_load_state: ^0.2.3

使用示例

// 旧 API(向后兼容)
final loadState = PDLoadState('unique_id');

PDLoadStateLayout(
  loadState: loadState,
  onLoading: () => fetchData(),
  builder: (context) => MyContentWidget(),
)

// 新 API(支持数据携带)
final loadState = PDLoadState<User>('user_page');
loadState.success(data: fetchedUser);

PDLoadStateLayout<User>(
  loadState: loadState,
  onLoading: () => fetchUser(),
  dataBuilder: (context, user) => UserProfile(user: user),
)

更多信息,请参阅 README示例

Classes

PDAccessibilityUtils
无障碍辅助工具类,为加载状态视图添加语义化支持。
PDLoadState<T>
支持泛型数据携带的加载状态管理类。
PDLoadStateBase
加载状态的抽象基类,定义了状态管理的核心接口。
PDLoadStateConfigure
全局配置类,用于统一配置所有加载状态组件的默认行为和样式。
PDLoadStateDefaultWidgets
默认加载状态视图组件集合,提供各状态的基础 UI 实现。
PDLoadStateEnhancedWidgets
增强版加载状态视图组件集合,提供现代化的动画和渐变效果。
PDLoadStateLayout<T>
加载状态布局组件,根据 PDLoadState 的状态自动切换显示不同的 UI 视图。
PDLoadStateLocalizations
加载状态组件的国际化抽象基类。
PDLoadStateLocalizationsDelegate
加载状态组件的国际化代理类。
PDLoadStateLocalizationsEn
英文国际化实现类。
PDLoadStateLocalizationsZh
中文国际化实现类。
PDLoadStateManager
加载状态全局管理器,负责管理所有状态的广播和生命周期。
PDLoadStateTestUtils
测试工具类,提供测试时的资源管理方法。
PDProgressController
进度控制器类,提供进度管理的便捷接口。
PDProgressState
进度状态管理类,继承自 ChangeNotifier

Enums

PDLoadStateEnum
加载状态枚举,定义了所有可能的 UI 状态。

Extensions

PDLoadStateEnumExtension on PDLoadStateEnum
PDLoadStateEnum 的扩展方法,提供便捷的状态判断和描述获取。

Typedefs

PDDataWidgetBuilder<T> = Widget Function(BuildContext context, T? data)
带数据的视图构建器类型定义。
PDErrorWidgetBuilder = Widget Function(BuildContext context, String errorMessage, VoidCallback? onRetry)
错误视图构建器的类型定义。
PDLoadStateChanged = void Function(PDLoadStateEnum stateEnum)
状态变化回调的类型定义。
PDLoadStateVoid = PDLoadState<void>
PDLoadState<void> 的便捷别名,用于不需要携带数据的场景。
PDProgressWidgetBuilder = Widget Function(BuildContext context, int current, int total)
进度视图构建器的类型定义。