Как я могу передать переменную из Future <String>void во Flutter? - PullRequest
0 голосов
/ 04 мая 2020

Я использую SharedPreferences, я сделал простой хранитель и получатель, но я хочу загрузить свою переменную name при открытии приложения с помощью initState:

data - строка с заполнителем

Saver

Future<String> saveNamePreference(String name) async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  prefs.setString('name', name);

  print(name);
  return prefs.getString(name);
}

Получатель

Future<String> getNamePreference() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  final name = prefs.getString('name');

  return name.toString();
}

Void initState

  @override
  void initState() async {
    super.initState();
    await getNamePreference();
    setState(() {
      data = name;
    });
  }

1 Ответ

1 голос
/ 04 мая 2020

Вы должны использовать метод then для этого, потому что инициализация завершена, пока данные не поступят из асинхронного c метода.

@override
  void initState() {
    super.initState();
    getNamePreference().then((name){
       setState(() {
           data = name;
       });
    }); 
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...