import 'dart:io'; import 'package:flutter/material.dart'; import 'package:ansu_ui/extension/num_extension.dart'; class PhotoViewer extends StatefulWidget { final File? file; final String? tag; PhotoViewer({Key? key, this.file, this.tag}) : super(key: key); @override _PhotoViewerState createState() => _PhotoViewerState(); } class _PhotoViewerState extends State { @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.black54, body: GestureDetector( onTap: () => Navigator.pop(context), child: Center( child: InteractiveViewer( boundaryMargin: 100.edge, child: Hero( tag: widget.tag!, child: Image.file(widget.file!), ), ), ), ), ); } } toPhotoViewer(BuildContext context, {String? tag, File? file}) { Navigator.push( context, PageRouteBuilder( pageBuilder: (context, animation, secondAnimation) { return PhotoViewer(file: file, tag: tag); }, opaque: false, transitionsBuilder: (context, animation, secondaryAnimation, child) { return FadeTransition(opacity: animation, child: child); }, ), ); }