(RenderViewport不支持返回内在尺寸

8 user-interface flutter singlechildscrollview

我面临这个异常:

FlutterError(RenderViewport 不支持返回内在尺寸。计算内在尺寸需要实例化视口的每个子级,这会破坏视口的惰性。如果您只是尝试在主轴方向上收缩包裹视口,请考虑RenderShrinkWrappingViewport 渲染对象(ShrinkWrappingViewport 小部件),无需实现内在维度 API 即可实现该效果。)

当我添加时ProductsWidget发生异常。

产品小部件的代码是:

class ProductsWidget extends GetResponsiveView<HomeTabController> {
  @override
  Widget build(BuildContext context) {
    return ListView.builder(
      shrinkWrap: true,
      itemCount: 3,
      // padding: EdgeInsets.symmetric(vertical: 20),
      physics: NeverScrollableScrollPhysics(),
      itemBuilder: (context, index) => Column(
        children: [
          Row()])}}
Run Code Online (Sandbox Code Playgroud)

调用代码是:

body: LayoutBuilder(
          builder: (BuildContext context, BoxConstraints constraints) {
        return SingleChildScrollView(
          child: ConstrainedBox(
            constraints: BoxConstraints(
              minHeight: constraints.maxHeight,
            ),
            child: IntrinsicHeight(
              child: Column(
                mainAxisSize: MainAxisSize.min,
                children: [
                  Expanded(
                      //  flex: 1,
                      child: HomeAppBar()),
                  // listView
                  // i made shrinkWrap=true
                  // neverScroll
                  Flexible(fit: FlexFit.tight, child: ProductsWidget()),
                ],
              ),
            ),
          ),
        );
      }),
Run Code Online (Sandbox Code Playgroud)

gre*_*bra 9

尝试将 ProductsWidget 包装在 SizedBox 中,并为其指定宽度(宽度:double.maxFinite)和可能的高度。

我遇到了类似的问题,我发现以下帖子很有帮助:flutter listview with radio not shown in AlertDialog


Hyu*_*gur 6

这是因为 ListView 延迟构建每个子项。您可以使用包含在 SingleChildScrollView 中的 Column 而不是 ListView。