Я использую PhotoView (https://pub.dev/packages/photo_view) для демонстрации карты, сохраненной в формате gif. Мне нужна возможность масштабировать и вращать. Мой код:
class MapView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return PhotoView(
imageProvider: AssetImage("assets/maps/my_map.gif"),
enableRotation: true,
backgroundDecoration: BoxDecoration(
color: Colors.white,
),
);
}
}
Проблема в том, что картинка повернута относительно центра картинки, что неудобно. Я хочу, чтобы вращение происходило примерно в точке между двумя пальцами, выполняющими жест вращения (как в обычных приложениях с картами). Я не нашел в документации PhotoView информации о том, как это исправить.
Надеюсь на вашу поддержку.
Мой последний код (с использованием matrix_gesture_detector ):
class MapView extends StatefulWidget {
@override
State<StatefulWidget> createState() => _MapViewState();
}
class _MapViewState extends State<MapView> {
Matrix4 transform;
@override
void initState() {
super.initState();
transform = Matrix4.identity();
}
@override
Widget build(BuildContext context) {
return Container(
color: Colors.white,
child: MatrixGestureDetector(
onMatrixUpdate: (m, tm, sm, rm) {
setState(() {
transform = m;
});
},
child: Transform(
transform: transform,
child: Image.asset("assets/maps/my_map.gif"),
),
),
);
}
}