album: added thumbnail tags

This commit is contained in:
Thibault Deckers 2019-08-04 19:35:16 +09:00
parent 4c49c8831e
commit 53917de437
4 changed files with 73 additions and 38 deletions

View file

@ -1,6 +1,6 @@
import 'package:aves/model/image_decode_service.dart';
import 'package:aves/model/image_entry.dart';
import 'package:aves/thumbnail_collection.dart';
import 'package:aves/widgets/album/thumbnail_collection.dart';
import 'package:aves/widgets/common/fake_app_bar.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

View file

@ -3,6 +3,7 @@ import 'dart:typed_data';
import 'package:aves/model/image_decode_service.dart';
import 'package:aves/model/image_entry.dart';
import 'package:aves/widgets/album/thumbnail_tags.dart';
import 'package:flutter/material.dart';
import 'package:transparent_image/transparent_image.dart';
@ -103,9 +104,8 @@ class ThumbnailState extends State<Thumbnail> {
iconSize: iconSize,
)
else if (entry.isGif)
Icon(
Icons.gif,
size: iconSize,
GifTag(
iconSize: iconSize,
),
],
);
@ -114,36 +114,3 @@ class ThumbnailState extends State<Thumbnail> {
);
}
}
class VideoTag extends StatelessWidget {
final ImageEntry entry;
final double iconSize;
const VideoTag({Key key, this.entry, this.iconSize}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.all(1),
padding: EdgeInsets.only(right: iconSize / 4),
decoration: BoxDecoration(
color: Color(0xBB000000),
borderRadius: BorderRadius.all(
Radius.circular(iconSize),
),
),
child: Row(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Icon(
Icons.play_circle_outline,
size: iconSize,
),
SizedBox(width: 2),
Text(entry.durationText)
],
),
);
}
}

View file

@ -1,5 +1,5 @@
import 'package:aves/model/image_entry.dart';
import 'package:aves/thumbnail.dart';
import 'package:aves/widgets/album/thumbnail.dart';
import 'package:aves/utils/date_utils.dart';
import 'package:aves/widgets/common/draggable_scrollbar.dart';
import 'package:aves/widgets/common/outlined_text.dart';

View file

@ -0,0 +1,68 @@
import 'package:aves/model/image_entry.dart';
import 'package:flutter/material.dart';
class VideoTag extends StatelessWidget {
final ImageEntry entry;
final double iconSize;
const VideoTag({Key key, this.entry, this.iconSize}) : super(key: key);
@override
Widget build(BuildContext context) {
return Tag(
icon: Icons.play_circle_outline,
iconSize: iconSize,
text: entry.durationText,
);
}
}
class GifTag extends StatelessWidget {
final double iconSize;
const GifTag({Key key, this.iconSize}) : super(key: key);
@override
Widget build(BuildContext context) {
return Tag(
icon: Icons.gif,
iconSize: iconSize,
);
}
}
class Tag extends StatelessWidget {
final IconData icon;
final double iconSize;
final String text;
const Tag({Key key, this.icon, this.iconSize, this.text}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.all(1),
padding: text != null ? EdgeInsets.only(right: iconSize / 4) : null,
decoration: BoxDecoration(
color: Color(0xBB000000),
borderRadius: BorderRadius.all(
Radius.circular(iconSize),
),
),
child: Row(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Icon(
icon,
size: iconSize,
),
if (text != null) ...[
SizedBox(width: 2),
Text(text),
]
],
),
);
}
}