Middle
Quali widget in Flutter garantiscono un layout adattivo?
sobes.tech AI
Risposta dell'AI
MediaQuery- per ottenere informazioni sulle dimensioni e sull'orientamento dello schermo.LayoutBuilder- per costruire widget in base ai vincoli dell'elemento genitore.OrientationBuilder- per costruire widget in base all'orientamento dello schermo.FractionallySizedBox- per creare elementi con dimensioni proporzionali allo spazio disponibile.AspectRatio- per mantenere un rapporto di aspetto specifico dell'elemento.ExpandedeFlexible- per distribuire lo spazio in modo flessibile tra gli elementi inRowoColumn.SingleChildScrollView- per scorrere il contenuto se supera l'area disponibile.ListVieweGridView- per visualizzare liste e griglie con capacità di adattamento.ResponsiveBuilder(dal pacchettoresponsive_framework) - per costruire widget in base ai punti di interruzione.FittedBox- per scalare il widget figlio in base alle dimensioni del genitore.
// Esempio di utilizzo di MediaQuery
class HomeScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
final Size screenSize = MediaQuery.of(context).size;
return Scaffold(
appBar: AppBar(
title: Text('Design reattivo'),
),
body: Center(
child: Text('Dimensione dello schermo: ${screenSize.width.toStringAsFixed(1)}x${screenSize.height.toStringAsFixed(1)}'),
),
);
}
}
// Esempio di utilizzo di LayoutBuilder
class AdaptiveContainer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
if (constraints.maxWidth > 600) {
// Schermo largo
return Container(
color: Colors.blue,
width: 300,
height: 100,
child: Center(child: Text('Largo')),
);
} else {
// Schermo stretto
return Container(
color: Colors.red,
width: 100,
height: 50,
child: Center(child: Text('Stretto')),
);
}
},
);
}
}
// Esempio di utilizzo di Expanded
class FlexibleLayout extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
children: <Widget>[
Container(
color: Colors.yellow,
width: 50,
height: 50,
),
Expanded( // Occuperà lo spazio rimanente
child: Container(
color: Colors.green,
height: 50,
),
),
],
);
}
}