Je vois qu'il y a beaucoup d'exemples sur la façon de télécharger une image en utilisant le scintillement vers le stockage firebase, mais rien sur le téléchargement/la lecture/l'affichage d'une image déjà téléchargée.
Sous Android, j’ai simplement utilisé Glide
pour afficher les images, comment puis-je le faire dans Flutter? Est-ce que j'utilise la classe NetworkImage
et si oui, comment puis-je obtenir d'abord l'URL de l'image stockée dans Storage?
Pour voir les images dans votre stockage, vous avez besoin du nom du fichier dans le stockage. Une fois que vous avez le nom de fichier de l’image spécifique dont vous avez besoin .
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);
Une fois que vous avez l'URL,
Image.network(url);
C'est tout :)
Voici un exemple de widget avec état qui charge une image à partir d'un objet Firebase Storage et crée un objet 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,
],
));
}
}
Notez que l'initialisation FirebaseApp
est gérée par la classe Firestore
; aucun autre code d'initialisation n'est donc nécessaire.