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

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

ecp_net是基于Dio库的二次封装库,提供了更丰富的错误处理/数据转换/状态回调 /** State内自动取消**等功能,使用前请先熟悉Dio库。

注意:该库为内部项目需求设计,API 可能随业务调整而变化,通用场景请自行评估兼容性。问题反馈请通过仓库主页提交。

功能列表 #

  • 全局错误处理
  • 全局数据解析
  • 请求状态监听
  • State生命周期绑定
  • 网络加载框(LoadingDialog)自动加载

使用方式 #

添加依赖 #

dependencies:
  ecp_net: ^0.0.9

初始化SmartDialog #

因为库使用了SmartDialog库LoadingDialog和Toast,故在需要在MyApp中初始化SmartDialog

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return ScreenUtilInit(builder: () {
      return MaterialApp(
        ...
        builder: FlutterSmartDialog.init(),
      );
    });
  }
}

初始化NetConfig(可选) #

NetConfig 可选择不初始化,默认使用无配置(BaseOptions)的Dio

  
  var convert = NetConvert(
      codeKeys: ["errCode"], messageKeys: ['errMsg'], successFlags: ['200']);

  var options = BaseOptions(
      baseUrl: "http://135.0.123.36:9000",
      connectTimeout: 10*1000,
      receiveTimeout: 10*1000,
      sendTimeout: 10*1000);

  NetConfig.instance
    ..convert = convert //可选:全局数据转换适配器,默认NetConvert
    ..baseOptions = options; //可选:Dio基础Options

以下均为可选配置,建议在程序入口进行设置;具体配置如下表:

参数 功能 默认
baseOptions Dio基础Options Dio库默认值
convert 全局数据转换适配器 NetConvert
errorHandler 全局错误处理器 NetErrorHandler
dynamicHeader 动态添加请求头方法
initialDio 配置Dio回调方法,例如添加拦截器,静态公用请求头等
loadingDialog DialogRequest加载弹窗 SmartDialog自带的LoadingDialog
loadingMsg 自带LoadingDialog提示信息 加载中

极简示例 #

 get("/sso/captcha") //生成Future
        .transformObj((value) => Test.fromJson(value)) //数据转换成Test类型实例
        .toDialogRequest() //转换成DialogRequest,带默认LoadingDialog
        .onSuccess((value) => LogUtil.e("$value")) //数据返回回调,value不为空
        .await(); //开始调用
        

功能说明 #

请求别名 #

别名名称参考Dio库的RESTful风格别名,且已封装成为顶级函数形式,在任意Dart文件内皆能调用,具体参数请参照Dio库

 get("/sso/captcha");
 getUri("/sso/captcha");
 post("/sso/captcha");
 postUri("/sso/captcha");
 put("/sso/captcha");
 putUri("/sso/captcha");
 ...

若要使用Dio中download方法,则需要使用原生Dio方式,例:

 netDio.download(urlPath, savePath); //netDio是Dio单例别名,Dart文件内皆可调用

State生命周期绑定 #

  • State混入**NetStateMixin **(with NetStateMixin)
  • toXXXRequest 传入state
/// 混入NetStateMixin
class _MyHomePageState extends State<MyHomePage> with NetStateMixin {

 ...
   
 testCaptcha() {
    get("/sso/captcha", options: Options(responseType: ResponseType.bytes))
        .transformObj((value) => value as Uint8List)
        .toRequest(state: this) //传入state
        .await();
  }
  
}

依赖 #

0
likes
115
points
46
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

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

Homepage

License

MIT (license)

Dependencies

async, connectivity, dio, flutter, flutter_smart_dialog

More

Packages that depend on ecp_net