Flutter real-time magnifying glass lens widget with Barrel/Pincushion distortion. Works on Android, iOS and desktop. Doesn't work yet on web (help needed with web FFI).
Make [MagnifyingGlass] widget as the parent of the widget you wish to be used (usually MyHomePage).
@override
Widget build(BuildContext context) {
MagnifyingGlassController magnifyingGlassController = MagnifyingGlassController();
return MagnifyingGlass(
controller: magnifyingGlassController,
glassPosition: GlassPosition.touchPosition,
glassParams: GlassParams(
startingPosition: Offset(150, 150),
diameter: 150,
distortion: 1.0,
magnification: 1.2,
padding: EdgeInsets.all(10),
),
child: Scaffold(
body: ...,
floatingActionButton: FloatingActionButton(
onPressed: () => magnifyingGlassController.openGlass(),
child: const Icon(Icons.search),
),
)
);
Name | Type | Description |
---|---|---|
controller | MagnifyingGlassController | Let you control the glass state and parameters: openGlass() closeGlass() setDistortion( double distortion, double magnification ) setDiameter( int diameter ) |
glassPosition | enum | [GlassPosition] enum to set the touch behavior or sticky position |
glassParams | GlassParams | [GlassParams] class to set lens parameters |
GlassPosition class
Name | Description |
---|---|
touchPosition | move the glass with finger touch |
topLeft | sticky position to top left corner of the screen |
topRight | sticky position to top rigth corner of the screen |
bottomLeft | sticky position to bottom left corner of the screen |
bottomRight | sticky position to bottom right corner of the screen |
GlassParams class
Name | Description |
---|---|
startingPosition | the startin glass position. If not given the lens will be placed at the center of the screen. |
diameter | the diameter of the glass |
magnification | the magnification of the lens 1 means no magnification >1 means magnification <1 means shrinking |
distortion | Barrel/Pincushion distortion power 0 means no distortion |
padding | the padding surrounding the glass to enlarge touching area |
distorsion 0.5 mag 1.0 |
distorsion 0.5 mag 1.4 |
distorsion 2.0 mag 1.7 |