flutter无法让sizebox展开

问题描述 投票:0回答:1

                               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 flutter-responsive-layout flutter-expanded
1个回答
0
投票

您遇到的问题是由于 Flutter 布局系统的工作原理造成的。您尝试将

Expanded
Flexible
SizedBox
一起使用,但它无法按预期工作,因为这些小部件需要放置在
Column
Row
Flex
小部件中才能正常运行.

这是发生的事情:

ExpandedFlexible 只能在 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,
        ),
      ),
)
© www.soinside.com 2019 - 2024. All rights reserved.