From 78e27ac8d042d70616485f3b30e2770caa669134 Mon Sep 17 00:00:00 2001 From: josiadmin Date: Mon, 26 Jan 2026 15:23:13 +0100 Subject: [PATCH] add listView year dropdown --- lib/controller/home_controller.dart | 10 +++++-- lib/helper/helper.dart | 4 +++ lib/pages/home_view.dart | 27 ++++++++++++++++- lib/widgets/my_drop_down_year_widget.dart | 35 +++++++++++++++++++++++ 4 files changed, 73 insertions(+), 3 deletions(-) create mode 100644 lib/widgets/my_drop_down_year_widget.dart diff --git a/lib/controller/home_controller.dart b/lib/controller/home_controller.dart index 5471714..c35ecc9 100644 --- a/lib/controller/home_controller.dart +++ b/lib/controller/home_controller.dart @@ -9,6 +9,7 @@ class HomeController extends GetxController { final isLoading = false.obs; final listTankModel = [].obs; final appwriteService = AppwriteService(); + final currentYear = DateTime.now().year.obs; @override void onInit() { @@ -22,12 +23,17 @@ class HomeController extends GetxController { @override void onClose() {} + void changeYear(int year) { + currentYear.value = year; + _loadListDocument(); + update(); + } + Future _loadListDocument() async { isLoading.value = true; if (listTankModel.isNotEmpty) { listTankModel.clear(); } - var dateYear = DateTime.now().year; var userId = await appwriteService.getCurrentUserId(); if (userId == null) { //User nicht eingeloggt, evtl. zur Login-Seite navigieren @@ -46,7 +52,7 @@ class HomeController extends GetxController { if (listTankModel.isNotEmpty) { var sortList = listTankModel.where((tank) { var year = (DateTime.tryParse(tank.szDate)!).year; - return year == dateYear; + return year == currentYear.value; }).toList(); listTankModel.clear(); listTankModel.addAll(sortList); diff --git a/lib/helper/helper.dart b/lib/helper/helper.dart index adfd4c5..3b43b20 100644 --- a/lib/helper/helper.dart +++ b/lib/helper/helper.dart @@ -8,3 +8,7 @@ import 'package:intl/intl.dart'; String getCurrentDate(DateTime date) { return DateFormat("yyyy-MM-dd").format(date); } + +var kListDropDownYear = [ + for (var year = DateTime.now().year; year >= 2020; year--) year +]; \ No newline at end of file diff --git a/lib/pages/home_view.dart b/lib/pages/home_view.dart index 8dc7b96..e7e91e0 100644 --- a/lib/pages/home_view.dart +++ b/lib/pages/home_view.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import '../controller/home_controller.dart'; +import '../widgets/my_drop_down_year_widget.dart'; import '../widgets/my_styled_loading_indicator.dart'; class HomePage extends GetView { @@ -15,9 +16,33 @@ class HomePage extends GetView { child: SafeArea( child: Scaffold( appBar: AppBar( + toolbarHeight: 100, backgroundColor: Colors.blueGrey, foregroundColor: Colors.white, - title: const Text('Tank List'), + title: Column( + children: [ + const Text('Tank List'), + Container( + padding: const EdgeInsets.symmetric(horizontal: 18), + decoration: BoxDecoration( + color: Colors.blue.shade700, + borderRadius: BorderRadius.circular(8), + border: Border.all(color: Colors.white, width: 2), + boxShadow: [ + BoxShadow( + color: Colors.white.withAlpha(120), + spreadRadius: 1, + blurRadius: 2, + offset: const Offset(0, 3), + ), + ], + ), + width: 150, + height: 50, + child: MyDropDownYear(homCtrl: homCtrl), + ), + ], + ), centerTitle: true, actions: [ IconButton( diff --git a/lib/widgets/my_drop_down_year_widget.dart b/lib/widgets/my_drop_down_year_widget.dart new file mode 100644 index 0000000..3b752e2 --- /dev/null +++ b/lib/widgets/my_drop_down_year_widget.dart @@ -0,0 +1,35 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../controller/home_controller.dart'; +import '../helper/helper.dart'; + +class MyDropDownYear extends StatelessWidget { + const MyDropDownYear({super.key, required this.homCtrl}); + + final HomeController homCtrl; + + @override + Widget build(BuildContext context) { + return Obx( + () => DropdownButton( + menuWidth: 150, + value: homCtrl.currentYear.value, + dropdownColor: Colors.blueGrey, + underline: Container(), + style: const TextStyle(color: Colors.white, fontSize: 16), + items: kListDropDownYear.map((year) { + return DropdownMenuItem( + value: year, + child: Text(year.toString()), + ); + }).toList(), + onChanged: (selectedYear) { + if (selectedYear != null) { + homCtrl.changeYear(selectedYear); + } + }, + ), + ); + } +}