Member 10850253 Ответов: 1

Получить список строк из sharedpreferences


Я пытаюсь получить список из sharedpreferences и получить доступ к методам списка. Я сделал класс для sharedpreferences, но при этом получаю ошибку:
sharedpreferences().getnom.length;
//or
sharedpreferences().getnom[index];
//errors
//The getter 'length' isn't defined for the class 'Future<List<String>>'.
//Error: The operator '[]' isn't defined for the class 'Future<List<String>>'.


Что я уже пробовал:

class sharedprefernces {
  List<String> _depto = [];
  List<String> _mun = [];
  List<String> _com = [];
  List<String> _nom = [];
  List<String> _peso = [];
  List<String> _qq = [];
  List<String> _varie = [];
  List<String> _date = [];
  List<String> _est = [];

  Future<List<String>> getnom() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  return prefs.getStringList('nom');
  }
}

1 Ответов

Рейтинг:
0

Richard MacCutchan

//The getter 'length' isn't defined for the class 'Future<List<String>>'.
//Error: The operator '[]' isn't defined for the class 'Future<List<String>>'.

Сообщения совершенно ясны. Ваш sharedprefernces класс не имеет а length свойство, или индексатор. Вам нужно добавить их в свой класс или унаследовать от класса, который их предоставляет.


Member 10850253

Пожалуйста, скажите мне, как я могу это сделать?
Я думал, что с помощью моего геттера я получу фактический список и смогу использовать все свойства списка.
Пожалуйста, помогите мне найти решение.
Спасибо.

Richard MacCutchan

Вам нужно написать правильный метод геттера (следуя стандартным правилам) или индексатор. Если вы не понимаете, как это сделать, то посмотрите документацию по C# : Использование Свойств - Руководство По Программированию На C# | Microsoft Docs[^] и Индексаторы - Руководство По Программированию На C# | Microsoft Docs[^].

Member 10850253

Из того, что я понимаю, я должен быть в состоянии использовать индексатор с геттером, так как я возвращаю список. Я проверил ссылку, которую вы мне дали, но до сих пор не понимаю, как это сделать. Я был бы очень признателен, если бы вы могли привести мне пример того, как это сделать, в flutter.
Спасибо за вашу помощь.

Richard MacCutchan

Извините, я понятия не имею, что такое флаттер. Кроме того, мои извинения, но я дал вам ссылки на код C# вместо Java; хотя приведенный выше код не похож на Java.