gallery_picker/lib/user_widgets/photo_provider.dart
2022-12-30 05:18:18 +03:00

60 lines
1.2 KiB
Dart

import 'package:flutter/material.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
State<PhotoProvider> createState() => _PhotoProviderState();
}
class _PhotoProviderState extends State<PhotoProvider> {
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(() {});
}
}
@override
Widget build(BuildContext context) {
if (_media != widget.media) {
_media = widget.media;
if (_media.data == null) {
initMedia();
}
}
return _media.data == null
? SizedBox(
width: widget.width,
height: widget.height,
)
: Image.memory(
_media.data!,
width: widget.width,
height: widget.height,
fit: widget.fit,
);
}
}