Middle
Welke widgets in Flutter bieden een responsief ontwerp?
sobes.tech AI
Antwoord van AI
MediaQuery- om informatie te verkrijgen over de grootte en oriëntatie van het scherm.LayoutBuilder- voor het bouwen van widgets op basis van de beperkingen van het ouder-element.OrientationBuilder- voor het bouwen van widgets op basis van de schermoriëntatie.FractionallySizedBox- voor het maken van elementen met een grootte die proportioneel is aan de beschikbare ruimte.AspectRatio- voor het behouden van een bepaalde beeldverhouding van het element.ExpandedenFlexible- voor het flexibel verdelen van ruimte tussen elementen inRowofColumn.SingleChildScrollView- voor het scrollen van inhoud die de beschikbare ruimte overschrijdt.ListViewenGridView- voor het weergeven van lijsten en rasterweergaven met aanpassingsvermogen.ResponsiveBuilder(uit hetresponsive_frameworkpakket) - voor het bouwen van widgets op basis van breekpunten.FittedBox- voor het schalen van het kindwidget volgens de grootte van de ouder.
// Voorbeeld van gebruik van MediaQuery
class HomeScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
final Size screenSize = MediaQuery.of(context).size;
return Scaffold(
appBar: AppBar(
title: Text('Aanpasbaar ontwerp'),
),
body: Center(
child: Text('Schermgrootte: ${screenSize.width.toStringAsFixed(1)}x${screenSize.height.toStringAsFixed(1)}'),
),
);
}
}
// Voorbeeld van gebruik van LayoutBuilder
class AdaptiveContainer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
if (constraints.maxWidth > 600) {
// Brede scherm
return Container(
color: Colors.blue,
width: 300,
height: 100,
child: Center(child: Text('Breed')),
);
} else {
// Smalle scherm
return Container(
color: Colors.red,
width: 100,
height: 50,
child: Center(child: Text('Smal')),
);
}
},
);
}
}
// Voorbeeld van gebruik van Expanded
class FlexibleLayout extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
children: <Widget>[
Container(
color: Colors.yellow,
width: 50,
height: 50,
),
Expanded( // neemt de resterende ruimte in
child: Container(
color: Colors.green,
height: 50,
),
),
],
);
}
}