플랫폼 가로, 세로 크기
💬 디바이스, 플랫폼 별로 크기가 다를 경우를 고려하여 위젯의 크기를 결정해야 하는 경우 사용
// When in StatelessWidget
@override
Widget build(BuildContext context) {
final Size screenSize = MediaQuery.of(context).size;
final double width = screenSize.width;
final double height = screenSize.height;
}
◻️ StatelessWidget 내부에서 context를 사용할 때는 build 함수 안에 작성하거나,
Widget _buildSub() {
return Builder(
builder: (BuildContext context) {
return SizedBox(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
);
},
);
}
◽ 클래스 외부나 build 외부에서 사용할 때는 Builder 클래스를 사용하면 된다.
// When in StatefulWidget
double getWidth() {
return MediaQuery.of(context).size.width;
}
double getHeight() {
return MediaQuery.of(context).size.height;
}
◻️ StatefulWidget 내부에서 사용할 때는 클래스 내부 build 함수 외부에서 context를 참조해도 된다.
플랫폼 확인
💬 현재 빌드 중인 플랫폼이 무엇인지 확인해야 하는 경우 사용
import 'package:flutter/foundation.dart' show kIsWeb;
void checkPlatform() {
if (kIsWeb) {
print("This platform is Flutter Web");
}
if (Theme.of(context).platform == TargetPlatform.android) {
print("This platform is Flutter Android");
}
...
}
enum TargetPlatform {
android,
fuchsia,
iOs,
linux,
macOS,
windows,
}
'Flutter > Concept' 카테고리의 다른 글
[ Flutter ] 화면 표시 (0) | 2022.02.27 |
---|---|
[ Flutter ] 텍스트 (0) | 2022.02.27 |
[ Flutter ] 이미지 (0) | 2022.02.22 |
[ Flutter ] BottomNavigationBar (0) | 2022.02.19 |
[ Flutter ] HTTP 통신 (0) | 2022.01.28 |