diff --git a/lib/main.dart b/lib/main.dart index 001d989e6..54d257c22 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -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'; diff --git a/lib/thumbnail.dart b/lib/widgets/album/thumbnail.dart similarity index 79% rename from lib/thumbnail.dart rename to lib/widgets/album/thumbnail.dart index befe64f42..85b57ae6f 100644 --- a/lib/thumbnail.dart +++ b/lib/widgets/album/thumbnail.dart @@ -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 { iconSize: iconSize, ) else if (entry.isGif) - Icon( - Icons.gif, - size: iconSize, + GifTag( + iconSize: iconSize, ), ], ); @@ -114,36 +114,3 @@ class ThumbnailState extends State { ); } } - -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) - ], - ), - ); - } -} diff --git a/lib/thumbnail_collection.dart b/lib/widgets/album/thumbnail_collection.dart similarity index 99% rename from lib/thumbnail_collection.dart rename to lib/widgets/album/thumbnail_collection.dart index a8a31bb93..9ee86cba2 100644 --- a/lib/thumbnail_collection.dart +++ b/lib/widgets/album/thumbnail_collection.dart @@ -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'; diff --git a/lib/widgets/album/thumbnail_tags.dart b/lib/widgets/album/thumbnail_tags.dart new file mode 100644 index 000000000..a69008b0e --- /dev/null +++ b/lib/widgets/album/thumbnail_tags.dart @@ -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), + ] + ], + ), + ); + } +}