mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-13 07:55:18 +00:00

Downloaded tracks are saved with metadata. Only MP3 file metadata support is available in local track player for now
84 lines
2.8 KiB
Dart
84 lines
2.8 KiB
Dart
import 'package:auto_size_text/auto_size_text.dart';
|
|
import 'package:cached_network_image/cached_network_image.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
import 'package:spotify/spotify.dart';
|
|
import 'package:spotube/provider/Downloader.dart';
|
|
import 'package:spotube/utils/type_conversion_utils.dart';
|
|
|
|
class UserDownloads extends HookConsumerWidget {
|
|
const UserDownloads({Key? key}) : super(key: key);
|
|
|
|
@override
|
|
Widget build(BuildContext context, ref) {
|
|
final downloader = ref.watch(downloaderProvider);
|
|
|
|
return Column(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
Padding(
|
|
padding: const EdgeInsets.symmetric(horizontal: 15),
|
|
child: Row(
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
children: [
|
|
Expanded(
|
|
child: AutoSizeText(
|
|
"Currently downloading (${downloader.currentlyRunning})",
|
|
maxLines: 1,
|
|
style: Theme.of(context).textTheme.headline5,
|
|
),
|
|
),
|
|
const SizedBox(width: 10),
|
|
ElevatedButton(
|
|
style: ElevatedButton.styleFrom(
|
|
primary: Colors.red[50],
|
|
onPrimary: Colors.red[400],
|
|
),
|
|
child: const Text("Cancel All"),
|
|
onPressed: downloader.currentlyRunning > 0
|
|
? downloader.cancelAll
|
|
: null,
|
|
),
|
|
],
|
|
),
|
|
),
|
|
Expanded(
|
|
child: ListView.builder(
|
|
itemCount: downloader.inQueue.length,
|
|
itemBuilder: (context, index) {
|
|
final track = downloader.inQueue.elementAt(index);
|
|
return ListTile(
|
|
title: Text(track.name!),
|
|
leading: Padding(
|
|
padding: const EdgeInsets.symmetric(horizontal: 5),
|
|
child: ClipRRect(
|
|
borderRadius: BorderRadius.circular(10),
|
|
child: CachedNetworkImage(
|
|
height: 40,
|
|
width: 40,
|
|
imageUrl: TypeConversionUtils.image_X_UrlString(
|
|
track.album?.images,
|
|
),
|
|
),
|
|
),
|
|
),
|
|
trailing: const SizedBox(
|
|
width: 30,
|
|
height: 30,
|
|
child: CircularProgressIndicator.adaptive(),
|
|
),
|
|
horizontalTitleGap: 5,
|
|
subtitle: Text(
|
|
TypeConversionUtils.artists_X_String(
|
|
track.artists ?? <Artist>[],
|
|
),
|
|
),
|
|
);
|
|
},
|
|
),
|
|
),
|
|
],
|
|
);
|
|
}
|
|
}
|