InteractiveViewer 图像被放大
InteractiveViewer image is zoomed in
我的问题应该很简单,但我被卡住了:我需要显示上面带有标记的地图图像(这就是我使用堆栈的原因)并且该图像可以缩放和平移。唯一的问题是,当我打开应用程序时,图像完全放大了,我必须手动缩小。我尝试阅读文档和谷歌搜索,但我只找到了不适合我的需要或无法按预期工作的库。
所以,问题很简单:我怎样才能从头看到完全缩小的图像?
这是代码。
return Container(
height: 350,
child: InteractiveViewer(
// TODO the image is automatically zoomed in!
minScale: .1,
maxScale: 1,
constrained: false,
child: Stack(children: [
Image.asset(itinerary.mapImage, fit: BoxFit.fitWidth),
icon(...),
])
)
)
您需要使用TransformationController 来控制InteractiveViewer。
这是代码:
TransformationController _controller;
@override
void initState() {
_controller = TransformationController();
_controller.value = Matrix4.identity() * 0.5;
super.initState();
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Container(
height: 350,
child: InteractiveViewer(
transformationController: _controller,
minScale: .1,
maxScale: 1,
onInteractionEnd: (s) {
print(_controller.value);
},
constrained: false,
child: Stack(
children: [
Image.asset(
"assets/Big.Buck.Bunny.-.Landscape.png",
fit: BoxFit.fitWidth,
),
],
),
),
),
);
}
请注意,您可能需要调整初始比例值(与 Matrix4 相乘的值)以获得所需的输出。
我的问题应该很简单,但我被卡住了:我需要显示上面带有标记的地图图像(这就是我使用堆栈的原因)并且该图像可以缩放和平移。唯一的问题是,当我打开应用程序时,图像完全放大了,我必须手动缩小。我尝试阅读文档和谷歌搜索,但我只找到了不适合我的需要或无法按预期工作的库。
所以,问题很简单:我怎样才能从头看到完全缩小的图像?
这是代码。
return Container(
height: 350,
child: InteractiveViewer(
// TODO the image is automatically zoomed in!
minScale: .1,
maxScale: 1,
constrained: false,
child: Stack(children: [
Image.asset(itinerary.mapImage, fit: BoxFit.fitWidth),
icon(...),
])
)
)
您需要使用TransformationController 来控制InteractiveViewer。 这是代码:
TransformationController _controller;
@override
void initState() {
_controller = TransformationController();
_controller.value = Matrix4.identity() * 0.5;
super.initState();
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Container(
height: 350,
child: InteractiveViewer(
transformationController: _controller,
minScale: .1,
maxScale: 1,
onInteractionEnd: (s) {
print(_controller.value);
},
constrained: false,
child: Stack(
children: [
Image.asset(
"assets/Big.Buck.Bunny.-.Landscape.png",
fit: BoxFit.fitWidth,
),
],
),
),
),
);
}
请注意,您可能需要调整初始比例值(与 Matrix4 相乘的值)以获得所需的输出。