v2.0.1zoom_widget
크기를 조정할 수 있는 캔버스 위에서 줌 인/아웃이 가능한 위젯으로 자식 위젯을 포함할 수 있습니다.
semakers/zoom-widget open-source repository details.
{"sdk":"flutter"}^2.1.1{"sdk":"flutter"}아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.
With this widget you can create a customizable canvas in which you can zoom in flutter.
It is possible to customize virtually all the canvases of the canvas such as color, background color, acitvate and deactivate scrolls, change the color of scrolls, modify the sensitivity of the zoom, the initial zoom enters other aspects found in the construction of the Zoom class.
Add to pubspec.yaml:
dependencies:
zoom_widget: ^2.0.0
You only need to create an instance of the Zoom class in the child of your Scaffold or within the widget of your choice, within the child attribute, put the widget that you want to zoom in and the width and height of the canvas where it will be made zoom.
import 'package:zoom_widget/zoom_widget.dart';
Center flutter logo using all space of view port:
Zoom(
initTotalZoomOut: true,
child: Center(
child: FlutterLogo(
size: 1000,
),
),
);
https://raw.githubusercontent.com/semakers/zoom-widget/master/gif_examples/init_total_zomm.gif
Center text with max width and max height:
Zoom(
maxZoomWidth: 1800,
maxZoomHeight: 1800,
child: Center(
child: Text("Happy zoom!!"),
)
);
https://raw.githubusercontent.com/semakers/zoom-widget/master/gif_examples/simple_zoom.gif
It is possible to obtain the x and y position of our canvas with respect to the scrolls and and the zoom and scale of our canvas using two simple callbacks in our Zoom instance.
Zoom(
maxZoomWidth: 1800,
maxZoomHeight: 1800,
onTap: (){
print("Widget clicked");
},
onPositionUpdate: (Offset position){
print(position);
},
onScaleUpdate: (double scale,double zoom){
print("$scale $zoom");
},
child: Center(
child: Text("Happy zoom!!"),
)
);
Customizing the properties you can get amazing results.
Zoom(
maxZoomWidth: 1800,
maxZoomHeight: 1800,
canvasColor: Colors.grey,
backgroundColor: Colors.orange,
colorScrollBars: Colors.purple,
opacityScrollBars: 0.9,
scrollWeight: 10.0,
centerOnScale: true,
enableScroll: true,
doubleTapZoom: true,
zoomSensibility: 0.05,
onTap: (){
print("Widget clicked");
}
onPositionUpdate: (position){
setState(() {
x=position.dx;
y=position.dy;
});
},
onScaleUpdate: (scale,zoom){
setState(() {
_zoom=zoom;
});
},
child: Center(
child: Text("x:${x.toStringAsFixed(2)} y:${y.toStringAsFixed(2)} zoom:${_zoom.toStringAsFixed(2)}",style: TextStyle(color: Colors.deepPurple,fontSize: 50),),
),
);
https://raw.githubusercontent.com/semakers/zoom-widget/master/gif_examples/custom_zoom.gif
It can be used for more complex things like an image gallery.
https://raw.githubusercontent.com/semakers/zoom-widget/master/gif_examples/image_gallery.gifAll examples of gifs are inside the example