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

相关推荐
ujainu39 分钟前
Flutter + OpenHarmony 游戏开发进阶:游戏主循环——AnimationController 实现 60fps 稳定帧率
flutter·游戏·openharmony
2601_9498683639 分钟前
Flutter for OpenHarmony 剧本杀组队App实战04:发起组队表单实现
开发语言·javascript·flutter
kirk_wang1 小时前
Flutter艺术探索-Flutter在鸿蒙端运行原理:OpenHarmony平台集成
flutter·移动开发·flutter教程·移动开发教程
晚霞的不甘1 小时前
Flutter for OpenHarmony专注与习惯的完美融合: 打造你的高效生活助手
前端·数据库·经验分享·flutter·前端框架·生活
2401_865854882 小时前
Uniapp和Flutter哪个更适合企业级开发?
flutter·uni-app
向哆哆2 小时前
Flutter × OpenHarmony 跨端实战:打造健身俱乐部「数据可视化仪表盘」模块
flutter·信息可视化·开源·鸿蒙·openharmony·开源鸿蒙
灰灰勇闯IT2 小时前
Flutter for OpenHarmony:卡片式 UI(Card Widget)设计 —— 构建清晰、优雅的信息容器
flutter·交互
灰灰勇闯IT2 小时前
Flutter for OpenHarmony:响应式布局(LayoutBuilder / MediaQuery)—— 构建真正自适应的鸿蒙应用
flutter·华为·harmonyos
晚霞的不甘2 小时前
Flutter for OpenHarmony手势涂鸦画板开发详解
前端·学习·flutter·前端框架·交互
晚霞的不甘2 小时前
Flutter for OpenHarmony 实现动态天气与空气质量仪表盘:从 UI 到动画的完整解析
前端·flutter·ui·前端框架·交互