63 lines
1.3 KiB
Dart
63 lines
1.3 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:video_player/video_player.dart';
|
|
import '../models/media_file.dart';
|
|
|
|
class PhotoProvider extends StatefulWidget {
|
|
final MediaFile media;
|
|
final BoxFit fit;
|
|
final double? width, height;
|
|
|
|
const PhotoProvider({
|
|
super.key,
|
|
required this.media,
|
|
this.fit = BoxFit.contain,
|
|
this.width,
|
|
this.height,
|
|
});
|
|
|
|
@override
|
|
_PhotoProviderState createState() => _PhotoProviderState();
|
|
}
|
|
|
|
class _PhotoProviderState extends State<PhotoProvider> {
|
|
VideoPlayerController? _controller;
|
|
late MediaFile media;
|
|
@override
|
|
void initState() {
|
|
media = widget.media;
|
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
|
initMedia();
|
|
});
|
|
super.initState();
|
|
}
|
|
|
|
Future<void> initMedia() async {
|
|
await media.getData();
|
|
if (mounted) {
|
|
setState(() {});
|
|
}
|
|
}
|
|
|
|
bool anyProcess = false;
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
if (media != widget.media) {
|
|
media = widget.media;
|
|
if (media.data == null) {
|
|
initMedia();
|
|
}
|
|
}
|
|
return media.data == null
|
|
? Container(
|
|
width: widget.width,
|
|
height: widget.height,
|
|
)
|
|
: Image.memory(
|
|
media.data!,
|
|
width: widget.width,
|
|
height: widget.height,
|
|
fit: widget.fit,
|
|
);
|
|
}
|
|
}
|