Bonjour,
J’utilise une base de donnée local pour mon app et je souhaite enregistrer des images (type image de profil).
J’utilise pour ça la lib image_picker. Tout fonctionne très bien sur l’émulateur Android par contre ça bug sur iOS :
Pour sauvegarder l’image j’utilise le path de l’image que je stock dans un string de mon objet.
Tout va bien pour sélectionner l’image, la faire apparaître, sauvegarder le path puis la conserver pendant que l’App tourne. Par contre si j’arrête l’application et que je relance la ça freeze. (Encore une fois que sur iOS, sur Android tout va bien)
J’ai bien mis les autorisations d’accès à la caméra et a la galerie d’images dans le info.plist. Et je sauvegarde les donnees de l’image en utilisant la localisation donnée par getApplicationDocumentsDirectory()
:
Future<File> saveImagePermanently(String imagePath) async {
final directory = await getApplicationDocumentsDirectory();
final name = basename(imagePath);
final image = File('${directory.path}/$name');
return File(imagePath).copy(image.path);
}
Pour le pick image voici le code :
Future pickImage() async {
try {
final image = await ImagePicker().pickImage(source: ImageSource.gallery);
if (image == null) {
return null;
}
final imagePermanent = await saveImagePermanently(image.path);
return imagePermanent.path;
} on PlatformException {
return null;
}
}
Et dans ma view voici le code qui retourne l’image :
Image get profilePic {
final MyObject? objectToCheck = object;
if (objectToCheck != null) {
_path = objectToCheck.profilePic;
}
const double sidesProfilePic = 130;
final String? imagePath = _path;
if (imagePath != null) {
return Image.file(
File(imagePath),
height: sidesProfilePic,
width: sidesProfilePic,
fit: BoxFit.cover,
);
} else {
return Image(
image: AssetImage(_fakePic),
height: sidesProfilePic,
width: sidesProfilePic,
fit: BoxFit.cover,
);
}
}
Est ce que ce problème rappelle quelque chose a quelqu’un ?