Flutter开箱即用一站式解决方案-企业级网络篇

Flutter Chen Common

🌟 简介

本库为Flutter应用开发提供一站式解决方案,包含:

  • 可定制的主题系统
  • 完整的国际化支持
  • 企业级网络请求封装
  • 企业级日志体系封装
  • N+高质量常用组件
  • 常用开发工具及扩展集合
  • 刷新列表一整套解决方案
  • 开箱即用的通用各类弹窗
  • 全局统一各状态布局

特性

  • 🎨 主题系统 :通过 ThemeExtension 全局配置颜色/圆角/间距等样式
  • 🌍 国际化支持:内置中英文,支持自定义文本和动态语言切换
  • 优先级覆盖:支持全局配置 + 组件级参数覆盖
  • 📱 自适应设计:完美适配 iOS/Material 设计规范
  • 🔥 企业级方案:内置日志/网络/安全等通用模块,提供开箱即用的复杂场景解决方案

🚀 快速接入

安装依赖

pubspec.yaml 中添加依赖:

yaml 复制代码
/// 1.8.0版本已移除图片选择裁剪上传oss一站式解决方案
dependencies:
  flutter_chen_common: 最新版本

🌐 网络请求

dart 复制代码
// 网络模块初始化  
// HttpConfig,内置日志打印、网络重试拦截器、token无感刷新以及相关操作
HttpClient.init(
  config: HttpConfig(
    baseUrl: 'https://api.example.com',
    connectTimeout: const Duration(seconds: 30),
    receiveTimeout: const Duration(seconds: 30),
    sendTimeout: const Duration(seconds: 30),
    commonHeaders: {"platform": Platform.isIOS ? 'ios' : 'android'},
    interceptors: [CustomInterceptor()]
    enableLog: true,
    enableToken: true,
    maxRetries: 3,
    getToken: () => "token",
    onRefreshToken: () async {
      return "new_token";
    },
    onRefreshTokenFailed: () async {
      Log.d("重新登录");
    },
  ),
);

// 网络请求使用
HttpClient.instance.request(
  "/xxxx",
  method: HttpType.post.name,
  fromJson: (json) => User.fromJson(json),
  showLoading: true, // 自动显示全局Loading
)

// 网络请求方法参数
Future request<T>(  
    String path, {  
    String? baseUrl, // 不为空情况下用局部baseUrl,为空情况下用全局baseUrl
    String? method,  
    Options? options,  
    dynamic data,  
    T Function(dynamic json)? fromJson,  
    bool showLoading = false,  
    CancelToken? cancelToken,  
    void Function(int, int)? onSendProgress,  
    void Function(int, int)? onReceiveProgress,  
})

// 网络请求方法枚举
enum HttpMethod { get, post, put, delete, patch }

🔥 核心特性解析

三层拦截器体系

拦截器 功能描述 技术亮点
Token管理 身份认证全流程处理 无感刷新+请求队列管理
结构化日志 全链路请求监控 完整上下文信息+性能分析
智能重试 网络异常自动重试 指数退避策略+条件过滤
Token刷新流程图解
rust 复制代码
sequenceDiagram
    participant App
    participant Interceptor
    participant AuthServer
    participant BusinessServer
    
    App->>BusinessServer: 请求订单数据
    BusinessServer-->>Interceptor: 返回401
    Interceptor->>AuthServer: 发起Token刷新
    AuthServer-->>Interceptor: 返回新Token
    Interceptor->>BusinessServer: 携带新Token重试
    BusinessServer-->>App: 返回订单数据

自定义拦截器

scss 复制代码
HttpConfig(
  interceptors: [
    CustomInterceptor1(),
    CustomInterceptor2(),
  ],
)

企业级日志系统

css 复制代码
// 打印样式如下(日志打印完全不会被截断,json格式化方便复制查看数据,在开启日志拦截以及记录日志时会将日志写入文件
┌─────────────────────────────────────────────────────────────────────────────
│ ✅ [HTTP] 2025-04-05 23:30:29 Request sent [Duration] 88ms
│ Request: 200 GET http://www.weather.com.cn/data/sk/101010100.html?xxxx=xxxx
│ Headers: {"token":"xxxxx","content-type":"application/json"}
│ Query: {"xxxx":"xxxx"}
│ Response: {"weatherinfo":{"city":"北京","cityid":"101010100","WD":"东南风"}}
└──────────────────────────────────────────────────────────────────────────────

日志系统几大优势:

  1. 全生命周期追踪:记录从发起到响应的完整过程
  2. 输出完整性:日志输出打印不会被截断、无论响应数据有多少都确保输出信息完整
  3. 可视化输出格式:JSON格式化复制即用,固定分块显示,即使网络请求并发再多也可很清楚的查看日志信息
  4. 性能分析:精确到毫秒级的耗时统计

pub地址flutter_chen_common

相关推荐
不爱吃糖的程序媛22 分钟前
Flutter 3.35.7-ohos-0.0.3 发布:能力增强、性能优化与多项问题修复
flutter
始持2 小时前
第三讲 进阶布局与样式(精细化UI)
flutter
weixin_443478513 小时前
flutter学习之状态管理相关组件
javascript·学习·flutter
键盘鼓手苏苏4 小时前
Flutter 组件 reaxdb_dart 适配鸿蒙 HarmonyOS 实战:响应式 NoSQL 数据库,构建高性能本地持久化与分布式状态同步架构
flutter·harmonyos·鸿蒙·openharmony·reaxdb_dart
亚历克斯神4 小时前
Flutter for OpenHarmony: Flutter 三方库 mongo_dart 助力鸿蒙应用直连 NoSQL 数据库构建高效的数据流转系统(纯 Dart 驱动方案)
android·数据库·flutter·华为·nosql·harmonyos
加农炮手Jinx4 小时前
Flutter for OpenHarmony:postgres 直连 PostgreSQL 数据库,实现 Dart 原生的高效读写(数据库驱动) 深度解析与鸿蒙适配指南
网络·数据库·flutter·华为·postgresql·harmonyos·鸿蒙
始持19 小时前
第二讲 Flutter 文字、图片与图标(基础视觉元素)
flutter
Trust yourself2431 天前
Flutter开发中遇到下载Flutter SDK速度缓慢问题
flutter
始持1 天前
第一讲 Flutter核心思想与基础布局
flutter