Saltar al contenido

Imagen de carga de Flutter desde Firebase Storage

Solución:

Consola de Firebase

Para ver las imágenes dentro de su almacenamiento, lo que necesita es el nombre del archivo en el almacenamiento. Una vez que tenga el nombre de archivo para la imagen específica que necesita. En mi caso, si quiero que se cargue la imagen de prueba,

final ref = FirebaseStorage.instance.ref().child('testimage');
// no need of the file extension, the name will do fine.
var url = await ref.getDownloadURL();
print(url);

Una vez que tenga la URL,

Image.network(url);

Eso es todo 🙂

actualizar

En versiones más recientes, use

await ref.getDownloadURL();

Consulte ¿Cómo obtener la URL de descarga completa de UploadTaskSnapshot en Flutter?

original

someMethod() async {
  var data = await FirebaseStorage.instance.ref().child("foo$rand.txt").getData();
  var text = new String.fromCharCodes(data);
  print(data);
}

ver Descargar una imagen de Firebase a Flutter

o

final uploadTask = imageStore.putFile(imageFile);
final url = (await uploadTask.future).downloadUrl;

En el último caso, necesitaría almacenar el downloadUrl en algún lugar y luego usar NetworkImage o similar para renderizarlo.

A continuación, se muestra un ejemplo de un widget con estado que carga una imagen del objeto Firebase Storage y crea un objeto Image:

class _MyHomePageState extends State<MyHomePage> {

  final FirebaseStorage storage = FirebaseStorage(
      app: Firestore.instance.app,
      storageBucket: 'gs://my-project.appspot.com');

  Uint8List imageBytes;
  String errorMsg;

  _MyHomePageState() {
      storage.ref().child('selfies/me2.jpg').getData(10000000).then((data) =>
                setState(() {
                  imageBytes = data;
                })
        ).catchError((e) =>
                setState(() {
                  errorMsg = e.error;
                })
        );
  }

  @override
  Widget build(BuildContext context) {
    var img = imageBytes != null ? Image.memory(
        imageBytes,
        fit: BoxFit.cover,
      ) : Text(errorMsg != null ? errorMsg : "Loading...");

    return new Scaffold(
        appBar: new AppBar(
          title: new Text(widget.title),
        ),
        body: new ListView(
          children: <Widget>[
            img,
          ],
        ));
  }
}

Tenga en cuenta que FirebaseApp la inicialización es manejada por el Firestore class, por lo que no es necesario ningún código de inicialización adicional.

¡Haz clic para puntuar esta entrada!
(Votos: 1 Promedio: 3)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *