面试题答案
一键面试- 获取设备屏幕尺寸信息:
在Flutter中,可以通过
MediaQuery
来获取设备屏幕尺寸信息。MediaQuery
提供了一系列与设备屏幕相关的属性,其中size
属性用于获取屏幕的尺寸。
Size size = MediaQuery.of(context).size;
double screenWidth = size.width;
double screenHeight = size.height;
- 实现自适应布局:
要根据屏幕宽度切换文本组件和按钮组件的排列方式,可以使用
LayoutBuilder
或直接在构建方法中根据屏幕宽度判断。以下是使用LayoutBuilder
的示例:
import 'package:flutter/material.dart';
class AdaptiveLayoutExample extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Adaptive Layout'),
),
body: LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
if (constraints.maxWidth > 600) {
// 屏幕宽度大于600时,水平排列
return Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Text('This is a text'),
ElevatedButton(
onPressed: () {},
child: Text('Button'),
),
],
);
} else {
// 屏幕宽度小于等于600时,垂直排列
return Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Text('This is a text'),
ElevatedButton(
onPressed: () {},
child: Text('Button'),
),
],
);
}
},
),
);
}
}
在上述代码中:
LayoutBuilder
的builder
回调函数接收BoxConstraints
对象,通过constraints.maxWidth
获取当前可用空间的最大宽度。- 根据宽度判断条件,分别返回水平排列的
Row
和垂直排列的Column
,从而实现自适应布局。