【Flutter】【LayoutBuilder】화면을 누를 때 레이아웃 에러가 발생하지 않도록 한다
머리
Flutter로 앱 개발을 하고 있으면, 화면이 누워 있을 때 레이아웃의 에러가 일어나 버립니다군요.
이건 곤란하구나~
LayoutBuilder
를 사용하면, 누워 있을 때에 누워 있을 때용의, 레이아웃을 짤 수 있게 됩니다.LayoutBuilder
이것은 Widget이 지어지는 범위를 측정합니다.
거기서 사이즈에 맞추어 세우는 Widget를 조건 나누거나 할 수 있습니다.
샘플
이번에는 Simulator의 iPhone SE로 빌드하고 있습니다.
글쎄, 잠시 잠시 보이지만 일단 레이아웃 오류가 발생하지 않는다는 것을 주목하자.
import 'package:flutter/material.dart';
class SampleLayputBuilder extends StatefulWidget {
@override
State<StatefulWidget> createState() => _SampleLayputBuilder();
}
class _SampleLayputBuilder extends State<SampleLayputBuilder> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('LayputBuilder使ってない'),
),
body: LayoutBuilder(
builder: (context, constraints) {
print(constraints);
if (constraints.maxWidth < 600) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
imageExplanation(),
image(),
],
);
} else {
return Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
imageExplanation(),
image(),
],
);
}
},
),
);
}
Widget imageExplanation() {
return Text(
'この写真は、こないだ海で撮影したものです。\n彼女とデートしたときに追いかけっこをしました。\nワハハと笑って楽しかったです。',
style: TextStyle(fontWeight: FontWeight.bold),
);
}
Widget image() {
return Image.asset('images/sample1.png');
}
}
설명
LayoutBuilder(
builder: (context, constraints) {
if (constraints.maxWidth < 600) {
return verticalWidget() //縦向きのWidget
} else {
return horizontalWidget() //横向きのWidget
}
},
),
Widget이 지어지는 크기를
constraints
에 넣고 있습니다.constraints.maxWidth < 600
는 옆의 최대 길이가 600 이하인지 아닌지에 조건으로 나누고 있습니다.샘플 코드에서
print(constraints)
하는 것으로, 가로폭과 세로폭이 표시되도록 하고 있으므로 참고로 해 주세요.
Reference
이 문제에 관하여(【Flutter】【LayoutBuilder】화면을 누를 때 레이아웃 에러가 발생하지 않도록 한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ryota47/items/8b1a94bd7f6936aa7af4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)