Solución:
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.