import 'dart:math'; import 'package:flutter/material.dart'; import 'package:matrix4_transform/matrix4_transform.dart'; void main() { runApp(MaterialApp( home: Scaffold( body: Center( child: SizedBox(width: 300, height: 300, child: Container( color: Colors.blue, child: const TestWidget() ) ) , ), ) )); } Matrix4 _rotate(double angle, Offset focalPoint) { var c = cos(angle); var s = sin(angle); var dx = (1 - c) * focalPoint.dx + s * focalPoint.dy; var dy = (1 - c) * focalPoint.dy - s * focalPoint.dx; // ..[0] = c # x scale // ..[1] = s # y skew // ..[4] = -s # x skew // ..[5] = c # y scale // ..[10] = 1 # diagonal "one" // ..[12] = dx # x translation // ..[13] = dy # y translation // ..[15] = 1 # diagonal "one" return Matrix4(c, s, 0, 0, -s, c, 0, 0, 0, 0, 1, 0, dx, dy, 0, 1); } class TestWidget extends StatelessWidget{ const TestWidget({super.key}); @override Widget build(BuildContext context) { var tran = Matrix4.identity(); final size =MediaQuery.of(context).size; // tran.setTranslation(Matrix4.translationValues(100, 120, 0).getTranslation()); tran = Matrix4Transform() .rotateDegrees(45, origin: Offset(150, 150)).matrix4 * tran; // tran = Matrix4Transform() // .rotateDegrees(45, origin: Offset(150, 150)).matrix4 * tran; // return Transform( transform: tran, child: const Text('测试', style: TextStyle(fontSize: 50),), ); } }