To do this, it builds the following widget tree:

Here’s the code:

clipRectSize = 2.0 * (maxRadius / math.sqrt2),
       super(key: key);

  final double maxRadius;
  final clipRectSize;
  final Widget child;

  @override
  Widget build(BuildContext context) {
    return

ClipOval(
      child:

Center(
        child:

SizedBox(
          width: clipRectSize,
          height: clipRectSize,
          child:

ClipRect(
            child:

child,  // Photo
          ),
        ),
      ),
    );
  }
}

Key information:

The hero wraps the RadialExpansion widget.