In Nylo you can save data to the users device using the NyStorage class.

Under the hood, Nylo uses the flutter_secure_storage package to save and retrieve data.

Store values

To store values, you can use the below helper.

import 'package:nylo_framework/nylo_framework.dart';
..."", "10");

Retrieve values

To retrieve values, you can use the below helper.

import 'package:nylo_framework/nylo_framework.dart';

// Default
String coins = await""); // 10

// String
String coins = await<String>(""); // 10

// Integer
int coins = await<int>(""); // 10

// double
double coins = await<double>(""); // 10.00

Introduction to storable models

Storable models are handy for storing small-sized pieces of data on the user's device.

It's useful for storing information such as:

  • Progress in a game
  • API Token
  • Locale preference

Here's a model that extends the Storable class.

class User extends Storable {
  String token;
  String username;
  String favouriteCity; 

  User({this.token, this.username, this.favouriteCity});

  toStorage() => {
      "token": this.token, 
      "username": this.username, 
      "favourite_city": this.favouriteCity

  fromStorage(dynamic data) {
    this.token = data['token'];
    this.username = data['username'];
    this.favouriteCity = data['favourite_city'];

After extending the Storable class, you then need to override the toStorage() and fromStorage methods.

  • toStorage() - Creates the payload to be stored.

  • fromStorage(dynamic data) - This will create the model from the data payload, the keys should match the toStorage() method.

Saving a Storable model

To save a Storable model, you can use the below helper.

import 'package:nylo_framework/nylo_framework.dart';

User user = new User();
user.username = "Anthony";

String key = "";

// saves to storage;

// or, user);

Retrieve a Storable model

To retrieve a Storable model, you can use the below helper.

import 'package:nylo_framework/nylo_framework.dart';
String key = "";

User user = await, model: new User());
print(user.username); // Anthony

Backpack Storage

Nylo includes a lightweight storage class called Backpack. This class is designed for storing small-sized pieces of data during a user's session.

The Backpack class isn't asynchronous so you can set/get data on the fly.

Here's the Backpack class in action.

Set data

// storing a string
Backpack.instance.set('user_api_token', 'a secure token');

// storing an object
User user = User();
Backpack.instance.set('user', user);

// storing an int
Backpack.instance.set('my_lucky_no', 7);

Read data'user_api_token'); // a secure token'user'); // User instance'my_lucky_no'); // 7

Real world usage

A great example for when you might want to use this class over the NyStorage class is when e.g. storing a user's api_token for authentication.

// login a user
LoginResponse loginResponse = await _apiService.loginUser('email': '...', 'password': '...');

String userToken = loginResponse.token;
// Store the user's token to NyStorage for persisted storage
await'user_token', userToken);

// Store the token to the Backpack class to ensure the user is authenticated for subsequent API requests
Backpack.instance.set('user_token', userToken);

Now in our API Service, we can set the auth header from our Backpack class without having to wait on the async response.

class ApiService extends BaseApiService {
  Future<dynamic> accountDetails() async {
    return await network(
        request: (request) {
          String userToken ='user_api_token');

          // Set auth header
          request.options.headers = {
            'Authorization': "Bearer " + userToken
          return request.get("/account/1");