2024年最全Flutter教程——Dio的封装,面试怎么称呼面试官

《设计思想解读开源框架》

第一章、 热修复设计

  • 第一节、 AOT/JIT & dexopt 与 dex2oat

  • 第二节、 热修复设计之 CLASS_ISPREVERIFIED 问题

  • 第三节、热修复设计之热修复原理

  • 第四节、Tinker 的集成与使用(自动补丁包生成)

    第二章、 插件化框架设计

  • 第一节、 Class 文件与 Dex 文件的结构解读

  • 第二节、 Android 资源加载机制详解

  • 第三节、 四大组件调用原理

  • 第四节、 so 文件加载机制

  • 第五节、 Android 系统服务实现原理

    第三章、 组件化框架设计

  • 第一节、阿里巴巴开源路由框——ARouter 原理分析

  • 第二节、APT 编译时期自动生成代码&动态类加载

  • 第三节、 Java SPI 机制

  • 第四节、 AOP&IOC

  • 第五节、 手写组件化架构

    第四章、图片加载框架

  • 第一节、图片加载框架选型

  • 第二节、Glide 原理分析

  • 第三节、手写图片加载框架实战

    第五章、网络访问框架设计

  • 第一节、网络通信必备基础

  • 第二节、OkHttp 源码解读

  • 第三节、Retrofit 源码解析

    第六章、 RXJava 响应式编程框架设计

  • 第一节、链式调用

  • 第二节、 扩展的观察者模式

  • 第三节、事件变换设计

  • 第四节、Scheduler 线程控制

    第七章、 IOC 架构设计

  • 第一节、 依赖注入与控制反转

  • 第二节、ButterKnife 原理上篇、中篇、下篇

  • 第三节、Dagger 架构设计核心解密

    第八章、 Android 架构组件 Jetpack

  • 第一节、 LiveData 原理

  • 第二节、 Navigation 如何解决 tabLayout 问题

  • 第三节、 ViewModel 如何感知 View 生命周期及内核原理

  • 第四节、 Room 架构方式方法

  • 第五节、 dataBinding 为什么能够支持 MVVM

  • 第六节、 WorkManager 内核揭秘

  • 第七节、 Lifecycles 生命周期


    本文包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

Dio dio = new Dio();

//get请求

void getHttp() async {

try{

Response response = await dio.get("http://www.baidu.com");

print("getHttp: $response");

}catch(e){

print("getHttp: Exception: $e");

}

}

//post请求

void postHttp() async {

try{

Response response = await dio.post("https://www.csdn.net");

print("postHttp: $response");

}catch(e){

print("postHttp: Exception: $e");

}

}




三,封装



因为一个dio实例可以发起多个http请求,所以最好使用单例模式,节省资源;



直接贴代码:



import ‘package:dio/dio.dart’;

import ‘package:dio_cookie_manager/dio_cookie_manager.dart’;

import ‘package:cookie_jar/cookie_jar.dart’;

class HttpManager{

//一个人工智能回答的免费API

final String _BASEURL = ‘http://api.qingyunke.com/api.php’;

final int _CONNECTTIMEOUT = 5000;

final int _RECEIVETIMEOUT = 3000;

//单例模式

static HttpManager _instance;

Dio _dio;

BaseOptions _options;

//单例模式,只创建一次实例

static HttpManager getInstance(){

if(null == _instance){

  _instance = new HttpManager();

  return _instance;

}

}

//构造函数

HttpManager(){

_options =new BaseOptions(

  baseUrl: _BASEURL,

  //连接时间为5秒

  connectTimeout: _CONNECTTIMEOUT,

  //响应时间为3秒

  receiveTimeout: _RECEIVETIMEOUT,

  //设置请求头

  headers: {

    "resource":"android"

  },

  //默认值是"application/json; charset=utf-8",Headers.formUrlEncodedContentType会自动编码请求体.

  contentType: Headers.formUrlEncodedContentType,

  //共有三种方式json,bytes(响应字节),stream(响应流),plain

  responseType: ResponseType.json

);

_dio = new Dio(_options);

//设置Cookie

_dio.interceptors.add(CookieManager(CookieJar()));



//添加拦截器

_dio.interceptors.add(InterceptorsWrapper(

  onRequest: (RequestOptions options){

    print("在请求之前的拦截信息");

    return options;

  },

  onResponse: (Response response){

    print("在响应之前的拦截信息");

    return response;

  },

  onError: (DioError e){

    print("在错误之前的拦截信息");

    return e;

  }

));

}

//get请求方法

get(url,{data,options,cancelToken}) async{

Response response;

try{

  response = await _dio.get(url,queryParameters: data,options: options,cancelToken: cancelToken);

  print('getHttp response: $response');

}on DioError catch(e){

  print('getHttp exception: $e');

  formatError(e);

}

return response;

}

//post请求

post(url,{params,options,cancelToken}) async{

Response response;

try{

  response = await _dio.post(url,queryParameters: params,options: options,cancelToken: cancelToken);

  print('postHttp response: $response');

}on DioError catch(e){

  print('postHttp exception: $e');

  formatError(e);

}

return response;

}

//post Form请求

postForm(url,{data,options,cancelToken}) async{

Response response;

try{

  response = await _dio.post(url,options: options,cancelToken: cancelToken,data: data);

  print('postHttp response: $response');

}on DioError catch(e){

  print('postHttp exception: $e');

设计模式学习笔记

设计模式系列学习视频

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

$e’);

设计模式学习笔记

[外链图片转存中…(img-dT7VUF5W-1715122062766)]

设计模式系列学习视频

[外链图片转存中…(img-fUZNHAIE-1715122062767)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值