Files
be_happy_public/lib/presentation/components/full_screen_image_viewer.dart
2026-08-14 13:47:11 +03:00

60 lines
1.7 KiB
Dart

import 'package:flutter/material.dart';
class FullScreenImageViewer extends StatefulWidget {
final List<String> photoUrls;
final int initialIndex;
const FullScreenImageViewer({
super.key,
required this.photoUrls,
required this.initialIndex,
});
@override
State<FullScreenImageViewer> createState() => _FullScreenImageViewerState();
}
class _FullScreenImageViewerState extends State<FullScreenImageViewer> {
late PageController _pageController;
@override
void initState() {
super.initState();
_pageController = PageController(initialPage: widget.initialIndex);
}
String _resolveImageUrl(String path) {
if (path.startsWith('http://') || path.startsWith('https://')) return path;
return 'https://sharing-api.sparkit.by/$path';
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.black,
appBar: AppBar(
backgroundColor: Colors.transparent,
iconTheme: const IconThemeData(color: Colors.white),
),
body: PageView.builder(
controller: _pageController,
itemCount: widget.photoUrls.length,
itemBuilder: (context, index) {
final photo = widget.photoUrls[index];
final imageUrl = _resolveImageUrl(photo);
return InteractiveViewer(
child: Center(
child: Image.network(
imageUrl,
fit: BoxFit.contain,
errorBuilder: (context, error, stackTrace) {
return const Icon(Icons.error, color: Colors.white, size: 64);
},
),
),
);
},
),
);
}
}