import 'dart:math'; import 'package:flutter/material.dart'; class SkewTransition extends AnimatedWidget { const SkewTransition({ Key? key, required Animation turns, this.alignment = Alignment.center, required this.child, }) : assert(turns != null), super(key: key, listenable: turns); Animation get turns => listenable as Animation; final Alignment alignment; final Widget child; @override Widget build(BuildContext context) { final double turnsValue = turns.value; final Matrix4 transform = Matrix4.skew(turnsValue * pi * 2.0, turnsValue * pi * 2.0); return Transform( transform: transform, alignment: alignment, child: child, ); } }