LCOV - code coverage report
Current view: top level - lib/pages/bill - bill_add_page.dart Coverage Total Hit
Test: lcov.info Lines: 96.8 % 31 30
Test Date: 2026-11-14 15:04:37 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/_interfaces/interface_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:material_ui/material_ui.dart';
      14              : 
      15              : class BillAddPage extends StatefulWidget {
      16              :   final int focus;
      17              : 
      18            2 :   const BillAddPage({
      19              :     super.key,
      20              :     this.focus = 1,
      21              :   });
      22              : 
      23            2 :   @override
      24            2 :   BillAddPageState createState() => BillAddPageState();
      25              : }
      26              : 
      27              : class BillAddPageState<T extends BillAddPage> extends AbstractPageState<T> {
      28              :   PageInject? inject;
      29              :   int focus = 1;
      30              : 
      31            2 :   @override
      32              :   void initState() {
      33            6 :     focus = widget.focus;
      34            2 :     super.initState();
      35              :   }
      36              : 
      37            2 :   @override
      38              :   Widget buildButton(BuildContext context, BoxConstraints constraints) =>
      39            4 :       inject?.buildButton(context, constraints) ?? ThemeHelper.emptyBox;
      40              : 
      41            2 :   @override
      42            2 :   String getButtonName() => inject?.buttonName ?? '';
      43              : 
      44            2 :   @override
      45            2 :   String getTitle() => inject?.title ?? '';
      46              : 
      47            2 :   void update(PageInject data) {
      48            4 :     if (data != inject) {
      49           12 :       WidgetsBinding.instance.addPostFrameCallback((_) => setState(() => inject = data));
      50              :     }
      51              :   }
      52              : 
      53            2 :   @override
      54              :   Widget buildContent(BuildContext context, BoxConstraints constraints) {
      55            2 :     final isLeft = ScreenHelper.state().isLeftBar;
      56            2 :     return TabWidget(
      57              :       type: TabType.secondary,
      58              :       hasIndent: false,
      59              :       isLeft: isLeft,
      60            2 :       focus: focus,
      61            0 :       callback: (data) => setState(() => focus = data),
      62            2 :       tabs: [
      63            2 :         Tab(
      64              :           icon: const Icon(Icons.insert_invitation),
      65            4 :           text: AppLocale.labels.incomeHeadline,
      66              :         ),
      67            2 :         Tab(
      68              :           icon: const Icon(Icons.money_off),
      69            4 :           text: AppLocale.labels.expenseHeadline,
      70              :         ),
      71            2 :         Tab(
      72              :           icon: const Icon(Icons.transform),
      73            4 :           text: AppLocale.labels.transferHeadline,
      74              :         ),
      75              :       ],
      76            2 :       children: [
      77            6 :         IncomeTab(state: state, isLeft: isLeft, callback: update),
      78            6 :         ExpensesTab(state: state, isLeft: isLeft, callback: update),
      79            6 :         TransferTab(state: state, isLeft: isLeft, callback: update),
      80              :       ],
      81              :     );
      82              :   }
      83              : }
        

Generated by: LCOV version 2.0-1