{"id":1109,"date":"2025-05-16T11:37:53","date_gmt":"2025-05-16T11:37:53","guid":{"rendered":"https:\/\/www.cmarix.com\/qanda\/?p=1109"},"modified":"2026-02-05T12:06:23","modified_gmt":"2026-02-05T12:06:23","slug":"flutter-api-integration-and-error-handling-with-dio","status":"publish","type":"post","link":"https:\/\/www.cmarix.com\/qanda\/flutter-api-integration-and-error-handling-with-dio\/","title":{"rendered":"How to Handle API Integration and Error Handling in Flutter Using Dio?"},"content":{"rendered":"\n<p>Dio is a robust and flexible HTTP client for Flutter with support for interceptors, timeouts, and transformers.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Setup<\/h3>\n\n\n\n<p>yaml:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dependencies:\n  dio: ^5.4.0<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. Basic Usage<\/h3>\n\n\n\n<p>Dart:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>final dio = Dio();\nFuture&lt;void> fetchData() async {\n  try {\n    final response = await dio.get('https:\/\/jsonplaceholder.typicode.com\/posts');\n    print(response.data);\n  } catch (e) {\n    print('Error: $e');\n  }\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3. Add Interceptors<\/h3>\n\n\n\n<p>Dart:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dio.interceptors.add(InterceptorsWrapper(\n  onRequest: (options, handler) {\n    options.headers&#91;'Authorization'] = 'Bearer your_token_here';\n    return handler.next(options);\n  },\n  onError: (DioError e, handler) {\n    print('Error status: ${e.response?.statusCode}');\n    return handler.next(e);\n  },\n));\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4.\u00a0 Use Retry Policies (Optional)<\/h3>\n\n\n\n<p>Use packages like <strong>dio_retry<\/strong> or implement custom retry logic.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. Create a Dio Client Wrapper<\/h3>\n\n\n\n<p>Dart:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class ApiClient {\n  final Dio _dio = Dio();\n  Future&lt;Response> get(String path) async {\n    try {\n      return await _dio.get(path);\n    } catch (e) {\n      throw Exception('Network error');\n    }\n  }\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Pro Tips:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Set timeouts: connectTimeout, receiveTimeout<\/li>\n\n\n\n<li>Always wrap responses in try-catch<\/li>\n\n\n\n<li>Use enums or sealed classes for response types<\/li>\n\n\n\n<li>Use flutter_bloc or riverpod for state handling<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Dio is a robust and flexible HTTP client for Flutter with support for interceptors, timeouts, and transformers. 1. Setup yaml: 2. Basic Usage Dart: 3. Add Interceptors Dart: 4.\u00a0 Use Retry Policies (Optional) Use packages like dio_retry or implement custom retry logic. 5. Create a Dio Client Wrapper Dart: Pro Tips:<\/p>\n","protected":false},"author":2,"featured_media":1112,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[11,1],"tags":[],"class_list":["post-1109","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-flutter","category-mobile"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.cmarix.com\/qanda\/wp-json\/wp\/v2\/posts\/1109","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cmarix.com\/qanda\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cmarix.com\/qanda\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cmarix.com\/qanda\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cmarix.com\/qanda\/wp-json\/wp\/v2\/comments?post=1109"}],"version-history":[{"count":3,"href":"https:\/\/www.cmarix.com\/qanda\/wp-json\/wp\/v2\/posts\/1109\/revisions"}],"predecessor-version":[{"id":1114,"href":"https:\/\/www.cmarix.com\/qanda\/wp-json\/wp\/v2\/posts\/1109\/revisions\/1114"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cmarix.com\/qanda\/wp-json\/wp\/v2\/media\/1112"}],"wp:attachment":[{"href":"https:\/\/www.cmarix.com\/qanda\/wp-json\/wp\/v2\/media?parent=1109"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cmarix.com\/qanda\/wp-json\/wp\/v2\/categories?post=1109"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cmarix.com\/qanda\/wp-json\/wp\/v2\/tags?post=1109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}