Skip to main content

ecp_net 0.1.1 copy "ecp_net: ^0.1.1" to clipboard
ecp_net: ^0.1.1 copied to clipboard

基于 Dio 的网络请求二次封装库,提供统一错误处理、数据转换、请求状态回调、State 生命周期绑定等功能,内部项目通用的 Dart 网络请求工具库。

example/lib/main.dart

import 'package:dio/dio.dart';
import 'package:ecp_net/net.dart';
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';

import 'api/api.dart';
import 'convert/rest_convert.dart';
import 'error/app_error_handler.dart';
import 'error/app_error_interceptor.dart';
import 'pages/home_page.dart';

void main() {
  _initNetConfig();
  runApp(const EcpNetExampleApp());
}

/// 全局网络配置:对应 `lib/src/net_config.dart` 的 [NetConfig] 单例。
void _initNetConfig() {
  final config = NetConfig.instance;

  // 1. 自定义 Convert:本示例对接裸 JSON 接口,注册直接取 response.data 的转换器。
  //    若后端是 {code,message,data} 包裹格式,请删除此行使用默认 NetConvert。
  config.convert = const RestConvert();

  // 2. 自定义全局错误处理器(未设置 onError 时兜底提示)。
  config.errorHandler = AppErrorHandler();

  // 3. 自定义全局错误拦截器(返回 true 表示错误已被自行处理,返回 false 走默认流程)。
  config.errorInterceptor = AppErrorInterceptor();

  // 4. 动态设置全局请求头:每个请求发出前都会被调用。
  config.dynamicHeader = (options, headers) async {
    headers['X-Demo-Token'] = 'ecp_net-example';
  };

  // 5. 初始化 Dio 时追加一个日志拦截器,方便在控制台观察请求/响应。
  config.initialDio = (dio) {
    dio.interceptors.add(
      LogInterceptor(requestBody: true, responseBody: true),
    );
  };

  // 6. 全局加载弹窗文案(DialogRequest 未指定 loadingMsg 时使用)。
  config.loadingMsg = '加载中,请稍候';

  // 7. 配置全局 baseOptions 并重建 Dio 实例(该 setter 内部会创建新 Dio,
  //    因此需放在 initialDio 之后,否则 initialDio 不会对新实例生效)。
  config.baseOptions = BaseOptions(
    baseUrl: Path.baseUrl,
    connectTimeout: const Duration(seconds: 15),
    receiveTimeout: const Duration(seconds: 15),
  );
}

class EcpNetExampleApp extends StatelessWidget {
  const EcpNetExampleApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'ecp_net Example',
      theme: ThemeData(colorSchemeSeed: Colors.indigo, useMaterial3: true),
      home: const HomePage(),
      // flutter_smart_dialog 初始化
      navigatorObservers: [FlutterSmartDialog.observer],
      builder: FlutterSmartDialog.init(),
    );
  }
}
0
likes
125
points
159
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

基于 Dio 的网络请求二次封装库,提供统一错误处理、数据转换、请求状态回调、State 生命周期绑定等功能,内部项目通用的 Dart 网络请求工具库。

Repository

License

MIT (license)

Dependencies

async, dio, flutter, flutter_smart_dialog

More

Packages that depend on ecp_net