musicus_mobile/lib/widgets/work_tile.dart

57 lines
1.5 KiB
Dart
Raw Normal View History

import 'package:flutter/material.dart';
import '../backend.dart';
import '../database.dart';
class WorkTile extends StatelessWidget {
final Widget leading;
final int workId;
final void Function() onTap;
WorkTile({
this.leading,
this.workId,
this.onTap,
});
@override
Widget build(BuildContext context) {
final backend = Backend.of(context);
return StreamBuilder<Work>(
stream: backend.db.workById(workId).watchSingle(),
builder: (context, snapshot) {
final titleText = snapshot.data?.title ?? '...';
return StreamBuilder<List<Person>>(
stream: backend.db.composersByWork(workId).watch(),
builder: (context, snapshot) {
final subtitleText = snapshot.hasData
? snapshot.data
.map((p) => '${p.firstName} ${p.lastName}')
.join(', ')
: '...';
return ListTile(
leading: leading,
2020-04-05 20:24:29 +02:00
title: DefaultTextStyle(
style: Theme.of(context).textTheme.bodyText2,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
subtitleText,
style: TextStyle(fontWeight: FontWeight.bold),
),
Text(titleText),
],
),
),
onTap: onTap ?? null,
);
},
);
},
);
}
}