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.
cloudsolutions-atoms/lib/controllers/providers/settings/setting_provider.dart

101 lines
2.5 KiB
Dart

3 years ago
import 'dart:async';
import 'dart:convert';
import 'package:flutter/foundation.dart';
import 'package:shared_preferences/shared_preferences.dart';
3 years ago
import '../../../models/user.dart';
import '../../api_routes/urls.dart';
import 'app_settings.dart';
3 years ago
3 years ago
class SettingProvider extends ChangeNotifier {
3 years ago
resetSettings() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
user = null;
prefs.remove(ASettings.user);
notifyListeners();
}
// check if setting loaded or not
bool isLoaded = false;
// contain saved user data
3 years ago
User? user;
3 years ago
Future<void> setUser(User user) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString(ASettings.user, json.encode(user.toJson()));
this.user = user;
notifyListeners();
}
3 years ago
String? _host;
String? get host => _host;
3 years ago
Future<void> setHost(String host) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString(ASettings.host, host);
_host = host;
notifyListeners();
}
3 years ago
String? _language;
String? get language => _language;
3 years ago
Future<void> setLanguage(String currentLanguage) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString(ASettings.language, currentLanguage);
_language = currentLanguage;
notifyListeners();
}
3 years ago
String? _speechToText;
String? get speechToText => _speechToText;
3 years ago
Future<void> setSpeechToText(String currentLanguage) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString(ASettings.speechToText, currentLanguage);
_speechToText = currentLanguage;
notifyListeners();
}
// call loadSharedPreferences when provider initialise
3 years ago
SettingProvider() {
3 years ago
loadSharedPreferences();
}
// get app setting
Future<void> loadSharedPreferences() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
3 years ago
if (prefs.containsKey(ASettings.language)) {
3 years ago
_language = prefs.getString(ASettings.language);
3 years ago
} else {
_language = 'en';
3 years ago
}
3 years ago
if (prefs.containsKey(ASettings.speechToText)) {
3 years ago
_speechToText = prefs.getString(ASettings.speechToText);
3 years ago
} else {
_speechToText = 'ar';
3 years ago
}
3 years ago
if (prefs.containsKey(ASettings.user)) {
String? userJson = prefs.getString(ASettings.user);
user = User.fromJson(json.decode(userJson ?? ''));
3 years ago
}
3 years ago
if (prefs.containsKey(ASettings.host)) {
3 years ago
_host = prefs.getString(ASettings.host);
3 years ago
} else {
3 years ago
_host = URLs.host1;
}
isLoaded = true;
notifyListeners();
}
3 years ago
}