Home > Enterprise >  This expression has a type of 'void' so its value can't be used - Flutter
This expression has a type of 'void' so its value can't be used - Flutter

Time:01-28

import 'package:demo_app/services/api.dart';
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

class AuthProvider extends ChangeNotifier{
  bool isAuthenticated = false;
  late String token;
  late ApiService apiService;

  AuthProvider() {
    init();
  }

  Future<void> init() async {
    token = await getToken();
    if (token.isNotEmpty) {
      isAuthenticated = true;
    }
    apiService = ApiService(token);
    notifyListeners();
  }

  Future<void> register(String name, String email, String password, String passwordConfirm, String deviceName) async{
  token = await apiService.register(name, email, password, passwordConfirm, deviceName);
  isAuthenticated = true;
  setToken();
  notifyListeners();
  }

  Future<void> logIn(String email, String password, String deviceName) async{
  token = await apiService.login(email, password, deviceName);
  isAuthenticated = true;
  setToken();    
  notifyListeners();
  }

  Future<void> logOut() async{
  token = '';
  isAuthenticated = false;
  setToken();  
  notifyListeners();
  }

  Future<void> setToken() async{
    final pref = await SharedPreferences.getInstance();
    pref.setString('token', token);
  }

  Future<void> getToken() async{
    final pref = await SharedPreferences.getInstance();
    pref.getString('token') ?? '';
  }

}

token = await getToken();

gives this error

This expression has a type of 'void' so its value can't be used. Try checking to see if you're using the correct API; there might be a function or call that returns void you didn't expect. Also check type parameters and variables which might also be void.

Any clue on solving this issue?

CodePudding user response:

Try the following code:

Future<void> init() async {
  token = await getToken();
  if (token.isNotEmpty) {
    isAuthenticated = true;
  }
  apiService = ApiService(token);
  notifyListeners();
}

Future<String> getToken() async {
  final pref = await SharedPreferences.getInstance();
  final token = pref.getString("token") ?? "";
  return token;
}
  • Related