mirror of
https://github.com/austinried/subtracks.git
synced 2025-12-29 01:19:28 +01:00
add artist radio
This commit is contained in:
parent
979a4b7c73
commit
8fbc5e6ce4
2
TODO.md
2
TODO.md
@ -14,8 +14,6 @@
|
|||||||
- [ ] Library list display modes
|
- [ ] Library list display modes
|
||||||
- [ ] Search
|
- [ ] Search
|
||||||
- [ ] Individual "more" results pages
|
- [ ] Individual "more" results pages
|
||||||
- [ ] Radio modes
|
|
||||||
- [ ] Artist
|
|
||||||
- [ ] Now playing gestures
|
- [ ] Now playing gestures
|
||||||
- [ ] Swipe bar/album to skip
|
- [ ] Swipe bar/album to skip
|
||||||
- [ ] Double-tap to seek forward/back (bar only)
|
- [ ] Double-tap to seek forward/back (bar only)
|
||||||
|
|||||||
@ -1,13 +1,19 @@
|
|||||||
import 'dart:math';
|
import 'dart:math';
|
||||||
|
|
||||||
import 'package:auto_route/auto_route.dart';
|
import 'package:auto_route/auto_route.dart';
|
||||||
|
import 'package:fast_immutable_collections/fast_immutable_collections.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
|
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
|
|
||||||
|
import '../../database/database.dart';
|
||||||
|
import '../../models/query.dart';
|
||||||
|
import '../../models/support.dart';
|
||||||
|
import '../../services/audio_service.dart';
|
||||||
import '../../state/music.dart';
|
import '../../state/music.dart';
|
||||||
import '../../state/settings.dart';
|
import '../../state/settings.dart';
|
||||||
import '../app_router.dart';
|
import '../app_router.dart';
|
||||||
|
import '../buttons.dart';
|
||||||
import '../images.dart';
|
import '../images.dart';
|
||||||
import '../items.dart';
|
import '../items.dart';
|
||||||
|
|
||||||
@ -27,6 +33,26 @@ class ArtistPage extends HookConsumerWidget {
|
|||||||
final albums = ref.watch(albumsByArtistIdProvider(id));
|
final albums = ref.watch(albumsByArtistIdProvider(id));
|
||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
|
floatingActionButton: RadioPlayFab(
|
||||||
|
onPressed: () => artist.hasValue
|
||||||
|
? ref.read(audioControlProvider).playRadio(
|
||||||
|
context: QueueContextType.artist,
|
||||||
|
contextId: artist.valueOrNull!.id,
|
||||||
|
query: ListQuery(
|
||||||
|
filters: IList([
|
||||||
|
FilterWith.equals(
|
||||||
|
column: 'artist_id',
|
||||||
|
value: artist.valueOrNull!.id,
|
||||||
|
)
|
||||||
|
]),
|
||||||
|
),
|
||||||
|
getSongs: (query) => ref
|
||||||
|
.read(databaseProvider)
|
||||||
|
.songsList(ref.read(sourceIdProvider), query)
|
||||||
|
.get(),
|
||||||
|
)
|
||||||
|
: null,
|
||||||
|
),
|
||||||
body: CustomScrollView(
|
body: CustomScrollView(
|
||||||
slivers: [
|
slivers: [
|
||||||
SliverToBoxAdapter(
|
SliverToBoxAdapter(
|
||||||
|
|||||||
@ -68,7 +68,8 @@ enum QueueContextType {
|
|||||||
album('album'),
|
album('album'),
|
||||||
playlist('playlist'),
|
playlist('playlist'),
|
||||||
library('library'),
|
library('library'),
|
||||||
genre('genre');
|
genre('genre'),
|
||||||
|
artist('artist');
|
||||||
|
|
||||||
const QueueContextType(this.value);
|
const QueueContextType(this.value);
|
||||||
final String value;
|
final String value;
|
||||||
|
|||||||
@ -28,6 +28,7 @@ const _$QueueContextTypeEnumMap = {
|
|||||||
QueueContextType.playlist: 'playlist',
|
QueueContextType.playlist: 'playlist',
|
||||||
QueueContextType.library: 'library',
|
QueueContextType.library: 'library',
|
||||||
QueueContextType.genre: 'genre',
|
QueueContextType.genre: 'genre',
|
||||||
|
QueueContextType.artist: 'artist',
|
||||||
};
|
};
|
||||||
|
|
||||||
_$_MediaItemData _$$_MediaItemDataFromJson(Map<String, dynamic> json) =>
|
_$_MediaItemData _$$_MediaItemDataFromJson(Map<String, dynamic> json) =>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user