Costruire l'interfaccia completa
Mettiamo insieme tutto in un'unica schermata con i pulsanti per le tre azioni e l'anteprima dell'immagine o del nome del file selezionato.
Usiamo un'anteprima condizionale: se è presente un'immagine la mostriamo, altrimenti mostriamo un placeholder.
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Upload media')),
body: Padding(
padding: const EdgeInsets.all(16),
child: Column(
children: [
if (_immagine != null)
Image.file(_immagine!, height: 200, fit: BoxFit.cover)
else
Container(
height: 200,
alignment: Alignment.center,
color: Colors.grey.shade200,
child: const Text('Nessuna immagine selezionata'),
),
const SizedBox(height: 16),
if (_nomeFile != null)
Text('File: $_nomeFile'),
const SizedBox(height: 16),
Wrap(
spacing: 12,
children: [
ElevatedButton.icon(
onPressed: _scegliDallaGalleria,
icon: const Icon(Icons.photo_library),
label: const Text('Galleria'),
),
ElevatedButton.icon(
onPressed: _scattaFoto,
icon: const Icon(Icons.camera_alt),
label: const Text('Fotocamera'),
),
ElevatedButton.icon(
onPressed: _scegliFile,
icon: const Icon(Icons.attach_file),
label: const Text('File'),
),
],
),
],
),
),
);
}
Risultato atteso
L'app mostra tre pulsanti funzionanti e visualizza l'anteprima dell'immagine o il nome del file selezionato.