105 votes

Comment ajouter un paquet depuis GitHub dans Flutter ?

J'ai besoin d'utiliser le dernier code source d'un paquet et la dernière source n'a pas encore été publiée. Que dois-je écrire dans pubspec.yaml pour obtenir un paquet dans Github ?

Le code ci-dessous ne fonctionne pas. Il ne télécharge pas le paquet et je ne peux pas l'importer dans mon code source.

dependencies:
  flutter:
    sdk: flutter

  carousel_pro:
    git:
      url: https://github.com/jlouage/flutter-carousel-pro.git

1 votes

Est-ce que tu as couru flutter packages get ?

0 votes

@GünterZöchbauer, oui. Savez-vous quel doit être le chemin d'un paquet github ? L'importation par défaut ressemble à ceci : 'import 'package:flutter_redux/flutter_redux.dart';'. Peut-être existe-t-il un autre moyen d'importer un paquet de Github ?

0 votes

En .packages listes de fichiers flutter-carousel-pro ?

147voto

Kostya Vyrodov Points 385

Exemple de pubspec.yaml


Dépendance avec le spécifique branche :

dependencies:
  flutter:
    sdk: flutter

  carousel_pro:
    git:
      url: git://github.com/jlouage/flutter-carousel-pro.git
      ref: main # branch name

Dépendance avec le spécifique commettre :

dependencies:
  flutter:
    sdk: flutter

  carousel_pro:
    git:
      url: git://github.com/jlouage/flutter-carousel-pro.git
      ref: ea12e41 # commit hash

Exemple d'un fichier d'importation du paquet :

import 'package:carousel_pro/src/carousel_pro_widgets.dart';
import 'package:flutter/material.dart';

class NewsCarousel extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return SizedBox(
      height: 200.0,
      child: WidgetCarousel(
        autoplay: false,
        pages: [],
      ),
    );
  }
}

Note : Si votre IDE ne voit pas le paquet, essayez de le redémarrer.

0 votes

Existe-t-il un moyen d'utiliser une version spécifique d'une bibliothèque ?

1 votes

@Mehdico vous pouvez spécifier la version d'un paquet dont vous dépendez. Si vous posez des questions sur les paquets git, vous pouvez en savoir plus ici dart.dev/tools/pub/dependencies#git-packages

1 votes

Qu'en est-il des dépôts privés de Github ? Disons que je développe mon propre paquet et que je ne veux le publier nulle part, cela fonctionnera-t-il également ?

40voto

Rahul Dange Points 149

Les réponses ci-dessus sont correctes mais j'ai ajouté quelques exemples.

Donc pour utiliser pub/package/lib sans publier sur pub.dev :

1. Local - Enregistrer dans un dossier local

dependencies:
  library_name:
   path: /path/to/library_name

2. Hébergé - Poussé sur Github, Gitlab etc.

dependencies:
  library_name:
   git: https://github.com/username/library_name

Ou pour cibler la branche exacte

dependencies:
  library_name:
   git:
    url: https://github.com/username/library_name.git
    ref: dev    #branch name

Ou pour cibler l'engagement exact

dependencies:
  library_name:
   git:
    url: https://github.com/username/library_name.git
    ref: e234072340    #commit reference id

nom de la bibliothèque doit être le même que celui de ' nom déclaré dans le pubspec.yaml de ce pub.

25voto

Mohammed Noureldin Points 3029

Je vais montrer ce cas d'utilisation, où vous voulez accéder à un dossier spécifique dans une branche autre que main/master :

  amplify_flutter:
    git:
      url: git://github.com/aws-amplify/amplify-flutter.git
      ref: null-safety-master
      path: packages/amplify_flutter/

0 votes

Votre réponse a fonctionné pour moi. Je suis juste curieux de savoir ce qui se passe si nous voulons ajouter plusieurs dossiers spécifiques en utilisant ce paramètre 'path:'. Comment pouvons-nous y parvenir ?

0 votes

@UlaKasm Je n'ai pas essayé, donc je ne peux pas en être sûr.

15voto

Paresh Mangukiya Points 13942

Parfois, vous vivez à la pointe du progrès et devez utiliser des paquets qui n'ont pas encore été officiellement publiés. Il se peut que votre paquet lui-même soit encore en développement et qu'il utilise d'autres paquets qui sont développés en même temps. Pour faciliter cela, vous pouvez dépendre directement d'un paquet stocké dans un fichier Git dépôt.

dependencies:
  kittens:
    git: https://github.com/munificent/kittens.git

En git indique que ce paquet a été trouvé grâce à Git, et l'URL qui suit est l'URL Git qui peut être utilisée pour cloner le paquet.

Même si le repo du paquet est privé, si vous pouvez se connecter au dépôt en utilisant SSH vous pouvez alors dépendre du paquet en utilisant l'URL SSH du dépôt :

dependencies:
  kittens:
    git: git@github.com:munificent/kittens.git

Si vous voulez dépendre d'un commit, d'une branche ou d'une balise spécifique, ajoutez une balise ref argument :

dependencies:
  kittens:
    git:
      url: git@github.com:munificent/kittens.git
      ref: some-branch

La référence peut être n'importe quoi que Git permet de identifier un engagement .

Dépendance Git d'un paquet dans un dossier

L'outil pub suppose que le paquet est situé dans la racine du dépôt Git. Si ce n'est pas le cas, spécifiez l'emplacement avec l'argument path.pour spécifier un emplacement différent dans le dépôt, utilisez l'argument path argument : Par exemple :

dependencies:
  package1:
    git:
      url: git://github.com/flutter/packages.git
      path: packages/package1

Le chemin est relatif à la racine du repo Git.

Pour plus de détails, voir Dépendances des paquets .

2voto

Joe Muller Points 2242

Ce qui précède n'a pas fonctionné pour moi, mais changer l'url pour utiliser https a fonctionné :

dependencies:
  flutter:
    sdk: flutter

  flutter_tflite:
      git:
        url: https://github.com/qookit/flutter_tflite.git
        ref: main

"main" est le nom de la branche que je souhaitais utiliser.

La première fois que j'ai lancé 'flutter pub get', une fenêtre de navigateur s'est ouverte pour me demander mes informations d'identification git.

1 votes

Même chose ici, j'avais git:// avant et j'obtenais des erreurs disant qu'il ne pouvait pas trouver le dépôt. Quand je l'ai changé en https://, ça a bien fonctionné. J'ai dû accorder au code VS l'accès au dépôt, puis cela a fonctionné.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X