Читать строку из общих настроек в флаттере - PullRequest
0 голосов
/ 31 мая 2019

Я сохранил две строки, используя общие настройки.Я хочу получить строки по отдельности и отобразить их в виде текстов.

Запись:

_nameSaver() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    prefs.setString('name', nameController.text);
    prefs.setString('school', schoolController.text);
  }

RaisedButton(onPressed: () => _nameSaver(),);

Читать:

  _nameRetriever() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    final name = prefs.getString('name') ?? '';
    final school = prefs.getString('school') ?? '';

    print(name);
    print(school);
  }

Я должен извлечь имя и школу изобщее предпочтение и отобразить его на плитке списка соответственно.Название для названия и подзаголовок для школы.Однако я не уверен, как извлечь его таким образом, используя метод await.

ListTile(title: Text("") 
         subtitle: Text(""),),

Ответы [ 2 ]

1 голос
/ 31 мая 2019

Сначала определите переменные для текстов

String nameText = '';
String schoolText = '';

Назначьте их виджетам

ListTile(title: Text(nameText) 
         subtitle: Text(schoolText),),

Теперь при чтении из функции sharedpref установите эти

 _nameRetriever() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();

setState(){
 nameText = prefs.getString('name') ?? '';
 schoolText = prefs.getString('school') ?? '';
}

    print(targetPrice);
    print(instrumentPair);
  }

РЕДАКТИРОВАТЬ

Это просто чтобы продемонстрировать, как это работает.Я сделал функцию сохранения будущей функцией, просто чтобы убедиться, что я прочитал после сохранения .. Это не нужно, если вы делаете сохранение и чтение одновременно

class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  @override
  void initState() {
    super.initState();
    _nameSaver().then((_) {
      _nameRetriever();
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(body: Container());
  }

  Future<String> _nameSaver() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    prefs.setString('name2', 'asdsadasd');
    prefs.setString('school2', 'asdasdas');
    return 'saved';
  }

  _nameRetriever() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    final name = prefs.getString('name2') ?? '';
    final school = prefs.getString('school2') ?? '';

    print(name);
    print(school);
  }
}

0 голосов
/ 31 мая 2019

Может считывать значение с преф. как -

getPref('name');

Используя этот метод-

 getPref(String key) async {
        SharedPreferences prefs = await SharedPreferences.getInstance();
        String auth = prefs.getString(key);
     }

работал для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...