50 lines
1.4 KiB
Dart
50 lines
1.4 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);
|
|
}
|
|
|
|
@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 isNetwork = widget.photoUrls[index].startsWith('http');
|
|
return InteractiveViewer(
|
|
child: Center(
|
|
child: isNetwork
|
|
? Image.network(widget.photoUrls[index])
|
|
: Image.asset(widget.photoUrls[index]),
|
|
),
|
|
);
|
|
},
|
|
),
|
|
);
|
|
}
|
|
} |