Middle
Které widgety ve Flutteru zajišťují responzivní rozložení?
sobes.tech AI
Odpověď od AI
MediaQuery- pro získání informací o velikosti a orientaci obrazovky.LayoutBuilder- pro tvorbu widgetů na základě omezení rodičovského prvku.OrientationBuilder- pro tvorbu widgetů na základě orientace obrazovky.FractionallySizedBox- pro vytváření prvků s velikostí úměrnou dostupnému prostoru.AspectRatio- pro udržení daného poměru stran prvku.ExpandedaFlexible- pro flexibilní rozdělení prostoru mezi prvky vRowneboColumn.SingleChildScrollView- pro posouvání obsahu, pokud přesahuje dostupnou oblast.ListViewaGridView- pro zobrazování seznamů a mřížek s možností přizpůsobení.ResponsiveBuilder(z balíčkuresponsive_framework) - pro tvorbu widgetů podle breakpointů.FittedBox- pro škálování podřízeného widgetu podle velikosti rodiče.
// Příklad použití MediaQuery
class HomeScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
final Size screenSize = MediaQuery.of(context).size;
return Scaffold(
appBar: AppBar(
title: Text('Responzivní design'),
),
body: Center(
child: Text('Velikost obrazovky: ${screenSize.width.toStringAsFixed(1)}x${screenSize.height.toStringAsFixed(1)}'),
),
);
}
}
// Příklad použití 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 {
// Úzká obrazovka
return Container(
color: Colors.red,
width: 100,
height: 50,
child: Center(child: Text('Úzký')),
);
}
},
);
}
}
// Příklad použití Expanded
class FlexibleLayout extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
children: <Widget>[
Container(
color: Colors.yellow,
width: 50,
height: 50,
),
Expanded( // zaujme zbytek prostoru
child: Container(
color: Colors.green,
height: 50,
),
),
],
);
}
}