devla_request 0.0.3 devla_request: ^0.0.3 copied to clipboard
http client request for dart with interceptor integrate ( BaseURL, RefreshToken when Token expired, etc...).
devla_request #
A Http client request for Dart, which help you zero configuration interceptor with global stage and more cleaner with BaseURL, Logging request, header Authorization set with Bearer and Auto request when Token has expired
Installing #
Add Get to your pubspec.yaml file:
dependencies:
devla_request: ^0.0.2
Import get in files that it will be used:
import 'package:devla_request/devla_request.dart';
Using with Getx #
- create the new file called index.dart in the
class Controller extends GetxController {
static Controller to = Get.find();
final Dio _dio = new Dio();
@override
void onInit() async {
super.onInit();
_dio.interceptors.add(DevlaRequest(
dio: _dio,
baseUrl: 'https://jsonplaceholder.typicode.com', // enter your baseURL here
));
}
}
- add init Getx Controller in the main.dart file
Future<void> main() async {
Get.put<Controller>(Controller());
await GetStorage.init();
runApp(MyApp());
}
- Change the MaterialApp to GetMaterialApp
@override
Widget build(BuildContext context) {
return GetMaterialApp(
...
}
Usage with devla_request #
- add below function to fetchData into the controllers/index.dart
fetchData() async {
try {
Response response = await _dio.get('/todos/');
return response.data;
} catch (e) {
if (e is DioError) {
print("error fetchData : ${e.response}");
}
}
}
- full code in the controllers/index.dart going to be like below.
import 'package:devla_request/devla_request.dart';
import 'package:get/get.dart' hide Response;
import 'package:dio/dio.dart';
class Controller extends GetxController {
final Dio _dio = new Dio();
@override
void onInit() async {
super.onInit();
_dio.interceptors.add(DevlaRequest(
dio: _dio,
baseUrl: 'https://jsonplaceholder.typicode.com',
));
}
fetchData() async {
try {
Response response = await _dio.get('/todos/');
return response.data;
} catch (e) {
if (e is DioError) {
print("error fetchData : ${e.response}");
}
}
}
}
called function in stateFullWidget #
In this example will use main.dart to called api with controllers/index.dart
Controller _controller = Get.put(Controller());
List<TodosModel> _listItem = [];
@override
void initState() {
super.initState();
fetchData();
}
void fetchData() async {
var data = await _controller.fetchData();
var items = json.encode(data);
_listItem.clear();
// find more example in lib/src/models/todo.dart
_listItem.addAll(todosModelFromJson(items));
setState(() {});
}