[英]Expanded widget throws "RenderBox was not laid out" exception
嗨,我是 Flutter 的新手,我遇到了异常“RenderBox 未布局”的麻烦。 我正在尝试创建MyDialog
,它是内置对话框的扩展。 它可以从其他小部件中注入内容。 我想将Expanded
widget wrapping Text
widget 作为内容放置,以便可以看到所有带有换行符的文本。
这是我的MyDialog
小部件。
class MyDialog extends StatelessWidget {
String label;
Widget contents;
const MyDialog({required this.label, required this.contents, Key? key}) : super(key : key)
@override
Widget build(BuildContext context) {
return MyButtonTip( // This is an extension of outlined button.
label : label,
onPressed : () {
showDialog(
context : context,
builder : (BuildContext context) => AlertDialog(
insetPadding : const EdgeInsets.all(15),
content : SizedBox(
width : MediaQuery.of(context).size.width,
child : contents
)
)
);
}
);
}
}
这是使用MyDialog
的小部件。
...
MyDialog(
label : 'Profile',
contents : SizedBox(
child : Stack(
children : [
Column(
children : [
Row(
children : [
Column(
crossAxisAlignment : CrossAxisAlignment.end,
children : const [
Text('name'),
Text('nickname')
]
),
const SizedBox(width : 10),
Column(
crossAxisAlignment : CrossAxisAlignment.start,
children : [
Text(name),
Expanded(
child : Text(nickname)
)
]
)
]
)
]
)
]
))
)
);
...
(我正在使用Stack
来瞄准不同的东西,所以请不要关心它。)
我想知道正确的解决方案,因为我之前多次遇到此异常,并且每次都以某种方式解决了。 请详细告诉我。
谢谢,
我认为您将小部件放错了,请尝试使用以下代码:
MyDialog(
label : 'Profile',
contents : Column(children: [
Row(children: const [
Text('name : '),
Text("hello"),
]),
const SizedBox(width: 10),
Row(crossAxisAlignment: CrossAxisAlignment.start, children: const [
Text('taro yamuda : '),
Expanded(
child: Text(
"someting sometingsometingsometingsometingsometingsometingsometingsometingsometingsometingsometingsometing",
style: TextStyle(),
),
)
])
]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.