network_manager 0.1.36 network_manager: ^0.1.36 copied to clipboard
A Network Manager package based on dio for easy REST API management
network_manager #
A Network Manager package based on dio for easy REST API management
Getting Started #
A Network Manager package based on dio for easy REST API management there is just some functionality written for using post and get api easily
Usage1 #
it's suggested that initialize network manager at some entry point in app you can set BaseUrl, TimeOut, and some pre-written function that will be called on every request : onStartDefault, onEndDefault, onSuccessDefault, onFailedDefault.
initializeNetworkManager({String token, @required String baseURL}) {
NetworkOption.initialize(
baseUrl: baseURL,
timeout: 30000,
token: token,
headers: {
'Content-Type': 'application/json',
"Authorization": "Bearer $token",
},
onStartDefault: (req) {
print("Start");
},
onEndDefault: (req) {
print("End");
},
onSuccessDefault: (res) {
print("Success");
},
onFailedDefault: (NetworkResponse res) {
print("Failed");
},
errorMsgExtractor: (res) {
return res["Message"] ?? "Unknown Error";
},
successMsgExtractor: (res) {
return res["Message"] ?? "Done";
});
}
every Network Request returns a Future
class NetworkResponse {
final bool responseStatus;
final int responseCode;
final String responseTitle;
Function retryFunction;
dynamic responseBody;
dynamic responseDetails;
String extractedMessage;
NetworkResponse(
{this.responseStatus,
this.responseCode,
this.responseTitle,
this.responseBody,
this.retryFunction,
this.responseDetails,
this.extractedMessage});
@override
String toString() {
return "$responseCode $responseTitle : $extractedMessage";
}
}
and responseBody is JsonDecode of base dio response.data
Example #
every where you want to make a request you can do as follows:
final Map<String,dynamic> req ={
"Username": "test",
"Password": "test",
};
NetworkManager networkManager = NetworkManager.instance(
context: context,
onSuccess: (context,response)=>print("OnSuccessCalled"),
req: req,
api: Apis.login
);
networkManager.requestPost();
Usage2 #
it's suggested that initialize network manager at some entry point in app you can set BaseUrl, TimeOut, and some pre-written function that will be called on every request : onStartDefault, onEndDefault, onSuccessDefault, onFailedDefault.
initializeNetworkManager() {
/// initialize network manager
NetworkManagerMetaData.initialize(
baseUrl: "http://example.com",
timeout: 30000,
token: token,
headers: {
'Content-Type': "application/json",
},
onStartDefault: () {
print("Start");
},
onEndDefault: () {
print("End");
},
onSuccessDefault: () {
print("Success");
},
onFailedDefault: () {
print("Failed");
},
successRules: (result) {
return (result["Status"] ?? -1) > 0;
},
tokenExpireRules: (resultJson) {
return (resultJson["Status"] == -999);
},
onTokenExpire: (retryFunction) {
print("Failed");
// can call retry function
},
useFancyDialog: true,
errorMsgExtractor: (result) {
return result["Message"] ?? "Unknown Error";
});
}
Example #
every where you want to make a request you can do as follows:
final Map<String,dynamic> req ={
"Username": "test",
"Password": "test",
};
NetworkManager networkManager = NetworkManager.instance(
context: context,
onSuccess: (context,response)=>print("OnSuccessCalled"),
req: req,
api: Apis.login
);
networkManager.requestPost();