| // 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/cupertino.dart'; |
| |
| /// Flutter code sample for [CupertinoMagnifier]. |
| |
| void main() => runApp(const CupertinoMagnifierApp()); |
| |
| class CupertinoMagnifierApp extends StatelessWidget { |
| const CupertinoMagnifierApp({super.key}); |
| |
| @override |
| Widget build(BuildContext context) { |
| return const CupertinoApp( |
| theme: CupertinoThemeData(brightness: Brightness.light), |
| home: CupertinoMagnifierExample(), |
| ); |
| } |
| } |
| |
| class CupertinoMagnifierExample extends StatefulWidget { |
| const CupertinoMagnifierExample({super.key}); |
| |
| @override |
| State<CupertinoMagnifierExample> createState() => _CupertinoMagnifierExampleState(); |
| } |
| |
| class _CupertinoMagnifierExampleState extends State<CupertinoMagnifierExample> { |
| static const double magnifierRadius = 50.0; |
| Offset dragGesturePosition = Offset.zero; |
| |
| @override |
| Widget build(BuildContext context) { |
| return CupertinoPageScaffold( |
| navigationBar: const CupertinoNavigationBar(middle: Text('CupertinoMagnifier Sample')), |
| child: Center( |
| child: Column( |
| mainAxisAlignment: MainAxisAlignment.center, |
| children: <Widget>[ |
| const Text('Drag on the logo!'), |
| RepaintBoundary( |
| child: Stack( |
| children: <Widget>[ |
| 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 CupertinoMagnifier( |
| magnificationScale: 1.5, |
| borderRadius: BorderRadius.all(Radius.circular(magnifierRadius)), |
| additionalFocalPointOffset: Offset(0, -magnifierRadius), |
| ), |
| ), |
| ], |
| ), |
| ), |
| ], |
| ), |
| ), |
| ); |
| } |
| } |