netUtil.dart 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. import 'package:dio/dio.dart';
  2. import 'api.dart';
  3. import 'package:shared_preferences/shared_preferences.dart';
  4. class NetUtil {
  5. static const String GET = "get";
  6. static const String POST = "post";
  7. //get请求
  8. static void get(String url, Function callBack,
  9. {Map<String, dynamic> params, Function errorCallBack}) async {
  10. if (!url.startsWith("http")) {
  11. url = domain + url;
  12. }
  13. _request(url, callBack,
  14. method: GET, params: params, errorCallBack: errorCallBack);
  15. }
  16. //post请求
  17. static void post(String url, Function callBack,
  18. {Map<String, dynamic> params, Function errorCallBack}) async {
  19. print('**************');
  20. if (!url.startsWith("http")) {
  21. url = domain + url;
  22. }
  23. _request(url, callBack,
  24. method: POST, params: params, errorCallBack: errorCallBack);
  25. }
  26. //具体的还是要看返回数据的基本结构
  27. //公共代码部分
  28. static void _request(String url, Function callBack,
  29. {String method,
  30. Map<String, dynamic> params,
  31. Function errorCallBack}) async {
  32. print("<net> url :<" + method + ">" + url);
  33. if (params != null && params.isNotEmpty) {
  34. print("<net> params :" + params.toString());
  35. }
  36. String errorMsg = "";
  37. int statusCode;
  38. final prefs = await SharedPreferences.getInstance();
  39. String _electricContest = prefs.getString('token') != null
  40. ? prefs.getString('token')
  41. : '';
  42. try {
  43. Response response;
  44. if (method == GET) {
  45. //组合GET请求的参数
  46. if (params != null && params.isNotEmpty) {
  47. StringBuffer sb = new StringBuffer("?");
  48. params.forEach((key, value) {
  49. sb.write("$key" + "=" + "$value" + "&");
  50. });
  51. String paramStr = sb.toString();
  52. paramStr = paramStr.substring(0, paramStr.length - 1);
  53. url += paramStr;
  54. }
  55. response = await Dio()
  56. .get(url, options: Options(headers: {"token": _electricContest}));
  57. } else {
  58. if (params != null && params.isNotEmpty) {
  59. FormData _formData = FormData.from(params);
  60. response = await Dio().post(url,
  61. data: _formData,
  62. options: Options(headers: {"token": _electricContest}));
  63. } else {
  64. response = await Dio().post(url,
  65. options: Options(headers: {"token": _electricContest}));
  66. }
  67. }
  68. statusCode = response.statusCode;
  69. print(response);
  70. //打印结果
  71. //处理错误部分
  72. if (statusCode < 0) {
  73. errorMsg = "网络请求错误,状态码:" + statusCode.toString();
  74. _handError(errorCallBack, errorMsg);
  75. return;
  76. }
  77. if (callBack != null) {
  78. callBack(response.data);
  79. print("<net> response data:" + response.data);
  80. }
  81. } catch (exception) {
  82. _handError(errorCallBack, exception.toString());
  83. }
  84. }
  85. //处理异常
  86. static void _handError(Function errorCallback, String errorMsg) {
  87. if (errorCallback != null) {
  88. errorCallback(errorMsg);
  89. }
  90. print("<net> errorMsg :" + errorMsg);
  91. }
  92. }