Aller au contenu principal

À propos de la génération de code

La génération de code est l'idée d'utiliser un outil pour générer du code à notre place.
Dans Dart, elle présente l'inconvénient de nécessiter une étape supplémentaire pour "compiler" une application. Bien que ce problème puisse être résolu dans un avenir proche, puisque l'équipe de Dart travaille sur une solution potentielle à ce problème.

Dans le contexte de Riverpod, la génération de code consiste à modifier légèrement la syntaxe pour définir un "provider". Par exemple, au lieu de :

final fetchUserProvider = FutureProvider.autoDispose.family<User, String>((ref, userId) async {
final json = await http.get('api/user/$userId');
return User.fromJson(json);
});

En utilisant la génération de code, nous écririons :


Future<User> fetchUser(FetchUserRef ref, {required int userId}) async {
final json = await http.get('api/user/$userId');
return User.fromJson(json);
}

Lorsque vous utilisez Riverpod, la génération de code est totalement facultative. Il est tout à fait possible d'utiliser Riverpod sans. En même temps, Riverpod adopte la génération de code et recommande de l'utiliser.

Pour plus d'informations sur la manière d'installer et d'utiliser le générateur de code de Riverpod, reportez-vous à la page Débuter. Assurez-vous d'activer la génération de code dans la barre latérale de la documentation.

Pourquoi utiliser la génération de code avec Riverpod ?

Vous vous demandez peut-être : "Si la génération de code est facultative dans Riverpod, pourquoi l'utiliser ?"

Comme toujours avec les packages : Pour vous faciliter la vie. Ceci inclut, mais n'est pas limité à :

  • meilleure syntaxe, plus lisible/flexible et avec une courbe d'apprentissage réduite.

    • Plus besoin de se préoccuper de FutureProvider ou de Provider, etc. Ecrivez votre logique, et Riverpod choisira le provider le plus approprié pour vous.
    • Le passage de paramètres aux providers est maintenant sans restriction. Au lieu d'être limité à l'utilisation de family et le passage d'un seul paramètre positionnel, vous pouvez maintenant passer n'importe quelle forme de paramètre. Cela inclut les paramètres nommés, les paramètres optionnels, et même des valeurs par défaut.
  • rechargement à chaud avec état du code écrit dans Riverpod.

  • un meilleur débogage, grâce à la génération de métadonnées supplémentaires que le débogueur récupère ensuite.

  • certaines fonctionnalités de Riverpod ne seront disponibles qu'avec la génération de code.

En même temps, de nombreuses applications utilisent déjà la génération de code avec des paquets tels que Freezed ou json_serializable. Dans ce cas, votre projet est probablement déjà configuré pour la génération de code, et son utilisation pour Riverpod devrait être simple.