Middle
Kuri Flutter widget nodrošina pielāgotu izkārtojumu?
sobes.tech AI
Atbilde no AI
MediaQuery- informācijas iegūšanai par ekrāna izmēru un orientāciju.LayoutBuilder- widgetu būvēšanai atkarībā no vecā elementa ierobežojumiem.OrientationBuilder- widgetu būvēšanai atkarībā no ekrāna orientācijas.FractionallySizedBox- elementu izveide ar izmēru proporcionālu pieejamai telpai.AspectRatio- saglabājot noteiktu platuma un augstuma attiecību.ExpandedunFlexible- elastīga telpas sadaleRowvaiColumniekšienē.SingleChildScrollView- satura ritināšanai, ja tas pārsniedz pieejamo platību.ListViewunGridView- sarakstu un režģu attēlošanai ar pielāgošanas iespējām.ResponsiveBuilder(noresponsive_frameworkpakotnes) - widgetu būvēšanai atkarībā no breikpunktiem.FittedBox- bērna widgeta mērogošanai atbilstoši vecāka izmēram.
// MediaQuery izmantošanas piemērs
class HomeScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
final Size screenSize = MediaQuery.of(context).size;
return Scaffold(
appBar: AppBar(
title: Text('Adaptīvais dizains'),
),
body: Center(
child: Text('Ekrāna izmērs: ${screenSize.width.toStringAsFixed(1)}x${screenSize.height.toStringAsFixed(1)}'),
),
);
}
}
// LayoutBuilder izmantošanas piemērs
class AdaptiveContainer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
if (constraints.maxWidth > 600) {
// Plašs ekrāns
return Container(
color: Colors.blue,
width: 300,
height: 100,
child: Center(child: Text('Plašs')),
);
} else {
// Šaurs ekrāns
return Container(
color: Colors.red,
width: 100,
height: 50,
child: Center(child: Text('Šaurs')),
);
}
},
);
}
}
// Expanded izmantošanas piemērs
class FlexibleLayout extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
children: <Widget>[
Container(
color: Colors.yellow,
width: 50,
height: 50,
),
Expanded( // aizņems atlikušās telpas
child: Container(
color: Colors.green,
height: 50,
),
),
],
);
}
}