SizedBox( height: 500.h, child: categories[_selectIndex].categoryName != "" ? CarCategoryView( categoryId: categories[_selectIndex].id) : Text( 'No car added yet', style: TextStyle( fontWeight: FontWeight.bold, fontSize: 15.sp, color: tdGrey), ))
我想让 sizeBox 扩大,因为我不知道高度是多少
我尝试将 sizeBox.expand、expanded、flexiable 都不起作用。有人知道任何库或代码可以解决这个问题吗?
您遇到的问题是由于 Flutter 布局系统的工作原理造成的。您尝试将
Expanded
或 Flexible
与 SizedBox
一起使用,但它无法按预期工作,因为这些小部件需要放置在 Column
、Row
或 Flex
小部件中才能正常运行.
这是发生的事情:
Expanded 和 Flexible 只能在 Flex 小部件内使用(如
Column
或 Row
)。
SizedBox.expand 将使框填充所有可用空间,但如果父窗口小部件不提供有界约束,则它可能无法按预期工作。 由于您不知道内容需要多少高度,因此您可以让子窗口小部件确定自己的大小,而无需将其包装在
SizedBox
中。以下是调整代码的方法:
Widget build(BuildContext context) {
return categories[_selectIndex].categoryName != ""
? CarCategoryView(categoryId: categories[_selectIndex].id)
: Text(
'No car added yet',
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 15.sp,
color: tdGrey,
),
);
}
如果您的布局需要扩展以填充可用空间,您可以重组您的小部件以在
Expanded
或 Column
中使用 Row
。这是一个例子:
Column(
children: [
// Other widgets above
Expanded(
child: categories[_selectIndex].categoryName != ""
? CarCategoryView(categoryId: categories[_selectIndex].id)
: Center(
child: Text(
'No car added yet',
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 15.sp,
color: tdGrey,
),
),
),
),
// Other widgets below
],
)
如果您的内容可能会溢出并且您希望它可以滚动,请用
SingleChildScrollView
: 将其包裹起来
SingleChildScrollView(
child: categories[_selectIndex].categoryName != ""
? CarCategoryView(categoryId: categories[_selectIndex].id)
: Text(
'No car added yet',
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 15.sp,
color: tdGrey,
),
),
)