LCOV - code coverage report
Current view: top level - lib/pages/start/widgets - abstract_tab.dart Coverage Total Hit
Test: lcov.info Lines: 100.0 % 19 19
Test Date: 2026-11-14 15:08:11 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/theme_helper.dart';
       6              : import 'package:app_finance/design/button/full_sized_button_widget.dart';
       7              : import 'package:material_ui/material_ui.dart';
       8              : 
       9              : abstract class AbstractTab<T> extends StatefulWidget {
      10              :   final bool isFirstBoot;
      11              :   final Function() setState;
      12              :   final Function(Widget btn) setButton;
      13              : 
      14            1 :   const AbstractTab({
      15              :     super.key,
      16              :     required this.setState,
      17              :     required this.setButton,
      18              :     required this.isFirstBoot,
      19              :   });
      20              : }
      21              : 
      22              : abstract class AbstractTabState<T extends AbstractTab> extends State<T> {
      23              :   String getButtonTitle();
      24              : 
      25              :   Widget buildContent(BuildContext context, BoxConstraints constraints);
      26              : 
      27            4 :   void updateState() => widget.setState();
      28              : 
      29            1 :   IconData getButtonIcon() => Icons.navigate_next;
      30              : 
      31            1 :   Widget buildButton(BuildContext context, BoxConstraints constraints) {
      32            1 :     return FullSizedButtonWidget(
      33              :       constraints: constraints,
      34            1 :       onPressed: updateState,
      35            2 :       title: getButtonTitle() != ''
      36            4 :           ? '${getButtonTitle()} (${AppLocale.labels.goNextTooltip})'
      37            2 :           : AppLocale.labels.goNextTooltip,
      38            1 :       icon: getButtonIcon(),
      39              :     );
      40              :   }
      41              : 
      42            1 :   @override
      43              :   Widget build(BuildContext context) {
      44            1 :     double indent = ThemeHelper.getIndent(2);
      45            2 :     return LayoutBuilder(builder: (context, constraints) {
      46            2 :       if (widget.isFirstBoot) {
      47            3 :         WidgetsBinding.instance.addPostFrameCallback((_) {
      48            4 :           widget.setButton(buildButton(context, constraints));
      49              :         });
      50              :         return ThemeHelper.emptyBox;
      51              :       }
      52            1 :       return Container(
      53            1 :         margin: EdgeInsets.all(indent),
      54            1 :         child: buildContent(context, constraints),
      55              :       );
      56              :     });
      57              :   }
      58              : }
        

Generated by: LCOV version 2.0-1