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

相关推荐
xmdy58662 小时前
Flutter + 开源鸿蒙跨端实战|基于空间地理信息的**城市全域智慧泊车调度与多维运维管理平台** Day1 项目架构基座与工程化环境搭建
flutter·开源·harmonyos
KillerNoBlood2 小时前
2026移动端跨平台开发面经总结
android·算法·flutter·ios·移动开发·鸿蒙·kmp
xmdy58664 小时前
Flutter+开源鸿蒙全域智慧泊车调度管理平台 Day4 订单全流程闭环+支付核验+会员权益+个人中心开发
flutter·开源·harmonyos
W蘭5 小时前
Flutter从入门到实战-01-Dart语言基础
flutter
xuankuxiaoyao5 小时前
Vue.js 插槽、作用域插槽、商品、阶段案例
android·vue.js·flutter
恋猫de小郭5 小时前
终于,Flutter 修复 Android 中文字体异常,但是很草台,不知怎么吐槽
android·前端·flutter
xmdy58666 小时前
Flutter + 开源鸿蒙跨端实战|基于空间地理信息的城市全域智慧泊车调度与多维运维管理平台 Day3
flutter·华为·开源
UnicornDev6 小时前
【Flutter x HarmonyOS 6】魔方计时APP——挑战页面的UI设计
flutter·ui·华为·harmonyos·鸿蒙
张风捷特烈7 小时前
状态管理大乱斗#08 | MobX 源码评析 - 透明魔法
android·前端·flutter
西西学代码9 小时前
Flutter---RichText(混合文本样式)
flutter