import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../config/size_config.dart'; import '../models/users.dart'; class Utils extends ChangeNotifier { // Singleton instance static final Utils _instance = Utils._internal(); factory Utils() { return _instance; } Utils._internal(); users? _user; bool isValidToken = false; SharedPreferences? prefs; bool? svgError; int? currentrideid; bool initialized = false; String? _token="InvalidToken"; double _heightMultiplier = 0; double _widthMultiplier = 0; double _textMultiplier = 0; // Getters for size multipliers String? get token => _token; double get heightMultiplier => _heightMultiplier; double get widthMultiplier => _widthMultiplier; double get textMultiplier => _textMultiplier; Future getToken() async { final prefs = await SharedPreferences.getInstance(); // Read the token from storage. _token = prefs.getString('token'); // If the token is null or empty, return 'InvalidToken' as a default, // but DO NOT write it back to the device storage. if (_token == null || _token!.isEmpty) { return 'InvalidToken'; } // Otherwise, return the valid token. return _token!; } // Lazy initialization of SharedPreferences Future initializePreferences() async { prefs ??= await SharedPreferences.getInstance(); } setInitialized(bool init) { initialized = init; notifyListeners(); } // User getter and setter with notifyListeners users? get user => _user; void updateCurrentUser(users newUser) { _user = newUser; notifyListeners(); } bool get isUserLoggedIn => prefs == null ? false : prefs!.getBool("isLoggedIn") ?? false; // Initialize size multipliers from SizeConfig void initSize() { _heightMultiplier = SizeConfig.heightMultiplier; _widthMultiplier = SizeConfig.widthMultiplier; _textMultiplier = SizeConfig.textMultiplier; notifyListeners(); } } final utils = Utils();