From 2ee49246e41a10f7864ae22b2cd5380329b7075d Mon Sep 17 00:00:00 2001 From: Elias Projahn Date: Wed, 4 Dec 2019 20:48:55 +0100 Subject: [PATCH] Add person selector --- lib/screens/home.dart | 10 ++++++++++ lib/selectors/person.dart | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 lib/selectors/person.dart diff --git a/lib/screens/home.dart b/lib/screens/home.dart index f50b2ab..9dc9c6e 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import '../backend.dart'; +import '../selectors/person.dart'; class HomeScreen extends StatelessWidget { @override @@ -22,6 +23,15 @@ class HomeScreen extends StatelessWidget { title: Text('Play/Pause'), onTap: backend.playPause, ), + ListTile( + title: Text('Select person'), + onTap: () => Navigator.push( + context, + MaterialPageRoute( + builder: (context) => PersonsSelector(), + fullscreenDialog: true, + )), + ), ], ), ); diff --git a/lib/selectors/person.dart b/lib/selectors/person.dart new file mode 100644 index 0000000..937e2ac --- /dev/null +++ b/lib/selectors/person.dart @@ -0,0 +1,35 @@ +import 'package:flutter/material.dart'; + +import '../backend.dart'; + +class PersonsSelector extends StatelessWidget { + @override + Widget build(BuildContext context) { + final backend = Backend.of(context); + + return Scaffold( + appBar: AppBar( + title: Text('Select person'), + ), + body: StreamBuilder( + stream: backend.db.allPersons().watch(), + builder: (context, snapshot) { + if (snapshot.hasData) { + return ListView.builder( + itemCount: snapshot.data.length, + itemBuilder: (context, index) { + final person = snapshot.data[index]; + + return ListTile( + title: Text('${person.lastName}, ${person.firstName}'), + onTap: () => Navigator.pop(context, person), + ); + }, + ); + } else { + return Container(); + } + }), + ); + } +}