diff --git a/lib/controllers/providers/settings/app_settings.dart b/lib/controllers/providers/settings/app_settings.dart index 8b83c0c4..5251aaee 100644 --- a/lib/controllers/providers/settings/app_settings.dart +++ b/lib/controllers/providers/settings/app_settings.dart @@ -5,4 +5,7 @@ class ASettings { static final String language = "language"; static final String theme = "theme"; static final String speechToText = "speech_to_text"; + static final String rememberMe = "remember_me"; + static final String userName = "username"; + static final String password = "password"; } diff --git a/lib/controllers/providers/settings/setting_provider.dart b/lib/controllers/providers/settings/setting_provider.dart index 349da0b6..79439f9a 100644 --- a/lib/controllers/providers/settings/setting_provider.dart +++ b/lib/controllers/providers/settings/setting_provider.dart @@ -34,6 +34,14 @@ class SettingProvider extends ChangeNotifier { selectAssetGroup(user); } + Future setRememberMe(String username, String password, bool rememberMe) async { + this.rememberMe = rememberMe; + SharedPreferences prefs = await SharedPreferences.getInstance(); + await prefs.setBool(ASettings.rememberMe, rememberMe); + await prefs.setString(ASettings.userName, username); + await prefs.setString(ASettings.password, password); + } + void selectAssetGroup(User user) { if (user.assetGroups.length == 1) { _assetGroup = user.assetGroups.first; @@ -75,6 +83,10 @@ class SettingProvider extends ChangeNotifier { AssetGroup get assetGroup => _assetGroup; + bool rememberMe = false; + String username = ""; + String password = ""; + Future setLanguage(String currentLanguage) async { SharedPreferences prefs = await SharedPreferences.getInstance(); prefs.setString(ASettings.language, currentLanguage); @@ -139,6 +151,10 @@ class SettingProvider extends ChangeNotifier { selectAssetGroup(user); } + rememberMe = prefs.getBool(ASettings.rememberMe) ?? false; + username = prefs.getString(ASettings.userName) ?? ""; + password = prefs.getString(ASettings.password) ?? ""; + // if (prefs.containsKey(ASettings.assetGroup)) { // // String assetJson = prefs.getString(ASettings.assetGroup); // _assetGroup = AssetGroup.fromJson(json.decode(assetJson)); diff --git a/lib/new_views/pages/login_page.dart b/lib/new_views/pages/login_page.dart index 9d8e7abd..124ff5b0 100644 --- a/lib/new_views/pages/login_page.dart +++ b/lib/new_views/pages/login_page.dart @@ -30,10 +30,19 @@ class _LoginPageState extends State { SettingProvider _settingProvider; final GlobalKey _formKey = GlobalKey(); + bool rememberMe = false; + @override Widget build(BuildContext context) { _userProvider = Provider.of(context); - _settingProvider = Provider.of(context); + if (_settingProvider == null) { + _settingProvider = Provider.of(context); + rememberMe = _settingProvider.rememberMe; + if (rememberMe) { + _user.userName = _settingProvider.username; + _user.password = _settingProvider.password; + } + } return Form( key: _formKey, @@ -73,6 +82,20 @@ class _LoginPageState extends State { _user.password = value; }, ), + 8.height, + Row( + children: [ + Checkbox( + value: rememberMe, + activeColor: AppColor.blueStatus(context), + onChanged: (value) { + setState(() { + rememberMe = value; + }); + }), + "Remember Me".bodyText(context).custom(color: context.isDark ? AppColor.primary50 : AppColor.neutral50).expanded, + ], + ), 16.height, Align( alignment: AlignmentDirectional.centerEnd, @@ -98,7 +121,8 @@ class _LoginPageState extends State { _formKey.currentState.save(); int status = await _userProvider.login(context: context, user: _user); if (status >= 200 && status < 300 && _userProvider.user.isAuthenticated ?? false) { - _settingProvider.setUser(_userProvider.user); + await _settingProvider.setUser(_userProvider.user); + await _settingProvider.setRememberMe(_user.userName, _user.password, rememberMe); /// The below line for the new design // Navigator.pushNamed(context, LandPage.routeName);