Xamarin.forms

时间:2017-04-19 15:03:32

标签: xamarin xamarin.forms sharedpreferences

如果用户使用

登录了一次,我尝试将登录值保存为true
Application.Current.Properties["isLoggedIn"] = "true";

但它不起作用。如果我从后台删除我的应用程序,它会再次显示登录页面,但如果用户已登录,则应显示下一页。

2 个答案:

答案 0 :(得分:3)

使用“应用程序属性字典”时,您必须记住以下几点:

  • 根据官方文档:'属性字典自动保存到设备'。但是,如果要确保持久性,则必须明确调用SavePropertiesAsync()
  • “属性”字典只能序列化基本类型以进行存储。尝试存储其他类型(如List)可能会无声地失败。

仔细阅读official documentation并注意细节。

这是一个代码示例:

private async Task SaveApplicationProperty<T>(string key, T value)
{
    Xamarin.Forms.Application.Current.Properties[key] = value;
    await Xamarin.Forms.Application.Current.SavePropertiesAsync();
}

private T LoadApplicationProperty<T>(string key)
{
    return (T) Xamarin.Forms.Application.Current.Properties[key];
}

// To save your property
await SaveApplicationProperty("isLoggedIn", true);

// To load your property
bool isLoggedIn = LoadApplicationProperty<bool>("isLoggedIn");

根据您的需求,您可以考虑使用Local DatabaseSettings Plugin。然而,为了节省一些原始值Application Properties,方法应该足够好。

答案 1 :(得分:0)

Xamarin Forms现在包括Xamarin Forms Essentials,并包含您需要的Preferences组件。查看官方网站并尝试。 https://docs.microsoft.com/en-us/xamarin/essentials/preferences?tabs=ios

这是一个如何使用Essentials管理首选项的示例。

  • 要在首选项中保存给定键的值:

    Preferences.Set("my_key", "my_value");

  • 要从首选项或默认值(如果未设置)中检索值:

    var myValue = Preferences.Get("my_key", "default_value");

  • 要从首选项中删除密钥:

    Preferences.Remove("my_key");

  • 要删除所有首选项:

    Preferences.Clear();

支持的数据类型:

  • 布尔

  • double

  • int

  • 浮动

  • 字符串

  • DateTime