diff --git a/lib/widgets/recording_tile.dart b/lib/widgets/recording_tile.dart new file mode 100644 index 0000000..f75716b --- /dev/null +++ b/lib/widgets/recording_tile.dart @@ -0,0 +1,56 @@ +import 'package:flutter/material.dart'; + +import '../backend.dart'; +import '../database.dart'; + +import 'texts.dart'; + +class RecordingTile extends StatelessWidget { + final int recordingId; + final void Function() onTap; + + RecordingTile({ + this.recordingId, + this.onTap, + }); + + @override + Widget build(BuildContext context) { + final backend = Backend.of(context); + final textTheme = Theme.of(context).textTheme; + + return StreamBuilder( + stream: backend.db.recordingById(recordingId).watchSingle(), + builder: (context, snapshot) => ListTile( + title: Padding( + padding: const EdgeInsets.symmetric( + vertical: 8.0, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (snapshot.hasData) ...[ + DefaultTextStyle( + style: textTheme.subtitle1, + child: ComposersText(snapshot.data.work), + ), + DefaultTextStyle( + style: textTheme.headline6, + child: WorkText(snapshot.data.work), + ), + ], + const SizedBox( + height: 4.0, + ), + DefaultTextStyle( + style: textTheme.bodyText1, + child: PerformancesText(recordingId), + ), + ], + ), + ), + onTap: onTap, + ), + ); + } +}