Middle
Welche Widgets in Flutter bieten ein anpassungsfähiges Layout?
sobes.tech KI
Antwort von AI
MediaQuery- um zur Abfrage von Informationen über die Größe und Ausrichtung des Bildschirms.LayoutBuilder- zum Erstellen von Widgets basierend auf den Einschränkungen des übergeordneten Elements.OrientationBuilder- zum Erstellen von Widgets basierend auf der Ausrichtung des Bildschirms.FractionallySizedBox- zum Erstellen von Elementen mit einer Größe, die proportional zum verfügbaren Raum ist.AspectRatio- zum Beibehalten eines bestimmten Seitenverhältnisses des Elements.ExpandedundFlexible- zum flexiblen Verteilen des Raums zwischen Elementen inRowoderColumn.SingleChildScrollView- zum Scrollen des Inhalts, wenn dieser den verfügbaren Bereich überschreitet.ListViewundGridView- zum Anzeigen von Listen und Gittern mit Anpassungsfähigkeit.ResponsiveBuilder(aus dem Paketresponsive_framework) - zum Erstellen von Widgets basierend auf Breakpoints.FittedBox- zum Skalieren des Kind-Widgets entsprechend der Größe des Elternteils.
// Beispiel für die Verwendung von MediaQuery
class HomeScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
final Size screenSize = MediaQuery.of(context).size;
return Scaffold(
appBar: AppBar(
title: Text('Anpassbares Design'),
),
body: Center(
child: Text('Bildschirmgröße: ${screenSize.width.toStringAsFixed(1)}x${screenSize.height.toStringAsFixed(1)}'),
),
);
}
}
// Beispiel für die Verwendung von LayoutBuilder
class AdaptiveContainer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
if (constraints.maxWidth > 600) {
// Breiter Bildschirm
return Container(
color: Colors.blue,
width: 300,
height: 100,
child: Center(child: Text('Breit')),
);
} else {
// Schmaler Bildschirm
return Container(
color: Colors.red,
width: 100,
height: 50,
child: Center(child: Text('Schmal')),
);
}
},
);
}
}
// Beispiel für die Verwendung von Expanded
class FlexibleLayout extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
children: <Widget>[
Container(
color: Colors.yellow,
width: 50,
height: 50,
),
Expanded( // Nimmt den verbleibenden Raum ein
child: Container(
color: Colors.green,
height: 50,
),
),
],
);
}
}