Каждая система предполагает механизм настроек пользователя, которые можно сохранять для последующего использования. Например, на Android это объект Preference, в iOS это объект CFPreferences, а в Windows 10 настройки доступны через объект ApplicationData. В Xamarin Forms для работы с настройками мы можем использовать функциональность из пакета Xamarin Essentials, который добавляется в проект Xamarin Forms по умолчанию.
Применять плагин довольно просто. Все настройки доступны через свойство Preferences, который предоставляет для работы с настройками следующие методы:
void Set(key, value): сохранение значения value по ключу key
string Get(key, defaultValue): получение значения по ключу key. Если же настроек с таким ключом нет, то возвращается значение по умолчанию - defaultValue
void Remove(key): удаляет настройку с ключом key
void Clear(): удаляет все настройки
bool ContainsKey(key): возвращает true, если имеется настройка с ключом key
Например, для сохранения применяется
метод Set()
:
// сохраняем значение Tom по ключу name Preferences.Set("name", "Tom");
Получение сохраненного значения по ключу:
string name = Preferences.Get("name"); // если объекта нет используем значение по умолчанию - "не известно" string name2 = Preferences.Get("name", "не известно");
Удаление:
Preferences.Remove("name");
Для примера определим на странице текстовое поле для ввода, кнопку для сохранения введенного значения в настройках и метку для вывода из настроек:
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="HelloApp.MainPage"> <StackLayout> <Label x:Name="nameLabel" /> <Entry x:Name="nameBox" /> <Button Text="Сохранить" Clicked="OnClick" /> </StackLayout> </ContentPage>
В файле кода страницы пропишем получение и сохранение данных в настройках:
using Xamarin.Forms; using System; using Xamarin.Essentials; namespace HelloApp { public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); } protected override void OnAppearing() { string name = Preferences.Get("name", "не установлено"); nameLabel.Text = name; base.OnAppearing(); } private void OnClick(object sender, EventArgs e) { string value = nameBox.Text; nameLabel.Text = value; Preferences.Set("name", value); } } }
При первой загрузке приложения, когда настройки еще не установлены, метка будет выводить значение по умолчанию. После установки значения метка будет брать это значение из настроек: