Middle
Ktoré widgety vo Flutteri zabezpečujú responzívne rozloženie?
sobes.tech AI
Odpoveď od AI
MediaQuery- na získanie informácií o veľkosti a orientácii obrazovky.LayoutBuilder- na zostavenie widgetov v závislosti od obmedzení rodičovského prvku.OrientationBuilder- na zostavenie widgetov v závislosti od orientácie obrazovky.FractionallySizedBox- na vytvorenie prvkov s veľkosťou proporcionálnou dostupnému priestoru.AspectRatio- na udržiavanie zadaného pomeru strán prvku.ExpandedaFlexible- na flexibilné rozdeľovanie priestoru medzi prvkami vRowaleboColumn.SingleChildScrollView- na posúvanie obsahu, ak presahuje dostupnú oblasť.ListViewaGridView- na zobrazovanie zoznamov a sietí s možnosťou prispôsobenia.ResponsiveBuilder(z balíkaresponsive_framework) - na zostavenie widgetov v závislosti od breakpointov.FittedBox- na škálovanie podriadeného widgetu v súlade s veľkosťou rodiča.
// Príklad použitia MediaQuery
class HomeScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
final Size screenSize = MediaQuery.of(context).size;
return Scaffold(
appBar: AppBar(
title: Text('Responzívny dizajn'),
),
body: Center(
child: Text('Veľkosť obrazovky: ${screenSize.width.toStringAsFixed(1)}x${screenSize.height.toStringAsFixed(1)}'),
),
);
}
}
// Príklad použitia LayoutBuilder
class AdaptiveContainer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
if (constraints.maxWidth > 600) {
// Široká obrazovka
return Container(
color: Colors.blue,
width: 300,
height: 100,
child: Center(child: Text('Široký')),
);
} else {
// Úzka obrazovka
return Container(
color: Colors.red,
width: 100,
height: 50,
child: Center(child: Text('Úzky')),
);
}
},
);
}
}
// Príklad použitia Expanded
class FlexibleLayout extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
children: <Widget>[
Container(
color: Colors.yellow,
width: 50,
height: 50,
),
Expanded( // zaberie zostávajúci priestor
child: Container(
color: Colors.green,
height: 50,
),
),
],
);
}
}