как использовать мой асинхронный вызов (Future) в качестве строковой переменной для моих запросов

#flutter

#flutter

Вопрос:

Я должен получить accountId . Это строка, которая извлекается с помощью асинхронного вызова. Эта строка используется для многочисленных вызовов ( GraphQL ). После входа в систему я могу получить userId из Auth объекта и с помощью этого я могу выполнить асинхронный вызов getAcocountIdFromUserId() . В настоящее время я сохраняю accountId в локальном хранилище. Но для этого все еще требуется асинхронный вызов (возвращает future). У моего клиента graphql есть свойство, которое может принимать строку (то есть идентификатор учетной записи). Я не хочу использовать Futurebuilder виджет, потому что идентификатор учетной записи не имеет ничего общего с пользовательским интерфейсом. В идеале я хотел бы добавить accountId к моим запросам graphql (поскольку большинство из них принимают AccountId в качестве параметра) в моем разделе обслуживания. Но опять же, для этого требуется строка, а не будущее… Как я мог бы добавить AccountId в качестве параметра в мой класс запросов:

  class GraphQueries{
******************************************************************************************
//Would like to have my `accountId here as a string!! Have it stored in local storage....
    
     static String getLearnBundlesForAccount = """query MyQuery($accountId: String!) {
      getLearnBundlesForAccount(accountId: $accountId) {
        courses
        description
        id
      }
    }""";
    
     static String fetchMissingConsignments = """ query MyQuery($accountId: String!) {
      getCountMissingConsignmentNotes(accountId: $accountId)
    }""";
    }
  

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

1. Если у вас есть функция, которая возвращает Future<String>, и вы не хотите использовать FutureBuilder для извлечения строки, тогда просто используйте ключевое слово await для извлечения идентификатора учетной записи. Пожалуйста, объясните мне, если я неправильно понял ваш вопрос.

Ответ №1:

Если вы хотите использовать значение Future, просто вызовите его с помощью ключевого слова await .

 accountId = await getAcocountIdFromUserId();