下面的代码是我的应用程序的许多页面之一。我正在尝试使用 LayoutBuilder 设置此页面,以便它像测验页面一样工作,下半部分/部分将容纳 3 到 4 个文本按钮,上半部分/部分将容纳问题并可能显示图片。 我做了一些研究,发现您可以使用 LayoutBuilder 将容器设置为屏幕的一半。然而,当我尝试用这段代码执行此操作时,我抛出了很多异常。所以我想知道是否有更好的方法将屏幕分成两半(或者可能是 1/4、1/4 和 1/2)以实现类似测验的布局。 感谢您的帮助!
quiz.dart
class Quiz extends StatelessWidget {
const Quiz({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Quiz'),
),
body: Column(
children: [
Align(alignment: Alignment.topCenter,
child: LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
return Container(
height: constraints.maxHeight / 2,
// widthdouble.infinity,
);
},
)),
Align(alignment: Alignment.topCenter,
child: LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
return Container(
height: constraints.maxHeight / 2,
// widthdouble.infinity,
color: const Color.fromRGBO(155, 205, 255, 0.8),
child: Column(children: [
/* TextButton(onPressed: onPressed, child: child),
TextButton(onPressed: onPressed, child: child),
TextButton(onPressed: onPressed, child: child), */
Text('Option A'),
Text('Option B'),
Text('Option C'),
],),
);
},
)),
],
));
}
}
最佳答案
您可以尝试将 LayoutBuilder
向上移动,以便可以对 Column
的子级使用约束:
class Quiz extends StatelessWidget {
const Quiz({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Quiz')),
body: LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
return Column(
children: [
Container(
height: constraints.maxHeight / 2,
color: Colors.green.shade300,
),
Container(
height: constraints.maxHeight / 2,
color: Colors.blue.shade300,
),
],
);
},
),
);
}
}
关于flutter - 将应用程序屏幕分为两半和/或分数时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71244685/