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

相关推荐
肥肥呀呀呀2 小时前
flutter 资料收集
前端·flutter
程序猿阿伟2 小时前
《社交应用架构生存战:React Native与Flutter的部署容灾决胜法则》
flutter·react native·架构
肥肥呀呀呀2 小时前
flutter利用 injectable和injectable_generator 自动get_it注册
flutter
恋猫de小郭15 小时前
Compose Multiplatform iOS 稳定版发布:可用于生产环境,并支持 hotload
android·flutter·macos·ios·kotlin·cocoa
yuanlaile16 小时前
Flutter开发HarmonyOS实战-鸿蒙App商业项目
flutter·华为·harmonyos·flutter开发鸿蒙
WangMing_X17 小时前
Flutter开发IOS蓝牙APP的大坑
flutter·ios
WDeLiang17 小时前
Flutter - 概览
flutter
程序猿阿伟1 天前
《让内容“活”起来:Flutter社交应用瀑布流布局的破界实践》
前端·flutter
帅次1 天前
Flutter TabBar / TabBarView 详解
android·flutter·ios·小程序·iphone·taro·reactnative
WDeLiang2 天前
Flutter 布局
前端·flutter·dart