lemmur-app-android/lib/widgets/media_view.dart

65 lines
1.9 KiB
Dart
Raw Normal View History

2020-09-10 23:03:50 +02:00
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
2020-09-11 10:54:03 +02:00
import 'package:flutter/services.dart';
2020-09-10 23:03:50 +02:00
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:photo_view/photo_view.dart';
class MediaView extends HookWidget {
final String url;
const MediaView(this.url);
@override
Widget build(BuildContext context) {
var showButtons = useState(true);
2020-09-11 10:54:03 +02:00
useEffect(() => () => SystemChrome.setEnabledSystemUIOverlays([
SystemUiOverlay.bottom,
SystemUiOverlay.top,
]));
if (showButtons.value) {
SystemChrome.setEnabledSystemUIOverlays([
SystemUiOverlay.bottom,
SystemUiOverlay.top,
]);
} else {
SystemChrome.setEnabledSystemUIOverlays([]);
}
2020-09-10 23:03:50 +02:00
return Scaffold(
2020-09-11 11:00:04 +02:00
appBar: showButtons.value
? AppBar(
backgroundColor: Colors.black38,
shadowColor: Colors.transparent,
leading: CloseButton(),
actions: [
2020-09-10 23:03:50 +02:00
IconButton(
icon: Icon(Icons.share),
tooltip: 'share',
onPressed: () {},
),
IconButton(
icon: Icon(Icons.file_download),
tooltip: 'download',
onPressed: () {},
),
2020-09-11 11:00:04 +02:00
],
)
: null,
2020-09-10 23:03:50 +02:00
extendBodyBehindAppBar: true,
body: GestureDetector(
onTapUp: (details) => showButtons.value = !showButtons.value,
child: PhotoView(
minScale: PhotoViewComputedScale.contained,
initialScale: PhotoViewComputedScale.contained,
imageProvider: CachedNetworkImageProvider(url),
heroAttributes: PhotoViewHeroAttributes(tag: url),
loadingBuilder: (context, event) =>
Center(child: CircularProgressIndicator()),
),
),
);
}
}