Использование пакета общих настроек для сохранения данных

#flutter #dart

#flutter #dart

Вопрос:

Я создаю относительно простое приложение, в котором можно установить экстренный контакт, и в случае чрезвычайной ситуации текст отправляется контакту нажатием кнопки дистанционного управления (подключенной через Bluetooth).) Я использовал средство выбора контактов пакета, и оно работает отлично. Теперь проблема в том, что я пытаюсь сохранить контакт локально при повторном запуске приложения. Строка set state возвращает ошибку, что я не могу установить для contact значение типа string .

 final ContactPicker _contactPicker = new ContactPicker();
Contact _contact;
@override
void initState() {
  getData();
}

getData() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  setState(() {
    _contact = prefs.getString(_contact.toString());
  });
}```
  

Ответ №1:

возможно, вам нужно декодировать эту строку из prefs , чтобы она могла быть преобразована в Contact экземпляре.

эта строка prefs.getString(_contact.toString()) возвращает строку в $fullName: $phoneNumber этом формате

например

 var decodedList = prefs.getString('contact').split(" ");
setState(() {
   _contact = Contact(fullName: decodedList.first, phoneNumber: decodedList[1]);
 });
  

Комментарии:

1. для сохранения данных вам необходимо вызвать await prefs.setString('contact', _contact.toString())