mirror of
https://github.com/austinried/subtracks.git
synced 2026-02-10 06:52:43 +01:00
songs list tab
This commit is contained in:
@@ -66,19 +66,25 @@ class SongListTile extends StatelessWidget {
|
||||
const SongListTile({
|
||||
super.key,
|
||||
required this.song,
|
||||
this.coverArt,
|
||||
this.showLeading = false,
|
||||
this.onTap,
|
||||
});
|
||||
|
||||
final Song song;
|
||||
final String? coverArt;
|
||||
final bool showLeading;
|
||||
final void Function()? onTap;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ListTile(
|
||||
// leading: CoverArtImage(
|
||||
// coverArt: song.coverArt,
|
||||
// thumbnail: true,
|
||||
// ),
|
||||
leading: showLeading
|
||||
? CoverArtImage(
|
||||
coverArt: coverArt,
|
||||
thumbnail: true,
|
||||
)
|
||||
: null,
|
||||
title: Text(song.title),
|
||||
subtitle: Text(song.artist ?? ''),
|
||||
onTap: onTap,
|
||||
|
||||
@@ -2,12 +2,11 @@ import 'package:flutter/material.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart';
|
||||
|
||||
import '../../../database/dao/library_dao.dart';
|
||||
import '../../../database/query.dart';
|
||||
import '../../../sources/models.dart';
|
||||
import '../../hooks/use_on_source.dart';
|
||||
import '../../hooks/use_paging_controller.dart';
|
||||
import '../../state/database.dart';
|
||||
import 'items.dart';
|
||||
|
||||
const kPageSize = 30;
|
||||
|
||||
@@ -15,14 +14,17 @@ class SongsList extends HookConsumerWidget {
|
||||
const SongsList({
|
||||
super.key,
|
||||
required this.query,
|
||||
required this.itemBuilder,
|
||||
});
|
||||
|
||||
final SongsQuery query;
|
||||
final Widget Function(BuildContext context, SongListItem item, int index)
|
||||
itemBuilder;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final db = ref.watch(databaseProvider);
|
||||
final controller = usePagingController<int, Song>(
|
||||
final controller = usePagingController<int, SongListItem>(
|
||||
getNextPageKey: (state) =>
|
||||
state.lastPageIsEmpty ? null : state.nextIntPageKey,
|
||||
fetchPage: (pageKey) => db.libraryDao.listSongs(
|
||||
@@ -42,13 +44,8 @@ class SongsList extends HookConsumerWidget {
|
||||
return PagedSliverList(
|
||||
state: state,
|
||||
fetchNextPage: fetchNextPage,
|
||||
builderDelegate: PagedChildBuilderDelegate<Song>(
|
||||
itemBuilder: (context, item, index) {
|
||||
return SongListTile(
|
||||
song: item,
|
||||
onTap: () async {},
|
||||
);
|
||||
},
|
||||
builderDelegate: PagedChildBuilderDelegate<SongListItem>(
|
||||
itemBuilder: itemBuilder,
|
||||
),
|
||||
);
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user