Il LayoutBuilder è un widget di Flutter che consente di creare layout flessibili e reattivi. Viene utilizzato per ottenere informazioni sulle dimensioni del widget padre e quindi adattare il layout in base a queste dimensioni. Questo è particolarmente utile quando si desidera creare interfacce utente che si adattino dinamicamente a diverse dimensioni dello schermo o a cambiamenti di orientamento.
Come funziona il LayoutBuilder?
- Contesto: Il
LayoutBuilderfornisce un oggettoBoxConstraints, che contiene informazioni sui limiti di larghezza e altezza che il widget può utilizzare. Con queste informazioni, si può decidere come disporre i widget figli. - Adattabilità: Consente di creare layout che cambiano in base allo spazio disponibile, ad esempio, un layout che mostra una colonna di elementi in modalità ritratto e una riga in modalità paesaggio.
Esempio di utilizzo:
dartCopia codiceLayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
if (constraints.maxWidth > 600) {
// Schermo ampio, usa un layout in riga
return Row(
children: [
Expanded(child: Text('Colonna 1')),
Expanded(child: Text('Colonna 2')),
],
);
} else {
// Schermo stretto, usa un layout in colonna
return Column(
children: [
Text('Colonna 1'),
Text('Colonna 2'),
],
);
}
},
)
Casi d’uso comuni:
(es. tablet).
- Supporto a orientamenti diversi: Modificare il layout quando il dispositivo passa da ritratto a paesaggio.
- Interfacce complesse: Creare layout che reagiscono a modifiche dinamiche dello spazio disponibile, come finestre ridimensionabili o pannelli espandibili.
Vantaggi:
- Flessibilità: Consente di scrivere layout più intelligenti che si adattano dinamicamente.
- Controllo completo: Permette di gestire scenari complessi in cui un semplice uso di
MediaQueryo altri widget di layout non sarebbe sufficiente. - Ottimizzazione: Evita il rendering di widget non necessari quando lo spazio è limitato.
In sintesi, il LayoutBuilder è uno strumento potente in Flutter per la creazione di layout reattivi e flessibili, adattabili a una vasta gamma di scenari.