Как инициировать состояние переменной виджета со строкой Future во флаттере - PullRequest
0 голосов
/ 14 апреля 2020

Я должен инициализировать состояние переменной виджета значением, сохраненным в StoredProcedure.

void initState() {
  widget.query = fetchMake();
  super.initState();
}

Future<String> fetchMake() async{
  final prefs = await SharedPreferences.getInstance();
  return prefs.getString(key);
  query.toString();
}

Но проблема в том, что он не может присвоить это значение переменной запроса и отображает ошибку value to type future string cannot assign to string flutter

Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 14 апреля 2020

fetchMake asyn c, поэтому вы должны поместить await там, где вы вызываете этот метод, но он не будет работать, потому что вы вызываете его в initState.

Так что вам нужно присвоить значение переменной widget.query в только эта функция. Более того, когда вы получаете данные, вы должны вызывать setState, поэтому полученные вами данные отражаются в пользовательском интерфейсе.

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

String query;

void initState() {
  fetchMake();
  super.initState();
}

fetchMake() async{
  final prefs = await SharedPreferences.getInstance();
  setState((){
      query = prefs.getString(key) ?? 'default';
   });
 }
0 голосов
/ 14 апреля 2020

Вы можете попробовать:

  String query;

  void initState() {
    super.initState();
    fetchMake().then((value) {
      setState(() {
        query = value;
      });
    });
  }

  Future<String> fetchMake() async{
    final prefs = await SharedPreferences.getInstance();
    return prefs.getString(key);
  }

1, Вы не можете установить состояние с помощью widget.query .

2, Создать переменную query в состоянии Widget.

3, fetchMake - это асинхронная c функция =>, использующая затем для ожидания результата.

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