Skip to content

Commit

Permalink
chore: abosrbers for dismissible queues, #69
Browse files Browse the repository at this point in the history
to allow more space for swiping right to open drawer
  • Loading branch information
MSOB7YY committed Nov 29, 2023
1 parent 5c426a8 commit fdf9237
Show file tree
Hide file tree
Showing 2 changed files with 90 additions and 78 deletions.
23 changes: 1 addition & 22 deletions lib/ui/pages/queues_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,9 @@ import 'package:flutter_scrollbar_modified/flutter_scrollbar_modified.dart';
import 'package:flutter_staggered_animations/flutter_staggered_animations.dart';
import 'package:get/get.dart';

import 'package:namida/controller/navigator_controller.dart';
import 'package:namida/controller/queue_controller.dart';
import 'package:namida/core/dimensions.dart';
import 'package:namida/core/namida_converter_ext.dart';
import 'package:namida/core/translations/language.dart';
import 'package:namida/ui/widgets/custom_widgets.dart';
import 'package:namida/ui/widgets/library/queue_tile.dart';

Expand Down Expand Up @@ -37,26 +35,7 @@ class QueuesPage extends StatelessWidget {
return AnimatingTile(
key: ValueKey(i),
position: i,
child: FadeDismissible(
key: Key("${i}_${q.date}"),
onDismissed: (onDismissed) {
final oldQueue = q;
QueueController.inst.removeQueue(oldQueue);
snackyy(
title: lang.UNDO_CHANGES,
message: lang.UNDO_CHANGES_DELETED_QUEUE,
displaySeconds: 3,
button: TextButton(
onPressed: () {
QueueController.inst.reAddQueue(oldQueue);
Get.closeAllSnackbars();
},
child: Text(lang.UNDO),
),
);
},
child: QueueTile(queue: q),
),
child: QueueTile(queue: q),
);
},
);
Expand Down
145 changes: 89 additions & 56 deletions lib/ui/widgets/library/queue_tile.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,13 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart';

import 'package:namida/class/queue.dart';
import 'package:namida/controller/navigator_controller.dart';
import 'package:namida/controller/queue_controller.dart';
import 'package:namida/core/dimensions.dart';
import 'package:namida/core/extensions.dart';
import 'package:namida/core/functions.dart';
import 'package:namida/core/namida_converter_ext.dart';
import 'package:namida/core/translations/language.dart';
import 'package:namida/ui/widgets/custom_widgets.dart';
import 'package:namida/ui/dialogs/common_dialogs.dart';
import 'package:namida/ui/widgets/library/multi_artwork_container.dart';
Expand All @@ -18,6 +21,14 @@ class QueueTile extends StatelessWidget {
@override
Widget build(BuildContext context) {
final hero = 'queue_${queue.date}';
const absorberHeight = Dimensions.queueTileItemExtent * 0.2;
final absorberWidget = ColoredBox(
color: Colors.transparent,
child: SizedBox(
height: absorberHeight,
width: context.width,
),
);
return Container(
margin: const EdgeInsets.symmetric(horizontal: 8.0).add(const EdgeInsets.only(bottom: Dimensions.tileBottomMargin6)),
decoration: BoxDecoration(
Expand All @@ -29,71 +40,93 @@ class QueueTile extends StatelessWidget {
)
],
),
child: NamidaInkWell(
bgColor: context.theme.cardColor,
onTap: () => NamidaOnTaps.inst.onQueueTap(queue),
onLongPress: () => NamidaDialogs.inst.showQueueDialog(queue.date),
borderRadius: 16.0,
child: SizedBox(
height: Dimensions.queueTileItemExtent,
child: Padding(
padding: const EdgeInsets.symmetric(vertical: Dimensions.tileVerticalPadding),
child: Row(
children: [
SizedBox(
height: Dimensions.queueThumbnailSize,
child: MultiArtworkContainer(
heroTag: hero,
size: Dimensions.queueThumbnailSize,
paths: queue.tracks.toImagePaths(),
),
child: Stack(
children: [
FadeDismissible(
direction: DismissDirection.endToStart,
key: Key("${queue.date}"),
onDismissed: (onDismissed) {
final oldQueue = queue;
QueueController.inst.removeQueue(oldQueue);
snackyy(
title: lang.UNDO_CHANGES,
message: lang.UNDO_CHANGES_DELETED_QUEUE,
displaySeconds: 3,
button: TextButton(
onPressed: () {
QueueController.inst.reAddQueue(oldQueue);
Get.closeAllSnackbars();
},
child: Text(lang.UNDO),
),
Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
NamidaHero(
tag: 'line1_$hero',
child: Text(
queue.date.dateAndClockFormattedOriginal,
style: context.textTheme.displayMedium?.copyWith(
fontSize: 14.0.multipliedFontScale,
);
},
child: NamidaInkWell(
bgColor: context.theme.cardColor,
onTap: () => NamidaOnTaps.inst.onQueueTap(queue),
onLongPress: () => NamidaDialogs.inst.showQueueDialog(queue.date),
borderRadius: 16.0,
height: Dimensions.queueTileItemExtent,
padding: const EdgeInsets.symmetric(vertical: Dimensions.tileVerticalPadding),
child: Row(
children: [
SizedBox(
height: Dimensions.queueThumbnailSize,
child: MultiArtworkContainer(
heroTag: hero,
size: Dimensions.queueThumbnailSize,
paths: queue.tracks.toImagePaths(),
),
),
Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
NamidaHero(
tag: 'line1_$hero',
child: Text(
queue.date.dateAndClockFormattedOriginal,
style: context.textTheme.displayMedium?.copyWith(
fontSize: 14.0.multipliedFontScale,
),
overflow: TextOverflow.ellipsis,
),
overflow: TextOverflow.ellipsis,
),
),
const SizedBox(height: 1.0),
NamidaHero(
tag: 'line2_$hero',
child: Text(
[queue.toText(), queue.tracks.displayTrackKeyword].join(' - '),
style: context.textTheme.displaySmall?.copyWith(
fontWeight: FontWeight.w500,
const SizedBox(height: 1.0),
NamidaHero(
tag: 'line2_$hero',
child: Text(
[queue.toText(), queue.tracks.displayTrackKeyword].join(' - '),
style: context.textTheme.displaySmall?.copyWith(
fontWeight: FontWeight.w500,
),
overflow: TextOverflow.ellipsis,
),
overflow: TextOverflow.ellipsis,
),
],
),
const Spacer(),
Text(
queue.tracks.totalDurationFormatted,
style: context.textTheme.displaySmall?.copyWith(
fontWeight: FontWeight.w500,
fontSize: 12.5.multipliedFontScale,
),
],
),
const Spacer(),
Text(
queue.tracks.totalDurationFormatted,
style: context.textTheme.displaySmall?.copyWith(
fontWeight: FontWeight.w500,
fontSize: 12.5.multipliedFontScale,
overflow: TextOverflow.ellipsis,
),
overflow: TextOverflow.ellipsis,
),
const SizedBox(width: 4.0),
MoreIcon(
padding: 6.0,
onPressed: () => NamidaDialogs.inst.showQueueDialog(queue.date),
),
const SizedBox(width: 8.0),
],
const SizedBox(width: 4.0),
MoreIcon(
padding: 6.0,
onPressed: () => NamidaDialogs.inst.showQueueDialog(queue.date),
),
const SizedBox(width: 8.0),
],
),
),
),
),
Positioned(top: 0, child: absorberWidget),
Positioned(bottom: 0, child: absorberWidget),
],
),
);
}
Expand Down

0 comments on commit fdf9237

Please sign in to comment.