From c634b3ab88e63a07bb92de98dd011c5984e1e908 Mon Sep 17 00:00:00 2001 From: Felix Date: Wed, 7 Aug 2019 14:53:57 +0100 Subject: [PATCH] :( --- lib/common/widgets/organisations_dialog.dart | 143 +++++++++++-------- lib/main.dart | 3 - lib/pages/receipt_page_2.dart | 13 +- 3 files changed, 92 insertions(+), 67 deletions(-) diff --git a/lib/common/widgets/organisations_dialog.dart b/lib/common/widgets/organisations_dialog.dart index db1a3c9..9df69d0 100644 --- a/lib/common/widgets/organisations_dialog.dart +++ b/lib/common/widgets/organisations_dialog.dart @@ -3,18 +3,12 @@ import 'dart:async'; import 'package:local_spend/common/apifunctions/find_organisations.dart'; -class FindOrganisations { - - TextField getSearchBar(TextEditingController controller, String hintText) { - return TextField( - controller: controller, - decoration: InputDecoration( - hintText: hintText, - icon: Icon(Icons.search), - ), - ); - } +class FindOrganisations extends StatefulWidget { + @override + _FindOrganisationsState createState() => _FindOrganisationsState(); +} +class _FindOrganisationsState extends State { List getFavourites() { var numItems = 200; var itemsList = new List(); @@ -32,60 +26,97 @@ class FindOrganisations { // todo: get all organisations, favourites and all data from one 'organisations' class or similar // eg items: organisations.getFavourites().orderBy(name), - Future dialog(context) { - var searchBar = getSearchBar(null, "Payee Name"); +// Future dialog(context) { + TextEditingController searchBarText = new TextEditingController(); + var listTitle = "Favourites"; + + void _submitSearch(String search) { + listTitle = "Results for \'" + search + "\'"; + debugPrint("Searched for \'" + search + "\'"); + } + + Widget build(BuildContext context) { var favourites = getFavourites(); - return showDialog( - context: context, - barrierDismissible: true, - builder: (BuildContext context) { - return SimpleDialog( - children: [ - Padding( - padding: EdgeInsets.symmetric(horizontal: 10), - child: searchBar, - ), - - Container( - padding: EdgeInsets.fromLTRB(20, 20, 0, 0), - child: Text( - "Favourites", - style: new TextStyle(fontSize: 23, fontWeight: FontWeight.bold), - ), - ), - - Container( - padding: EdgeInsets.fromLTRB(10, 10, 10, 0), - width: MediaQuery.of(context).size.width * 0.7, - height: MediaQuery.of(context).size.height * 0.67, - - child: Material( - shadowColor: Colors.transparent, - color: Colors.transparent, - child: ListView.builder( - itemCount: favourites.length, - itemBuilder: (context, index) { - return Card( - child: ListTile( - leading: Icon(Icons.person), - title: favourites[index], - trailing: Icon(Icons.arrow_forward_ios), - onTap: () {}, - ) - ); + return SimpleDialog( + children: [ + Padding( + padding: EdgeInsets.fromLTRB(20, 0, 0, 0), + child: Row( + children: [ + Container( + width: 200, + height: 50, + child: TextField( + controller: searchBarText, + decoration: InputDecoration( + hintText: "Payee Name", + ), + onSubmitted: (_) { + _submitSearch(searchBarText.text); }, ), ), + Container( + width: 80, + padding: EdgeInsets.fromLTRB(20, 0, 0, 0), + child: RaisedButton( + onPressed: () { + _submitSearch(searchBarText.text); + }, + child: Icon(Icons.search, color: Colors.white), + color: Colors.blue, + // make inactive when search in progress as activity indicator + ), + ), + ], + ), + ), + + Container( + padding: EdgeInsets.fromLTRB(20, 20, 0, 0), + child: Text( + listTitle, + style: new TextStyle( + fontSize: 23, fontWeight: FontWeight.bold), + ), + ), + + Container( + padding: EdgeInsets.fromLTRB(10, 10, 10, 0), + width: MediaQuery + .of(context) + .size + .width * 0.7, + height: MediaQuery + .of(context) + .size + .height * 0.67, + + child: Material( + shadowColor: Colors.transparent, + color: Colors.transparent, + child: ListView.builder( + itemCount: favourites.length, + itemBuilder: (context, index) { + return Card( + child: ListTile( + leading: Icon(Icons.person), + title: favourites[index], + trailing: Icon(Icons.arrow_forward_ios), + onTap: () {}, + ) + ); + }, ), + ), + ), - // help button for if org not listed - // cancel and ok buttons + // help button for if org not listed + // cancel and ok buttons - ], - ); - }, + ], ); } } \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index 61fff8d..ebe0f24 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,14 +1,11 @@ import 'package:flutter/material.dart'; import 'package:local_spend/pages/home_page.dart'; import 'package:local_spend/pages/login_page.dart'; -import 'package:local_spend/pages/receipt_page.dart'; import 'package:local_spend/pages/receipt_page_2.dart'; import 'package:local_spend/pages/spash_screen.dart'; import 'package:local_spend/pages/more_page.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; -import 'package:local_spend/common/apifunctions/get_graph_data.dart'; - void main() { runApp(MyApp()); } diff --git a/lib/pages/receipt_page_2.dart b/lib/pages/receipt_page_2.dart index f58c4db..38b3308 100644 --- a/lib/pages/receipt_page_2.dart +++ b/lib/pages/receipt_page_2.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:local_spend/common/platform/platform_scaffold.dart'; import 'package:intl/intl.dart'; +import 'package:flutter/services.dart'; import 'package:flutter/cupertino.dart'; import 'package:local_spend/common/apifunctions/find_organisations.dart'; import 'package:local_spend/common/widgets/organisations_dialog.dart'; @@ -39,6 +40,9 @@ class ReceiptPage2State extends State { @override Widget build(BuildContext context) { + var dialog = new Dialog( + child: FindOrganisations(), + ); return PlatformScaffold( appBar: AppBar( @@ -151,14 +155,7 @@ class ReceiptPage2State extends State { height: 32.0, child: RaisedButton( onPressed: () { -// var popupListView = new PopupListView(); -// var dialog = popupListView.dialog(context, optionsList, "Choose Organization"); - var organisations = new FindOrganisations(); - var orgDialog = organisations.dialog(context); - - orgDialog.then((organisation) { - debugPrint(organisation.name); - }); + dialog.then((org) {}); }, child: Text( transaction.organisation.name == null