1) Transform.rotate
не влияет на размеры и расположение ребенка - оно меняет только способ рисования ребенка.
2) Поскольку на снимке экрана нет данных изображения в белых «треугольниках», чтобызаполните их изображением, мы должны увеличить изображение.Но тогда он будет перекрывать соседние виджеты, поэтому мы также будем уменьшать размер ромба.
double L = 100; // image side length
double R = 24; // rounding radius
double k = sqrt(2) - R / L * 2 * (sqrt(2) - 1); // a little bit of geometry
Теперь масштабируем!
Transform.rotate(
angle: pi / 4,
child: Transform.scale(
scale: 1 / k,
child: ClipRRect(
borderRadius: new BorderRadius.circular(R),
child: Transform.rotate(
angle: - pi / 4,
child: Transform.scale(
scale: k,
child: Image(
image: ...,
width: L,
height: L,
fit: BoxFit.cover,
),
),
),
),
),
);