2 votes

Téléchargement d'une image de flutter vers firebase (rien ne se passe)

J'ai essayé de télécharger l'image de flutter vers le stockage firebase mais lorsque j'essaie de le faire, rien ne change. J'ai établi une connexion entre firebase et flutter et lorsque j'exécute le code, cette erreur apparaît : [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: [core/no-app] No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp() . De plus, lorsque j'exécute le code, la méthode showDialog ne se déclenche pas (il s'agit d'un écran popup). Merci d'avance :)

  class _MyHomePageState extends State<MyHomePage> {
      Future <File> file;
    //final storage = FirebaseStorage.instance;
     openGatePhoto() async{
    final file = await ImagePicker.pickImage(source: ImageSource.gallery);
    var reference = FirebaseStorage.instance.ref().child('last_image/car5');
    await reference.putFile(file);
    //var snapshot = await storage.ref().child('last_image/car5.png').putFile(file).onComplete;
    showDialog(
            context: context,
            builder: (context) => CustomDialogOpen(
                  title: "Gates are open",
                  description:
                      "Licence plate numbers have been successfully stored in the database",
                ));

J'ai essayé de corriger le code comme @jitesh l'a mentionné mais toujours la même erreur, le code :

 final file = await ImagePicker.pickImage(source: ImageSource.gallery);
    Reference reference =
        FirebaseStorage.instance.ref().child('last_image/car5');
    FirebaseStorage storage = FirebaseStorage.instance;
    UploadTask uploadTask = reference.putFile(file);
    uploadTask.then((res) {
      res.ref.getDownloadURL().then(
            (value) => print("Done: $value"),
          );
    });

1voto

jitesh mohite Points 3119

Utilisation StorageTaskSnapshot et attendez que le téléchargement soit terminé, le reste du code est explicite.

Future uploadImageToFirebase(BuildContext context) async {
        final file = await ImagePicker.pickImage(source: ImageSource.gallery);
        var reference = FirebaseStorage.instance.ref().child('last_image/car5');
        StorageUploadTask uploadTask = reference.putFile(file);
        StorageTaskSnapshot taskSnapshot = await uploadTask.onComplete;
        taskSnapshot.ref.getDownloadURL().then(
              (value) => print("Done: $value"),
            );
      }

De plus, il semble que vous n'ayez pas initialisé firebase, ajoutez le code ci-dessous dans le widget de base

@override
  void initState() {
    super.initState();
    setUpFirebase();
  }

  void setUpFirebase() async {
    await Firebase.initializeApp();
  }

pour la nouvelle ImagePicker L'API obtient un fichier comme celui-ci

        final picker = ImagePicker();
        final pickedFile = await picker.getImage(source: ImageSource. gallery);
        File image = new File(pickedFile.path);

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