Flutter: запрос AWS AppSync

#flutter #graphql #aws-appsync

#флаттер #graphql #aws-appsync

Вопрос:

Недавно я начал использовать AWS AppSync amp; Flutter. Мне немного сложно связать их друг с другом.

Я использую пакет graphql_flutter и не смог понять, как его использовать для запросов.

Вот мой фрагмент кода, о котором идет речь:

 final HttpLink httpLink = HttpLink(
              uri: 'https://myapi.xyz.com/graphql',
            );


            final AuthLink authLink = AuthLink(
              getToken: () async => 'Bearer ${globals.token}',  
            );

            final Link link = authLink.concat(httpLink);

            GraphQLClient client = GraphQLClient(link: link, cache: InMemoryCache());

            QueryOptions query = QueryOptions(documentNode: gql(queries.getAll));

            var result = await client.query(query);
  

Я получаю сообщение об ошибке ниже:

 Error: 'await' can only be used in 'async' or 'async*' methods.
            var result = await client.query(query);  
  

Как я могу заставить все это работать?

Ответ №1:

Вам необходимо использовать функцию Future при работе с асинхронными методами. Вы можете изменить свой метод следующим образом:

 
 Future<QueryResult> getRepositories(int numOfRepositories) async {
            final HttpLink httpLink = HttpLink(
              uri: 'https://myapi.xyz.com/graphql',
            );


            final AuthLink authLink = AuthLink(
              getToken: () async => 'Bearer ${globals.token}',  
            );

            final Link link = authLink.concat(httpLink);

            GraphQLClient client = GraphQLClient(link: link, cache: InMemoryCache());

            QueryOptions query = QueryOptions(documentNode: gql(queries.getAll));

            var result = await client.query(query);

           } 
    
  

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