Middle
რომელი widget-ები Flutter-ში უზრუნველყოფს ადაპტაციულ განლაგებას?
sobes.tech AI
პასუხი AI-სგან
MediaQuery- ეკრანის ზომა და მიმართულების შესახებ маалымат алуу үчүн.LayoutBuilder- მშობელ ელემენტის შეზღუდვებზე დაყრდნობით ვიჯეტების შექმნა.OrientationBuilder- ეკრანის მიმართულებაზე დაყრდნობით ვიჯეტების შექმნა.FractionallySizedBox- ელემენტების შექმნა, რომლებიც შესაბამისია ხელმისაწვდომ სივრცესთან.AspectRatio- ელემენტის განსაზღვრული თანაფარდობის შენარჩუნება.ExpandedდაFlexible- მოქნილი განაწილებაRowანColumnშიგნით.SingleChildScrollView- შიგთავსის სქროლვა, თუ ის აღემატება ხელმისაწვდომ ზონას.ListViewდაGridView- სია და ქსელები, რომლებიც ადაპტირებადია.ResponsiveBuilder(პაკეტიდანresponsive_framework) - ვიჯეტების შექმნა ბრეიკპოინტებზე დაყრდნობით.FittedBox- შვილობილი ვიჯეტის მასშტაბირება მშობლის ზომის შესაბამისად.
// MediaQuery-ის გამოყენების მაგალითი
class HomeScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
final Size screenSize = MediaQuery.of(context).size;
return Scaffold(
appBar: AppBar(
title: Text('ადაპტური დიზაინი'),
),
body: Center(
child: Text('ეკრანის ზომა: ${screenSize.width.toStringAsFixed(1)}x${screenSize.height.toStringAsFixed(1)}'),
),
);
}
}
// LayoutBuilder-ის გამოყენების მაგალითი
class AdaptiveContainer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
if (constraints.maxWidth > 600) {
// სქელი ეკრანი
return Container(
color: Colors.blue,
width: 300,
height: 100,
child: Center(child: Text('სქელი')),
);
} else {
// თხელი ეკრანი
return Container(
color: Colors.red,
width: 100,
height: 50,
child: Center(child: Text('თხელი')),
);
}
},
);
}
}
// Expanded-ის გამოყენების მაგალითი
class FlexibleLayout extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
children: <Widget>[
Container(
color: Colors.yellow,
width: 50,
height: 50,
),
Expanded( // დარჩენილი სივრცე დაიკავებს
child: Container(
color: Colors.green,
height: 50,
),
),
],
);
}
}