Creare un client GraphQL in Dart

Mattepuffo's logo
Creare un client GraphQL in Dart

Creare un client GraphQL in Dart

In questo articolo vediamo come creare un semplice client GraphQL in Dart.

Come "server" useremo QraphQLPlaceholder.

Prima di tutto installiamo le libreria:

dart pub add graphql

Qui sotto un pò di codice; ho messo tutto insieme per comodità:

import 'package:graphql/client.dart';

class User {
  final int id;
  final String name;
  final String email;

  User({required this.id, required this.name, required this.email});

  factory User.fromJson(Map<String, dynamic> json) {
    return User(
      id: int.parse(json['id'].toString()),
      name: json['name'] as String,
      email: json['email'] as String,
    );
  }
}

void main() async {
  final HttpLink httpLink = HttpLink(
    'https://graphqlplaceholder.vercel.app/graphql',
  );

  final GraphQLClient client = GraphQLClient(
    link: httpLink,
    cache: GraphQLCache(),
  );

  const String queryListaUtenti = r'''
    query ListaUtenti {
      users {
        id
        name
        email
      }
    }
  ''';

  final QueryOptions options = QueryOptions(document: gql(queryListaUtenti));

  print('Invio della query GraphQL in Dart...');

  try {
    final QueryResult result = await client.query(options);

    if (result.hasException) {
      print('Errore: ${result.exception.toString()}');
      return;
    }

    final List<dynamic> usersJson = result.data?['users'] ?? [];

    final List<User> users = usersJson
        .map((json) => User.fromJson(json as Map<String, dynamic>))
        .toList();

    print('n--- Dati Lista Utenti (${users.length} risultati) ---');

    for (var user in users) {
      print('ID: ${user.id}, Nome: ${user.name}, Email: ${user.email}');
    }

    print('--------------------------------------------------n');
  } catch (e) {
    print('Errore imprevisto: $e');
  }
}

Enjoy!


Condividi

Commentami!