Pubblicità

LayoutBuilder

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 LayoutBuilder fornisce un oggetto BoxConstraints, 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 MediaQuery o 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.