Flutter 提供了多种方式来做屏幕适配,以下是常用的几种方式:
- 使用 media query
Flutter 提供了 media query API 来获取当前设备的屏幕尺寸、像素密度等信息,通过这些信息,可以实现不同设备上的 UI 适配。
final mediaQueryData = MediaQuery.of(context);
final screenWidth = mediaQueryData.size.width;
final screenHeight = mediaQueryData.size.height;
final pixelRatio = mediaQueryData.devicePixelRatio;
- 使用构建器
Flutter 的构建器(Builder)可以将一个部件的上下文(BuildContext)传递给一个 widget,从而获取当前屏幕的信息并实现相应的适配。
return Builder(
builder: (BuildContext context) {
final mediaQueryData = MediaQuery.of(context);
final screenWidth = mediaQueryData.size.width;
final screenHeight = mediaQueryData.size.height;
final pixelRatio = mediaQueryData.devicePixelRatio;
// 在这里进行 UI 的适配
return Container(
width: screenWidth / 2,
height: screenHeight / 2,
);
},
);
- 使用第三方库
Flutter 社区中有很多针对屏幕适配的第三方插件和库,如 flutter_screenutil、flutter_screemutil_plus 等,这些插件提供了更便捷的方式进行屏幕适配。
import 'package:flutter_screenutil/flutter_screenutil.dart';
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
// 进行屏幕适配
ScreenUtil.init(context,
width: 750, height: 1334, allowFontScaling: true);
return Container(
width: ScreenUtil().setWidth(375),
height: ScreenUtil().setWidth(200),
child: Text(
'Hello, Flutter',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
),
),
);
}
}
以上是三种常用的 Flutter 屏幕适配方式,具体使用哪一种方式,需要根据实际情况来选择。