diff --git a/lib/screens/person.dart b/lib/screens/person.dart index 77aff8a..597a9e0 100644 --- a/lib/screens/person.dart +++ b/lib/screens/person.dart @@ -3,6 +3,8 @@ import 'package:flutter/material.dart'; import '../backend.dart'; import '../database.dart'; +import 'work.dart'; + class PersonScreen extends StatelessWidget { final Person person; @@ -28,6 +30,14 @@ class PersonScreen extends StatelessWidget { final work = snapshot.data[index]; return ListTile( title: Text(work.title), + onTap: () => Navigator.push( + context, + MaterialPageRoute( + builder: (context) => WorkScreen( + work: work, + ), + ), + ), ); }, ); diff --git a/lib/screens/work.dart b/lib/screens/work.dart new file mode 100644 index 0000000..38b487d --- /dev/null +++ b/lib/screens/work.dart @@ -0,0 +1,41 @@ +import 'package:flutter/material.dart'; + +import '../backend.dart'; +import '../database.dart'; + +class WorkScreen extends StatelessWidget { + final Work work; + + WorkScreen({ + this.work, + }); + + @override + Widget build(BuildContext context) { + final backend = Backend.of(context); + + return Scaffold( + appBar: AppBar( + title: Text(work.title), + ), + body: StreamBuilder>( + stream: backend.db.workParts(work.id).watch(), + builder: (context, snapshot) { + if (snapshot.hasData) { + return ListView.builder( + itemCount: snapshot.data.length, + itemBuilder: (context, index) { + final part = snapshot.data[index]; + return ListTile( + title: Text(part.title), + ); + }, + ); + } else { + return Container(); + } + }, + ), + ); + } +}