Flutter 屏幕适配
Flutter 提供了一套完整的布局解决方案,包括一个名为MediaQuery
的widget,它可以帮助我们进行屏幕适配。
MediaQuery
可以获取屏幕的大小、方向(横屏或竖屏)、文本缩放比例、平台亮度以及是否为高对比度模式等信息。
以下是一个使用MediaQuery
进行屏幕适配的简单示例:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Builder(
builder: (BuildContext context) {
// 获取MediaQuery数据
var mediaQueryData = MediaQuery.of(context);
// 使用获取到的数据进行适配
double screenWidth = mediaQueryData.size.width;
double screenHeight = mediaQueryData.size.height;
double textScaleFactor = mediaQueryData.textScaleFactor;
return Container(
color: Colors.white,
child: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text('Screen Width: $screenWidth'),
Text('Screen Height: $screenHeight'),
Text('Text Scale Factor: $textScaleFactor'),
],
),
),
);
},
),
),
);
}
}
在这个例子中,我们使用MediaQuery.of(context)
获取当前上下文的MediaQueryData
对象,然后从中提取屏幕的宽度、高度和文本缩放比例,并显示在屏幕中央。
此外,Flutter 提供的ResponsiveLayout
插件可以帮助我们更简单地处理不同屏幕尺寸的适配,但它可能不是Flutter核心库的一部分,需要单独安装。
评论已关闭