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_design.dart';
5 : import 'package:app_finance/_classes/structure/budget_app_data.dart';
6 : import 'package:app_finance/_ext/build_context_ext.dart';
7 : import 'package:app_finance/_configs/custom_text_theme.dart';
8 : import 'package:app_finance/design/wrapper/number_wrapper.dart';
9 : import 'package:app_finance/design/wrapper/row_widget.dart';
10 : import 'package:app_finance/_configs/theme_helper.dart';
11 : import 'package:app_finance/design/wrapper/text_wrapper.dart';
12 : import 'package:flutter/material.dart';
13 :
14 : class BudgetHeaderWidget extends StatelessWidget {
15 : final BudgetAppData item;
16 : final double width;
17 :
18 0 : const BudgetHeaderWidget({
19 : super.key,
20 : required this.item,
21 : required this.width,
22 : });
23 :
24 0 : @override
25 : Widget build(BuildContext context) {
26 0 : final textTheme = context.textTheme;
27 0 : final indent = ThemeHelper.getIndent();
28 0 : final txtWidth = ThemeHelper.getTextWidth(Text(item.detailsFormatted, style: textTheme.numberMedium));
29 0 : return Column(
30 0 : children: [
31 0 : RowWidget(
32 : indent: indent,
33 0 : alignment: AppDesign.getAlignment<MainAxisAlignment>(),
34 0 : maxWidth: width,
35 0 : chunk: [null, txtWidth + 2 * indent, if (item.error != null) 22],
36 0 : children: [
37 0 : [
38 0 : Row(
39 0 : children: [
40 0 : Icon(item.icon, color: item.color, size: 20),
41 : ThemeHelper.wIndent,
42 0 : TextWrapper(
43 0 : item.title,
44 0 : style: textTheme.headlineMedium,
45 : ),
46 : ],
47 : ),
48 0 : if (item.description.isNotEmpty)
49 0 : TextWrapper(
50 0 : item.description,
51 0 : style: textTheme.numberSmall,
52 : ),
53 : ],
54 0 : [
55 0 : Align(
56 : alignment: Alignment.centerRight,
57 0 : child: NumberWidget(
58 0 : item.detailsFormatted,
59 0 : colorScheme: context.colorScheme,
60 0 : style: textTheme.numberMedium,
61 : ),
62 : ),
63 : ],
64 : ],
65 : ),
66 : ],
67 : );
68 : }
69 : }
|