gpt4 book ai didi

flutter - Flutter PhotoView-围绕手指之间的点旋转

转载 作者:行者123 更新时间:2023-12-03 03:51:24 26 4
gpt4 key购买 nike

我正在使用PhotoView(https://pub.dev/packages/photo_view)展示以gif格式保存的 map 。我需要缩放和旋转的能力。
我的代码:

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,
),
);
}
}
问题是图片相对于图片的中心旋转,这很不方便。我希望旋转大约是执行旋转手势的两个手指之间的一个点(就像在普通 map 应用程序中一样)。我没有在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"),
),
),
);
}
}

最佳答案

因此,我在“照片 View ”中找不到任何可以帮助您实现目标的东西,因此请使用
改为this软件包。矩阵手势检测器将完全按照您想要的方式工作。
样例代码:

class Test extends StatefulWidget {
@override
_TestState createState() => _TestState();
}

class _TestState extends State<Test> {

Matrix4 transform;
@override
void initState() {
super.initState();
transform = Matrix4.identity();
}

@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
child: MatrixGestureDetector(
onMatrixUpdate: (m, rs, ry, rx){
setState(() {
transform = m;
});
},
child: Container(
transform: transform,
height: 200,
width: 200,
color: Colors.blue,
),
),
),
);
}

}
您可以将任何喜欢的东西放在容器中的装饰图片中。

关于flutter - Flutter PhotoView-围绕手指之间的点旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63207173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com