LCOV - code coverage report
Current view: top level - lib/pages/bill - bill_add_page.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 27 28 96.4 %
Date: 2024-10-04 11:12:13 Functions: 0 0 -

          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/screen_helper.dart';
       6             : import 'package:app_finance/_configs/theme_helper.dart';
       7             : import 'package:app_finance/pages/_interfaces/abstract_page_state.dart';
       8             : import 'package:app_finance/pages/bill/widgets/expenses_tab.dart';
       9             : import 'package:app_finance/pages/bill/widgets/income_tab.dart';
      10             : import 'package:app_finance/pages/bill/widgets/interface_bill_page_inject.dart';
      11             : import 'package:app_finance/pages/bill/widgets/transfer_tab.dart';
      12             : import 'package:app_finance/design/wrapper/tab_widget.dart';
      13             : import 'package:flutter/material.dart';
      14             : 
      15             : class BillAddPage extends StatefulWidget {
      16           1 :   const BillAddPage({super.key});
      17             : 
      18           1 :   @override
      19           1 :   BillAddPageState createState() => BillAddPageState();
      20             : }
      21             : 
      22             : class BillAddPageState<T extends BillAddPage> extends AbstractPageState<T> {
      23             :   BillPageInject? inject;
      24             :   int focus = 1;
      25             : 
      26           1 :   @override
      27             :   Widget buildButton(BuildContext context, BoxConstraints constraints) =>
      28           2 :       inject?.buildButton(context, constraints) ?? ThemeHelper.emptyBox;
      29             : 
      30           1 :   @override
      31           1 :   String getButtonName() => inject?.buttonName ?? '';
      32             : 
      33           1 :   @override
      34           1 :   String getTitle() => inject?.title ?? '';
      35             : 
      36           1 :   void update(BillPageInject data) {
      37           2 :     if (data != inject) {
      38           6 :       WidgetsBinding.instance.addPostFrameCallback((_) => setState(() => inject = data));
      39             :     }
      40             :   }
      41             : 
      42           1 :   @override
      43             :   Widget buildContent(BuildContext context, BoxConstraints constraints) {
      44           1 :     final isLeft = ScreenHelper.state().isLeftBar;
      45           1 :     return TabWidget(
      46             :       type: TabType.secondary,
      47             :       hasIndent: false,
      48             :       isLeft: isLeft,
      49           1 :       focus: focus,
      50           0 :       callback: (data) => setState(() => focus = data),
      51           1 :       tabs: [
      52           1 :         Tab(
      53             :           icon: const Icon(Icons.insert_invitation),
      54           2 :           text: AppLocale.labels.incomeHeadline,
      55             :         ),
      56           1 :         Tab(
      57             :           icon: const Icon(Icons.money_off),
      58           2 :           text: AppLocale.labels.expenseHeadline,
      59             :         ),
      60           1 :         Tab(
      61             :           icon: const Icon(Icons.transform),
      62           2 :           text: AppLocale.labels.transferHeadline,
      63             :         ),
      64             :       ],
      65           1 :       children: [
      66           3 :         IncomeTab(state: state, isLeft: isLeft, callback: update),
      67           3 :         ExpensesTab(state: state, isLeft: isLeft, callback: update),
      68           3 :         TransferTab(state: state, isLeft: isLeft, callback: update),
      69             :       ],
      70             :     );
      71             :   }
      72             : }

Generated by: LCOV version 1.14