I can't get CustomMultiChildLayout to be scrollable.

For now my CustomMultiChildLayout just laying out children in a column. In a future I'll make it more complex, but now I want to make it scrollable. I tried putting it inside ListView, but got RenderIndexedSemantics object was given an infinite size during layout.. I tried putting it inside SingleChildScrollView with IntrinsicHeight but in this case it can't be scrolled and it's height is the same as viewport.

Here is some examples that is not working properly:

return SingleChildScrollView(
        child: IntrinsicHeight(
          child: CustomMultiChildLayout(
            delegate: ViewLayoutBuilder(itemCount: cards.length),
            children: _buildChildren(context),
          ),
        ),
      );

and

return ListView(
        children: <Widget>[
          CustomMultiChildLayout(
            delegate: ViewLayoutBuilder(itemCount: cards.length),
            children: _buildChildren(context),
          )
        ],
      )

Here is my ViewLayoutBuilder delegate:

class ViewLayoutBuilder extends MultiChildLayoutDelegate {
  final int itemCount;

  ViewLayoutBuilder({@required this.itemCount});

  @override
  void performLayout(Size size) {
    Offset position = Offset(0,0);
    Size firstSize = layoutChild('card_0', BoxConstraints.tightFor(width: size.width));
    positionChild('card_0', position);
    position = position.translate(0, firstSize.height);
    for (int i = 1; i < itemCount; i++) {
      final String cardId = 'card_$i';

      if (hasChild(cardId)) {
        Size newSize = layoutChild('$cardId', BoxConstraints.tightFor(width: size.width));
        positionChild('$cardId', position);
        position = position.translate(0, newSize.height);
      }
    }
  }

  @override
  bool shouldRelayout(MultiChildLayoutDelegate oldDelegate) => false;
}

The main error in all my tries is that my CustomMultiChildLayout given an infinity height. In other cases it is cropped to a viewport height and can't be scrolled.