You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			157 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			157 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Dart
		
	
import 'dart:async';
 | 
						|
import 'dart:convert';
 | 
						|
 | 
						|
import 'package:flutter/material.dart';
 | 
						|
import 'package:local_auth/local_auth.dart';
 | 
						|
import 'package:shared_preferences/shared_preferences.dart';
 | 
						|
import 'package:test_sa/controllers/api_routes/api_manager.dart';
 | 
						|
import 'package:test_sa/controllers/api_routes/urls.dart';
 | 
						|
import 'package:test_sa/models/user.dart';
 | 
						|
 | 
						|
import '../settings/app_settings.dart';
 | 
						|
 | 
						|
class SettingProvider extends ChangeNotifier {
 | 
						|
  resetSettings() async {
 | 
						|
    SharedPreferences prefs = await SharedPreferences.getInstance();
 | 
						|
    user = null;
 | 
						|
    _assetGroup = null;
 | 
						|
    prefs.remove(ASettings.user);
 | 
						|
    prefs.remove(ASettings.assetGroup);
 | 
						|
    notifyListeners();
 | 
						|
  }
 | 
						|
 | 
						|
  // check if setting loaded or not
 | 
						|
  bool isLoaded = false;
 | 
						|
 | 
						|
  // contain saved user data
 | 
						|
  User user;
 | 
						|
 | 
						|
  Future<void> setUser(User user) async {
 | 
						|
    SharedPreferences prefs = await SharedPreferences.getInstance();
 | 
						|
    prefs.setString(ASettings.user, json.encode(user.toJson()));
 | 
						|
    this.user = user;
 | 
						|
    notifyListeners();
 | 
						|
    selectAssetGroup(user);
 | 
						|
  }
 | 
						|
 | 
						|
  void selectAssetGroup(User user) {
 | 
						|
    if (user.assetGroups.length == 1) {
 | 
						|
      _assetGroup = user.assetGroups.first;
 | 
						|
    } else {
 | 
						|
      int fmIndex = user.assetGroups.indexWhere((element) => element.id == 1);
 | 
						|
      if (fmIndex < 0) {
 | 
						|
        _assetGroup = user.assetGroups.first;
 | 
						|
      } else {
 | 
						|
        _assetGroup = user.assetGroups[fmIndex];
 | 
						|
      }
 | 
						|
    }
 | 
						|
    setAssetGroup(_assetGroup);
 | 
						|
    // ApiManager.instance.assetGroup = _assetGroup;
 | 
						|
  }
 | 
						|
 | 
						|
  Future<void> setAssetGroup(AssetGroup assetGroup) async {
 | 
						|
    // SharedPreferences prefs = await SharedPreferences.getInstance();
 | 
						|
    // prefs.setString(ASettings.assetGroup, json.encode(assetGroup.toJson()));
 | 
						|
    _assetGroup = assetGroup;
 | 
						|
    ApiManager.instance.assetGroup = _assetGroup;
 | 
						|
    notifyListeners();
 | 
						|
  }
 | 
						|
 | 
						|
  String _host;
 | 
						|
 | 
						|
  String get host => _host;
 | 
						|
 | 
						|
  Future<void> setHost(String host) async {
 | 
						|
    SharedPreferences prefs = await SharedPreferences.getInstance();
 | 
						|
    prefs.setString(ASettings.host, host);
 | 
						|
    _host = host;
 | 
						|
    notifyListeners();
 | 
						|
  }
 | 
						|
 | 
						|
  String _language;
 | 
						|
  AssetGroup _assetGroup;
 | 
						|
 | 
						|
  String get language => _language;
 | 
						|
 | 
						|
  AssetGroup get assetGroup => _assetGroup;
 | 
						|
 | 
						|
  Future<void> setLanguage(String currentLanguage) async {
 | 
						|
    SharedPreferences prefs = await SharedPreferences.getInstance();
 | 
						|
    prefs.setString(ASettings.language, currentLanguage);
 | 
						|
    _language = currentLanguage;
 | 
						|
    notifyListeners();
 | 
						|
  }
 | 
						|
 | 
						|
  String _theme;
 | 
						|
 | 
						|
  String get theme => _theme;
 | 
						|
 | 
						|
  Future<void> setDarkTheme(bool value) async {
 | 
						|
    SharedPreferences prefs = await SharedPreferences.getInstance();
 | 
						|
    _theme = value ? "dark" : "light";
 | 
						|
    prefs.setString(ASettings.theme, _theme);
 | 
						|
    notifyListeners();
 | 
						|
  }
 | 
						|
 | 
						|
  String _speechToText;
 | 
						|
 | 
						|
  String get speechToText => _speechToText;
 | 
						|
 | 
						|
  Future<void> setSpeechToText(String currentLanguage) async {
 | 
						|
    SharedPreferences prefs = await SharedPreferences.getInstance();
 | 
						|
    prefs.setString(ASettings.speechToText, currentLanguage);
 | 
						|
    _speechToText = currentLanguage;
 | 
						|
    notifyListeners();
 | 
						|
  }
 | 
						|
 | 
						|
  // call loadSharedPreferences when provider initialise
 | 
						|
  SettingProvider() {
 | 
						|
    loadSharedPreferences();
 | 
						|
  }
 | 
						|
 | 
						|
  LocalAuthentication auth = LocalAuthentication();
 | 
						|
 | 
						|
  // get app setting
 | 
						|
  Future<void> loadSharedPreferences() async {
 | 
						|
    SharedPreferences prefs = await SharedPreferences.getInstance();
 | 
						|
 | 
						|
    if (prefs.containsKey(ASettings.language)) {
 | 
						|
      _language = prefs.getString(ASettings.language);
 | 
						|
    } else {
 | 
						|
      _language = 'en';
 | 
						|
    }
 | 
						|
 | 
						|
    if (prefs.containsKey(ASettings.theme)) {
 | 
						|
      _theme = prefs.getString(ASettings.theme);
 | 
						|
    } else {
 | 
						|
      _theme = 'light';
 | 
						|
    }
 | 
						|
 | 
						|
    if (prefs.containsKey(ASettings.speechToText)) {
 | 
						|
      _speechToText = prefs.getString(ASettings.speechToText);
 | 
						|
    } else {
 | 
						|
      _speechToText = 'ar';
 | 
						|
    }
 | 
						|
 | 
						|
    if (prefs.containsKey(ASettings.user)) {
 | 
						|
      String userJson = prefs.getString(ASettings.user);
 | 
						|
      user = User.fromJson(json.decode(userJson));
 | 
						|
      selectAssetGroup(user);
 | 
						|
    }
 | 
						|
 | 
						|
    // if (prefs.containsKey(ASettings.assetGroup)) { //
 | 
						|
    //   String assetJson = prefs.getString(ASettings.assetGroup);
 | 
						|
    //   _assetGroup = AssetGroup.fromJson(json.decode(assetJson));
 | 
						|
    // }
 | 
						|
 | 
						|
    if (prefs.containsKey(ASettings.host)) {
 | 
						|
      _host = prefs.getString(ASettings.host);
 | 
						|
    } else {
 | 
						|
      _host = URLs.host1;
 | 
						|
    }
 | 
						|
 | 
						|
    isLoaded = true;
 | 
						|
    notifyListeners();
 | 
						|
  }
 | 
						|
}
 |