From 4765342ad16f70c08f294372f4c559bf61f2973f Mon Sep 17 00:00:00 2001 From: marco Date: Mon, 27 Jan 2025 16:27:25 +0100 Subject: [PATCH] Added Station Filter without function and refactored --- lib/pages/flood_station_page.dart | 2 +- lib/pages/landing_page.dart | 25 ++++++++----- .../flood_station_list_view.dart | 0 lib/{Widgets => widgets}/reading_graph.dart | 0 lib/widgets/station_filter.dart | 36 +++++++++++++++++++ 5 files changed, 54 insertions(+), 9 deletions(-) rename lib/{Widgets => widgets}/flood_station_list_view.dart (100%) rename lib/{Widgets => widgets}/reading_graph.dart (100%) create mode 100644 lib/widgets/station_filter.dart diff --git a/lib/pages/flood_station_page.dart b/lib/pages/flood_station_page.dart index 16697d1..5dd7bb6 100644 --- a/lib/pages/flood_station_page.dart +++ b/lib/pages/flood_station_page.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import '../Widgets/reading_graph.dart'; +import '../widgets/reading_graph.dart'; import '../model/flood_station.dart'; import '../model/reading.dart'; import '../services/api.dart'; diff --git a/lib/pages/landing_page.dart b/lib/pages/landing_page.dart index 44e0266..f8dd066 100644 --- a/lib/pages/landing_page.dart +++ b/lib/pages/landing_page.dart @@ -1,8 +1,9 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import '../Widgets/flood_station_list_view.dart'; +import '../widgets/flood_station_list_view.dart'; import '../services/flood_station_provider.dart'; +import '../widgets/station_filter.dart'; import 'flood_station_page.dart'; class LandingPage extends StatefulWidget { @@ -16,7 +17,6 @@ class LandingPage extends StatefulWidget { class _LandingPageState extends State { late FloodStationProvider floodStationProvider; - @override initState() { super.initState(); @@ -28,12 +28,21 @@ class _LandingPageState extends State { Widget build(BuildContext context) { floodStationProvider = context.watch(); return Scaffold( - body: FloodStationListView( - stations: floodStationProvider.allStations, - onItemTapped: (station) { - floodStationProvider.selectedStation = station; - Navigator.of(context).pushNamed(FloodStationPage.routeName); - }, + body: Column( + children: [ + StationFilter( + onEditingComplete: (filterText) {}, + ), + Expanded( + child: FloodStationListView( + stations: floodStationProvider.allStations, + onItemTapped: (station) { + floodStationProvider.selectedStation = station; + Navigator.of(context).pushNamed(FloodStationPage.routeName); + }, + ), + ), + ], ), ); } diff --git a/lib/Widgets/flood_station_list_view.dart b/lib/widgets/flood_station_list_view.dart similarity index 100% rename from lib/Widgets/flood_station_list_view.dart rename to lib/widgets/flood_station_list_view.dart diff --git a/lib/Widgets/reading_graph.dart b/lib/widgets/reading_graph.dart similarity index 100% rename from lib/Widgets/reading_graph.dart rename to lib/widgets/reading_graph.dart diff --git a/lib/widgets/station_filter.dart b/lib/widgets/station_filter.dart new file mode 100644 index 0000000..5adf551 --- /dev/null +++ b/lib/widgets/station_filter.dart @@ -0,0 +1,36 @@ +import 'package:flutter/material.dart'; + +class StationFilter extends StatefulWidget { + const StationFilter({super.key, required this.onEditingComplete}); + final void Function(String filterText) onEditingComplete; + + @override + State createState() => StationFilterState(); +} + +class StationFilterState extends State { + TextEditingController filterController = TextEditingController(); + + @override + Widget build(BuildContext context) { + return TextField( + controller: filterController, + decoration: InputDecoration( + prefixIcon: Icon(Icons.search), + suffixIcon: Opacity( + opacity: filterController.text.isEmpty ? 0 : 1, + child: IconButton( + onPressed: () { + filterController.clear(); + setState(() {}); + }, + icon: Icon(Icons.delete), + ), + ), + label: Text('Filter'), + ), + onChanged: (_) => setState(() {}), + onEditingComplete: () => widget.onEditingComplete(filterController.text), + ); + } +}