diff --git a/lib/screens/home.dart b/lib/screens/home.dart index 74fea22..9ea0c41 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import '../backend.dart'; import '../database.dart'; import '../editors/work.dart'; +import 'person.dart'; class HomeScreen extends StatelessWidget { @override @@ -52,6 +53,14 @@ class HomeScreen extends StatelessWidget { final person = snapshot.data[index]; return ListTile( title: Text('${person.lastName}, ${person.firstName}'), + onTap: () => Navigator.push( + context, + MaterialPageRoute( + builder: (context) => PersonScreen( + person: person, + ), + ), + ), ); }, ); diff --git a/lib/screens/person.dart b/lib/screens/person.dart new file mode 100644 index 0000000..77aff8a --- /dev/null +++ b/lib/screens/person.dart @@ -0,0 +1,41 @@ +import 'package:flutter/material.dart'; + +import '../backend.dart'; +import '../database.dart'; + +class PersonScreen extends StatelessWidget { + final Person person; + + PersonScreen({ + this.person, + }); + + @override + Widget build(BuildContext context) { + final backend = Backend.of(context); + + return Scaffold( + appBar: AppBar( + title: Text('${person.firstName} ${person.lastName}'), + ), + body: StreamBuilder>( + stream: backend.db.worksByComposer(person.id).watch(), + builder: (context, snapshot) { + if (snapshot.hasData) { + return ListView.builder( + itemCount: snapshot.data.length, + itemBuilder: (context, index) { + final work = snapshot.data[index]; + return ListTile( + title: Text(work.title), + ); + }, + ); + } else { + return Container(); + } + }, + ), + ); + } +}