Flutter барои таҳияи барномаҳои мизи корӣ кадом имкониятҳои мутобиқатро пешниҳод мекунад?
sobes.tech AI
Ҷавоб аз AI
Барои тарҳи мутобиқ дар десктоп, Flutter имкониятҳои зеринро пешниҳод мекунад:
-
LayoutBuilder: Имкон медиҳад, ки гуногун widgetҳоро вобаста ба андозаи ҳозираи widget-и падар созед.
// Нуқтаи намунаи LayoutBuilder LayoutBuilder( builder: (BuildContext context, BoxConstraints constraints) { if (constraints.maxWidth > 600) { return Center(child: Text('Экран калон')); } else { return Center(child: Text('Экран хурд')); } }, ) -
MediaQuery: Дастрасӣ ба маълумот дар бораи андозаи экран ва самтгирии дастгоҳ барои сохтани тарҳҳои мутобиқ.
// Нуқтаи намунаи MediaQuery double screenWidth = MediaQuery.of(context).size.width; if (screenWidth > 800) { // Тарҳ барои экранҳои васеъ } else { // Тарҳ барои экранҳои танг } -
Виджетҳо барои тарҳи мутобиқ: Flutter пешниҳод мекунад виджетҳое, ки табиӣан мутобиқанд, масалан
ListView,GridView,CustomScrollView,ExpansionTileва ғайра.// Нуқтаи намунаи GridView бо танзимоти мутобиқ GridView.count( crossAxisCount: (MediaQuery.of(context).size.width / 150).floor(), children: List.generate(20, (index) { return Card(child: Center(child: Text('Item $index'))); }), ) -
Flexible ва Expanded: Барои сохтани тарҳҳои мутобиқ дар дохили
RowваColumn, ки имкон медиҳанд виджетҳо ҷойи дастрасро нисбатан ё бо андозаи муайян гиранд.// Нуқтаи намунаи Flexible ва Expanded Row( children: <Widget>[ Expanded( flex: 2, // 2/3 ҷойро мегирад child: Container(color: Colors.red), ), Flexible( flex: 1, // 1/3 ҷойро мегирад (аммо на камтар аз minWidth) child: Container(color: Colors.blue), ), ], ) -
Компонентҳои мутобиқ Material Design: Виджетҳои Material Design дар Flutter аксар вақт дорои мутобиқати дарунсохт барои шаклҳои гуногун мебошанд.
// Нуқтаи намунаи Drawer барои навигатсия Scaffold( appBar: AppBar(title: Text('Барнома')), drawer: Drawer( child: ListView( children: const <Widget>[ DrawerHeader( decoration: BoxDecoration( color: Colors.blue, ), child: Text('Меню'), ), ListTile( title: Text('Ҷойи 1'), ), ], ), ), body: Center(child: Text('Мазмун')), ) -
Breakpoints: Тавзеъ кардани нуқтаҳои қатъ (breakpoints) барои гузаштан байни тарҳҳои гуногун дар асоси паҳнои экран. Ин аксар вақт бо истифода аз
MediaQueryёLayoutBuilderиҷро мешавад.// Нуқтаи намунаи истифодаи breakpoints if (MediaQuery.of(context).size.width < 600) { // Тарҳи мобилӣ } else if (MediaQuery.of(context).size.width < 1200) { // Тарҳи планшет } else { // Тарҳи десктоп } -
Танзимоти рафтори скроллинг: Имкон медиҳад, ки рафтори скроллингро барои десктоп (масалан, дастгирии чархии муш) танзим кунед.
// Намунаи танзимоти ScrollBehavior class MyCustomScrollBehavior extends ScrollBehavior { @override Set<PointerDeviceKind> get dragDevices => { PointerDeviceKind.touch, PointerDeviceKind.mouse, }; }Истифода:
// Истифода дар ListView ScrollConfiguration( behavior: MyCustomScrollBehavior(), child: ListView(...), )
Ин имкониятҳо имкон медиҳанд, ки базаи коди ягона барои барномаҳои десктопӣ эҷод шавад, ки ба андозаи гуногуни тирезаҳо ва дастгоҳҳо мутобиқ мешавад.