split files
This commit is contained in:
parent
67a5bd3f16
commit
4c49c8831e
4 changed files with 135 additions and 128 deletions
|
@ -3,15 +3,15 @@ import 'dart:math';
|
|||
|
||||
import 'package:aves/model/image_entry.dart';
|
||||
import 'package:aves/widgets/fullscreen/info_page.dart';
|
||||
import 'package:aves/widgets/fullscreen/overlay.dart';
|
||||
import 'package:chewie/chewie.dart';
|
||||
import 'package:aves/widgets/fullscreen/overlay_bottom.dart';
|
||||
import 'package:aves/widgets/fullscreen/overlay_top.dart';
|
||||
import 'package:aves/widgets/fullscreen/video.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/scheduler.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:photo_view/photo_view.dart';
|
||||
import 'package:photo_view/photo_view_gallery.dart';
|
||||
import 'package:screen/screen.dart';
|
||||
import 'package:video_player/video_player.dart';
|
||||
|
||||
class FullscreenPage extends StatefulWidget {
|
||||
final List<ImageEntry> entries;
|
||||
|
@ -244,46 +244,3 @@ class ImagePageState extends State<ImagePage> with AutomaticKeepAliveClientMixin
|
|||
@override
|
||||
bool get wantKeepAlive => true;
|
||||
}
|
||||
|
||||
class AvesVideo extends StatefulWidget {
|
||||
final ImageEntry entry;
|
||||
|
||||
const AvesVideo({Key key, this.entry}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<StatefulWidget> createState() => AvesVideoState();
|
||||
}
|
||||
|
||||
class AvesVideoState extends State<AvesVideo> {
|
||||
VideoPlayerController videoPlayerController;
|
||||
ChewieController chewieController;
|
||||
|
||||
ImageEntry get entry => widget.entry;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
videoPlayerController = VideoPlayerController.file(
|
||||
File(entry.path),
|
||||
);
|
||||
chewieController = ChewieController(
|
||||
videoPlayerController: videoPlayerController,
|
||||
aspectRatio: entry.aspectRatio,
|
||||
autoInitialize: true,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
videoPlayerController.dispose();
|
||||
chewieController.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Chewie(
|
||||
controller: chewieController,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,66 +1,12 @@
|
|||
import 'dart:math';
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:aves/model/android_app_service.dart';
|
||||
import 'package:aves/model/image_entry.dart';
|
||||
import 'package:aves/model/metadata_service.dart';
|
||||
import 'package:aves/widgets/common/blurred.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
|
||||
const kOverlayBackground = Colors.black26;
|
||||
|
||||
class FullscreenTopOverlay extends StatelessWidget {
|
||||
final List<ImageEntry> entries;
|
||||
final int index;
|
||||
final Animation<double> scale;
|
||||
final EdgeInsets viewInsets, viewPadding;
|
||||
|
||||
ImageEntry get entry => entries[index];
|
||||
|
||||
const FullscreenTopOverlay({
|
||||
Key key,
|
||||
this.entries,
|
||||
this.index,
|
||||
this.scale,
|
||||
this.viewInsets,
|
||||
this.viewPadding,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SafeArea(
|
||||
minimum: (viewInsets ?? EdgeInsets.zero) + (viewPadding ?? EdgeInsets.zero),
|
||||
child: Padding(
|
||||
padding: EdgeInsets.all(8.0),
|
||||
child: Row(
|
||||
children: [
|
||||
OverlayButton(
|
||||
scale: scale,
|
||||
child: BackButton(),
|
||||
),
|
||||
Spacer(),
|
||||
OverlayButton(
|
||||
scale: scale,
|
||||
child: IconButton(
|
||||
icon: Icon(Icons.share),
|
||||
onPressed: share,
|
||||
tooltip: 'Share',
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
delete() {}
|
||||
|
||||
share() {
|
||||
AndroidAppService.share(entry.uri, entry.mimeType);
|
||||
}
|
||||
}
|
||||
|
||||
class FullscreenBottomOverlay extends StatefulWidget {
|
||||
final List<ImageEntry> entries;
|
||||
final int index;
|
||||
|
@ -111,7 +57,7 @@ class _FullscreenBottomOverlayState extends State<FullscreenBottomOverlay> {
|
|||
return IgnorePointer(
|
||||
child: BlurredRect(
|
||||
child: Container(
|
||||
color: kOverlayBackground,
|
||||
color: Colors.black26,
|
||||
padding: viewInsets + viewPadding.copyWith(top: 0),
|
||||
child: Padding(
|
||||
padding: innerPadding,
|
||||
|
@ -204,30 +150,3 @@ class _FullscreenBottomOverlayContent extends StatelessWidget {
|
|||
);
|
||||
}
|
||||
}
|
||||
|
||||
class OverlayButton extends StatelessWidget {
|
||||
final Animation<double> scale;
|
||||
final Widget child;
|
||||
|
||||
const OverlayButton({Key key, this.scale, this.child}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ScaleTransition(
|
||||
scale: scale,
|
||||
child: BlurredOval(
|
||||
child: Material(
|
||||
type: MaterialType.circle,
|
||||
color: kOverlayBackground,
|
||||
child: Ink(
|
||||
decoration: BoxDecoration(
|
||||
border: Border.all(color: Colors.white30, width: 0.5),
|
||||
shape: BoxShape.circle,
|
||||
),
|
||||
child: child,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
82
lib/widgets/fullscreen/overlay_top.dart
Normal file
82
lib/widgets/fullscreen/overlay_top.dart
Normal file
|
@ -0,0 +1,82 @@
|
|||
import 'package:aves/model/android_app_service.dart';
|
||||
import 'package:aves/model/image_entry.dart';
|
||||
import 'package:aves/widgets/common/blurred.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class FullscreenTopOverlay extends StatelessWidget {
|
||||
final List<ImageEntry> entries;
|
||||
final int index;
|
||||
final Animation<double> scale;
|
||||
final EdgeInsets viewInsets, viewPadding;
|
||||
|
||||
ImageEntry get entry => entries[index];
|
||||
|
||||
const FullscreenTopOverlay({
|
||||
Key key,
|
||||
this.entries,
|
||||
this.index,
|
||||
this.scale,
|
||||
this.viewInsets,
|
||||
this.viewPadding,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SafeArea(
|
||||
minimum: (viewInsets ?? EdgeInsets.zero) + (viewPadding ?? EdgeInsets.zero),
|
||||
child: Padding(
|
||||
padding: EdgeInsets.all(8.0),
|
||||
child: Row(
|
||||
children: [
|
||||
OverlayButton(
|
||||
scale: scale,
|
||||
child: BackButton(),
|
||||
),
|
||||
Spacer(),
|
||||
OverlayButton(
|
||||
scale: scale,
|
||||
child: IconButton(
|
||||
icon: Icon(Icons.share),
|
||||
onPressed: share,
|
||||
tooltip: 'Share',
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
delete() {}
|
||||
|
||||
share() {
|
||||
AndroidAppService.share(entry.uri, entry.mimeType);
|
||||
}
|
||||
}
|
||||
|
||||
class OverlayButton extends StatelessWidget {
|
||||
final Animation<double> scale;
|
||||
final Widget child;
|
||||
|
||||
const OverlayButton({Key key, this.scale, this.child}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ScaleTransition(
|
||||
scale: scale,
|
||||
child: BlurredOval(
|
||||
child: Material(
|
||||
type: MaterialType.circle,
|
||||
color: Colors.black26,
|
||||
child: Ink(
|
||||
decoration: BoxDecoration(
|
||||
border: Border.all(color: Colors.white30, width: 0.5),
|
||||
shape: BoxShape.circle,
|
||||
),
|
||||
child: child,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
49
lib/widgets/fullscreen/video.dart
Normal file
49
lib/widgets/fullscreen/video.dart
Normal file
|
@ -0,0 +1,49 @@
|
|||
import 'dart:io';
|
||||
|
||||
import 'package:aves/model/image_entry.dart';
|
||||
import 'package:chewie/chewie.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:video_player/video_player.dart';
|
||||
|
||||
class AvesVideo extends StatefulWidget {
|
||||
final ImageEntry entry;
|
||||
|
||||
const AvesVideo({Key key, this.entry}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<StatefulWidget> createState() => AvesVideoState();
|
||||
}
|
||||
|
||||
class AvesVideoState extends State<AvesVideo> {
|
||||
VideoPlayerController videoPlayerController;
|
||||
ChewieController chewieController;
|
||||
|
||||
ImageEntry get entry => widget.entry;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
videoPlayerController = VideoPlayerController.file(
|
||||
File(entry.path),
|
||||
);
|
||||
chewieController = ChewieController(
|
||||
videoPlayerController: videoPlayerController,
|
||||
aspectRatio: entry.aspectRatio,
|
||||
autoInitialize: true,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
videoPlayerController.dispose();
|
||||
chewieController.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Chewie(
|
||||
controller: chewieController,
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue