Vexana is easy use network proccess with dio. You can do dynamic model parse, base error model, timeout and many utitliy functions.


Getting Started 🔥

Let's talk use detail.

Network Manager 😎

Have a a lot options: baseurl, logger, interceptors, base model etc.

INetworkManager  networkManager = NetworkManager(isEnableLogger: true, errorModel: UserErrorModel(),
 options: BaseOptions(baseUrl: ""));

Model Parse ⚔️

You have give to first parse model, second result model. (Result model could be list, model or primitive)

final response =
await networkManager.fetch<Todo, List<Todo>>("/todos", parseModel: Todo(), method: RequestType.GET);

Network Model 🛒

You must be wrap model to INetoworkModel so we understand model has a toJson and toFrom properties.

class Todo extends INetworkModel<Todo>

Refresh Token ♻️

Many projects use authentication structure for mobile security (like a jwt). It could need to renew an older token when the token expires. This time have a refresh token options, and I do lock all requests until the token refresh process is complete.

Since i locked all requests, I am giving a new service instance.

INetworkManager  networkManager = NetworkManager(isEnableLogger: true, options: BaseOptions(baseUrl: "",
onRefreshFail: () {  //Navigate to login },
 onRefreshToken: (error, newService) async {
    <!-- Write your refresh token business -->
    <!-- Then update error.req.headers to new token -->
    return error;


  • x Example project
  • x Unit Test with json place holder
  • x Unit Test with custom api
  • Make a unit test all layers.
  • Cache Option
  • x Refresh Token Architecture
  • Usage Utility



2020 created for @VB10

Youtube Channel