split files

This commit is contained in:
Thibault Deckers 2019-08-04 19:22:52 +09:00
parent 67a5bd3f16
commit 4c49c8831e
4 changed files with 135 additions and 128 deletions

View file

@ -3,15 +3,15 @@ import 'dart:math';
import 'package:aves/model/image_entry.dart'; import 'package:aves/model/image_entry.dart';
import 'package:aves/widgets/fullscreen/info_page.dart'; import 'package:aves/widgets/fullscreen/info_page.dart';
import 'package:aves/widgets/fullscreen/overlay.dart'; import 'package:aves/widgets/fullscreen/overlay_bottom.dart';
import 'package:chewie/chewie.dart'; import 'package:aves/widgets/fullscreen/overlay_top.dart';
import 'package:aves/widgets/fullscreen/video.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart'; import 'package:flutter/scheduler.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:photo_view/photo_view.dart'; import 'package:photo_view/photo_view.dart';
import 'package:photo_view/photo_view_gallery.dart'; import 'package:photo_view/photo_view_gallery.dart';
import 'package:screen/screen.dart'; import 'package:screen/screen.dart';
import 'package:video_player/video_player.dart';
class FullscreenPage extends StatefulWidget { class FullscreenPage extends StatefulWidget {
final List<ImageEntry> entries; final List<ImageEntry> entries;
@ -244,46 +244,3 @@ class ImagePageState extends State<ImagePage> with AutomaticKeepAliveClientMixin
@override @override
bool get wantKeepAlive => true; 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,
);
}
}

View file

@ -1,66 +1,12 @@
import 'dart:math'; import 'dart:math';
import 'dart:ui'; import 'dart:ui';
import 'package:aves/model/android_app_service.dart';
import 'package:aves/model/image_entry.dart'; import 'package:aves/model/image_entry.dart';
import 'package:aves/model/metadata_service.dart'; import 'package:aves/model/metadata_service.dart';
import 'package:aves/widgets/common/blurred.dart'; import 'package:aves/widgets/common/blurred.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:intl/intl.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 { class FullscreenBottomOverlay extends StatefulWidget {
final List<ImageEntry> entries; final List<ImageEntry> entries;
final int index; final int index;
@ -111,7 +57,7 @@ class _FullscreenBottomOverlayState extends State<FullscreenBottomOverlay> {
return IgnorePointer( return IgnorePointer(
child: BlurredRect( child: BlurredRect(
child: Container( child: Container(
color: kOverlayBackground, color: Colors.black26,
padding: viewInsets + viewPadding.copyWith(top: 0), padding: viewInsets + viewPadding.copyWith(top: 0),
child: Padding( child: Padding(
padding: innerPadding, 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,
),
),
),
);
}
}

View 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,
),
),
),
);
}
}

View 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,
);
}
}