Line data Source code
1 : // Copyright 2023 The terCAD team. All rights reserved. 2 : // Use of this source code is governed by a CC BY-NC-ND 4.0 license that can be found in the LICENSE file. 3 : 4 : import 'package:app_finance/_classes/herald/app_locale.dart'; 5 : import 'package:app_finance/_configs/theme_helper.dart'; 6 : import 'package:app_finance/pages/_interfaces/abstract_page_state.dart'; 7 : import 'package:app_finance/design/wrapper/tab_widget.dart'; 8 : import 'package:app_finance/pages/metrics/widgets/account_tab.dart'; 9 : import 'package:app_finance/pages/metrics/widgets/bill_tab.dart'; 10 : import 'package:app_finance/pages/metrics/widgets/budget_tab.dart'; 11 : import 'package:flutter/material.dart'; 12 : 13 : class MetricsPage extends StatefulWidget { 14 : final String? search; 15 : 16 1 : const MetricsPage({ 17 : super.key, 18 : this.search, 19 : }); 20 : 21 0 : @override 22 0 : MetricsPageState createState() => MetricsPageState(); 23 : } 24 : 25 : class MetricsPageState extends AbstractPageState<MetricsPage> { 26 : late int tab = int.tryParse(widget.search ?? '') ?? 0; 27 : 28 0 : @override 29 0 : String getTitle() => AppLocale.labels.metricsTooltip; 30 : 31 0 : @override 32 : Widget buildButton(BuildContext context, BoxConstraints constraints) => ThemeHelper.emptyBox; 33 : 34 0 : @override 35 : String getButtonName() => ''; 36 : 37 0 : @override 38 0 : String? getHelperName() => switch (tab) { 39 0 : 0 => 'help_metrics_budget', 40 0 : 1 => 'help_metrics_account', 41 0 : 2 => 'help_metrics_bill', 42 : _ => null, 43 : }; 44 : 45 0 : @override 46 : Widget buildContent(BuildContext context, BoxConstraints constraints) { 47 0 : return TabWidget( 48 0 : focus: tab, 49 : type: TabType.secondary, 50 0 : isLeft: ThemeHelper.isNavRight(context, constraints), 51 0 : callback: (idx) => setState(() => tab = idx), 52 0 : tabs: [ 53 0 : Tab( 54 : icon: const Icon(Icons.graphic_eq), 55 0 : text: AppLocale.labels.budgetHeadline, 56 : ), 57 0 : Tab( 58 : icon: const Icon(Icons.incomplete_circle), 59 0 : text: AppLocale.labels.accountHeadline, 60 : ), 61 0 : Tab( 62 : icon: const Icon(Icons.bar_chart), 63 0 : text: AppLocale.labels.billHeadline, 64 : ), 65 : ], 66 0 : children: [ 67 : const BudgetTab(), 68 0 : AccountTab(store: super.state), 69 0 : BillTab(store: super.state), 70 : ], 71 : ); 72 : } 73 : }