// Copyright 2014 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:flutter/material.dart'; void main() => runApp(const MagnifierExampleApp()); class MagnifierExampleApp extends StatefulWidget { const MagnifierExampleApp({super.key}); @override State createState() => _MagnifierExampleAppState(); } class _MagnifierExampleAppState extends State { static const double magnifierRadius = 50.0; Offset dragGesturePosition = const Offset(100, 100); @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ const Text('Drag on the logo!'), RepaintBoundary( child: Stack( children: [ GestureDetector( onPanUpdate: (DragUpdateDetails details) => setState( () { dragGesturePosition = details.localPosition; }, ), onPanDown: (DragDownDetails details) => setState( () { dragGesturePosition = details.localPosition; }, ), child: const FlutterLogo(size: 200), ), Positioned( left: dragGesturePosition.dx - magnifierRadius, top: dragGesturePosition.dy - magnifierRadius, child: const RawMagnifier( decoration: MagnifierDecoration( shape: CircleBorder( side: BorderSide(color: Colors.pink, width: 3), ), ), size: Size(magnifierRadius * 2, magnifierRadius * 2), magnificationScale: 2, ), ) ], ), ), ], ), ), ), ); } }