Ce que je veux faire, c'est charger une image dans un widget de matériau pour l'utiliser dans un ListTile, mais cet actif peut ne pas exister.
class MyImage extends StatelessWidget {
final imagePath;
MyIcon(String iconName) {
try { // check if imagePath exists. Here is the problem
imagePath = check('assets/$iconName.png/');
} catch (e, s) { // if not
imagePath = 'assets/$iconName.png/';
}
}
@override
Widget build(BuildContext context) {
return Material(...here I will load the imagePath...);
}
}
Donc, puisque j'utilise un widget Stateless, je dois savoir à l'avance si l'image existe, sinon je chargerai un droit nul?
Je suis assez nouveau sur Futter donc je ne sais pas si c'est une question évidente
Merci!
Afin de voir s'il existe ou non un fichier dans le stockage local interne de l'application, utilisez:
import 'Dart:io' as io;
// for a file
io.File(path).exists();
// for a directory
io.Directory(path).exists();
On dirait que vous voulez essayer de charger un ImageProvider
à partir d'un dossier où l'image peut ou non exister, puis, si ce n'est pas le cas, charger une image d'actif de secours (dont vous pouvez être sûr qu'elle existera au fur et à mesure que vous '' Je vais le mettre dans votre paquet racine).
Essaye ça:
ImageProvider getImageProvider(File f) {
return f.existsSync()
? FileImage(f)
: const AssetImage('images/fallback.png');
}