Stormy Framework

Stormy 是一个 Flutter 开发框架,提供统一的网络请求、本地存储、对话框管理、刷新等功能。

功能特性

  • 网络模块 - 统一的网络请求客户端 (Dio)
  • 存储模块 - 本地数据存储服务 (Hive)
  • 对话框模块 - 统一对话框管理
  • 刷新模块 - 下拉刷新和上拉加载
  • 配置模块 - 应用配置管理
  • 国际化模块 - 多语言配置与支持 (Stormy I18n)
  • 组件库 - 通用 UI 组件
  • 工具库 - 常用工具函数
  • SDK 集成 - 第三方 SDK 集成

目录结构

lib/
├── stormy.dart           # 统一导出文件
├── core/
│   ├── network/         # 网络模块
│   ├── dialog/          # 对话框模块
│   ├── storage/         # 存储模块
│   ├── refresh/         # 刷新模块
│   └── config/          # 配置模块
├── widgets/             # 通用组件
├── utils/               # 工具类
├── sdk/                 # SDK 集成
└── modules/             # 模块管理

快速开始

1. 安装依赖

flutter pub get

2. 初始化框架

import 'package:stormy/stormy.dart';

void main() async {
  // 初始化存储服务
  await StormyStorageService.instance.initialize();
  
  // 初始化配置
  StormyAppConfig.instance.initialize(
    config: {
      'apiBaseUrl': 'https://api.example.com',
      'isDebugMode': true,
    },
  );
  
  runApp(MyApp());
}

3. 使用网络模块

// GET 请求
final response = await StormyConfigAccessor.networkClient!.get('/api/users');

// POST 请求
final response = await StormyConfigAccessor.networkClient!.post(
  '/api/login',
  data: {'username': 'xxx', 'password': 'xxx'},
);

4. 使用存储模块

// 保存数据
await StormyStorageService.instance.setString('token', 'xxx');
await StormyStorageService.instance.setInt('userId', 123);
await StormyStorageService.instance.setBool('isLogin', true);
await StormyStorageService.instance.setJson('userInfo', {'name': 'xxx'});

// 读取数据
final token = StormyStorageService.instance.getString('token');
final userId = StormyStorageService.instance.getInt('userId');
final isLogin = StormyStorageService.instance.getBool('isLogin');
final userInfo = StormyStorageService.instance.getJson('userInfo');

5. 使用对话框模块

// 确认对话框
final result = await StormyDialogManager.instance.showConfirmDialog(
  context: context,
  title: '确认删除',
  content: '确定要删除这个项目吗?',
  confirmText: '删除',
  isDestructive: true,
);

// Toast 消息
StormyDialogManager.instance.showToast(context, '操作成功');

6. 使用刷新模块

final controller = StormyRefreshHelper.createRefreshController();

// 下拉刷新
await StormyRefreshHelper.onRefresh(controller, () async {
  await fetchData();
});

// 上拉加载
await StormyRefreshHelper.onLoadMore(controller, () async {
  await loadMoreData();
});

7. 国际化支持

通过 stormy_i18n 插件,框架提供了对多语言的完整支持:

import 'package:stormy_i18n/stormy_i18n.dart';

// 配置并初始化国际化模块
await stormy()
  .i18n(StormyI18nConfig(
    defaultLocale: const Locale('zh', 'CN'),
    storageKey: 'app_locale',
    supportedLocales: const [
      Locale('zh', 'CN'),
      Locale('en', 'US'),
    ],
    localizationsDelegates: [
      // 填入你的项目 delegates,例如:
      // AppLocalizations.delegate,
    ],
  ))
  .build();

贡献

欢迎提交 Issue 和 Pull Request。

许可证

MIT License

Libraries

config/accessor/config_accessor
config/builder/stormy_config
config/config
config/models/assets_config
config/models/dialog_config
config/models/i18n_config
config/models/refresh_config
config/models/storage_config
config/models/stormy_theme_config
core/app/app
core/app/app_export
应用核心组件导出文件
core/app/app_initializer
core/app/error_app
core/app/models/app_model
core/dialog/stormy_dialog
core/network/client/network_client
core/network/config/network_config
core/network/error/error_handler
core/network/error/network_exception
core/network/interceptors/auth_interceptor
core/network/interceptors/logging_interceptor
core/network/interceptors/retry_interceptor
core/network/parser/data_parser
core/network/parser/response_parser
core/network/stormy_network
统一对外发布 Stormy 网络底层所需能力
core/refresh/refresh_helper
core/refresh/stormy_refresh
core/storage/adapters/hive_adapters
core/storage/adapters/hive_storage_engine
core/storage/interfaces/storage_engine
core/storage/mixins/storage_operations
core/storage/models/storage_bucket
core/storage/models/storage_entry
core/storage/storage_bucket_accessor
core/storage/stormy_storage
core/theme/stormy_theme
core/theme/stormy_theme_variant
core/theme/theme_extension
core/theme/variants/theme_colors
core/theme/variants/theme_decorations
core/theme/variants/theme_dimensions
core/theme/variants/theme_text
core/theme/variants/theme_typography
core/theme/variants/theme_variant
stormy_kit
utils/controllers/list_select
列表选择状态管理控制器
utils/extension/future_extension
utils/extension/null_safety_utils
utils/format/money
utils/listeners/app_lifecycle_listener
utils/preload/config/preload_config
utils/preload/control/preload_semaphore
utils/preload/engine/dependency_graph
utils/preload/engine/preload_engine
utils/preload/engine/task_execution_context
utils/preload/exception/preload_exception
utils/preload/model/preload_progress
utils/preload/model/preload_result
utils/preload/model/preload_task
utils/preload/preload
预加载管理器模块
utils/preload/preload_manager
utils/preload/state/preload_state
utils/preload/tracker/preload_tracker
utils/stormy_utils
utils/tools/app_utils
utils/tools/func_utils
utils/tools/image_utils
utils/tools/log_utils
utils/tools/path_utils
utils/tools/permission_utils
utils/tools/uuid_utils
utils/validator/validator
widgets/base/base_app_bar
widgets/base/base_bottom_sheet
widgets/base/base_button
widgets/base/base_confirm
widgets/base/base_image
widgets/base/base_input
widgets/base/base_load
widgets/base/base_page
widgets/base/base_parent
widgets/base/base_rimg
widgets/base/base_tab_bar
widgets/base/corner_filler
widgets/dialog/stormy_alert_dialog
widgets/dialog/stormy_confirm_dialog
widgets/special/before_after/before_after
widgets/special/before_after/src/before_after
widgets/special/before_after/src/before_after_theme
widgets/special/before_after/src/rect_clipper
widgets/special/before_after/src/slider_painter
widgets/special/dotted_line_border/dotted_line_border
widgets/special/h5/h5
widgets/special/privacy/agreement_widget
widgets/special/privacy/privacy_policy
widgets/special/toast/custom_loading_widget
widgets/special/toast/custom_toast_widget
widgets/widgets