LCOV - code coverage report
Current view: top level - lib/pages/home - home_edit_page.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 0 47 0.0 %
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/_classes/storage/app_preferences.dart';
       6             : import 'package:app_finance/_configs/custom_text_theme.dart';
       7             : import 'package:app_finance/_configs/theme_helper.dart';
       8             : import 'package:app_finance/_ext/build_context_ext.dart';
       9             : import 'package:app_finance/components/_core/components_builder.dart';
      10             : import 'package:app_finance/components/_core/component_data.dart';
      11             : import 'package:app_finance/components/_core/list_component_registry.dart';
      12             : import 'package:app_finance/design/wrapper/confirmation_wrapper.dart';
      13             : import 'package:app_finance/design/button/toolbar_button_widget.dart';
      14             : import 'package:flutter/material.dart';
      15             : 
      16             : class HomeEditPage extends StatefulWidget {
      17             :   final Function callback;
      18             : 
      19           0 :   const HomeEditPage({super.key, required this.callback});
      20             : 
      21           0 :   @override
      22           0 :   HomeEditPageState createState() => HomeEditPageState();
      23             : }
      24             : 
      25             : class HomeEditPageState extends State<HomeEditPage> {
      26             :   List<ComponentData> data = [];
      27             :   late String key;
      28             : 
      29           0 :   Future<void> _save() async {
      30           0 :     await AppPreferences.set(key, data.toString());
      31           0 :     setState(() {});
      32             :   }
      33             : 
      34           0 :   Future<void> save() async {
      35           0 :     await _save();
      36           0 :     widget.callback();
      37             :   }
      38             : 
      39           0 :   Future<void> drop() async {
      40           0 :     await AppPreferences.clear(key);
      41           0 :     widget.callback();
      42             :   }
      43             : 
      44           0 :   Future<void> add(String key) async {
      45           0 :     data.add({
      46             :       componentData.key: key,
      47             :       componentData.startX: 0,
      48             :       componentData.startY: 0,
      49             :       componentData.endX: 4,
      50             :       componentData.endY: 4,
      51             :     });
      52           0 :     await _save();
      53             :   }
      54             : 
      55           0 :   Future<void> adjust(int index, ComponentData change) async {
      56           0 :     data[index] = change;
      57           0 :     await _save();
      58             :   }
      59             : 
      60           0 :   Future<void> delete(int index) async {
      61           0 :     data.removeAt(index);
      62           0 :     await _save();
      63             :   }
      64             : 
      65           0 :   @override
      66             :   Widget build(BuildContext context) {
      67           0 :     key = ComponentsBuilder.getKey(context);
      68           0 :     data = ComponentsBuilder.getData(context) ?? [];
      69           0 :     return Scaffold(
      70           0 :       appBar: AppBar(
      71             :         toolbarHeight: 45,
      72           0 :         backgroundColor: context.colorScheme.primary,
      73           0 :         title: Text(ComponentsBuilder.getKey(context)),
      74           0 :         titleTextStyle: context.textTheme.numberMedium,
      75             :         centerTitle: true,
      76             :         leadingWidth: 120,
      77           0 :         leading: Row(
      78           0 :           children: [
      79           0 :             ToolbarButtonWidget(
      80             :               icon: Icons.save,
      81             :               color: Colors.white70,
      82           0 :               tooltip: AppLocale.labels.customSaveTooltip,
      83           0 :               onPressed: save,
      84             :             ),
      85           0 :             ToolbarButtonWidget(
      86             :               icon: Icons.cancel,
      87             :               color: Colors.white70,
      88           0 :               tooltip: AppLocale.labels.customDeleteTooltip,
      89           0 :               onPressed: () => ConfirmationWrapper.show(context, drop),
      90             :             ),
      91             :           ],
      92             :         ),
      93           0 :         actions: [
      94           0 :           Container(
      95             :             width: 140,
      96           0 :             padding: EdgeInsets.all(ThemeHelper.getIndent(0.5)),
      97           0 :             child: ListComponentRegistry(
      98           0 :               setState: (v) => add(v?.id ?? ''),
      99           0 :               hintText: AppLocale.labels.customAddTooltip,
     100           0 :               hintStyle: context.textTheme.numberSmall.copyWith(color: Colors.white70),
     101             :             ),
     102             :           ),
     103             :         ],
     104             :       ),
     105           0 :       body: Padding(
     106           0 :         padding: EdgeInsets.all(ThemeHelper.getIndent(3)),
     107           0 :         child: ComponentsBuilder(data, editMode: true, adjust: adjust, delete: delete),
     108             :       ),
     109             :     );
     110             :   }
     111             : }

Generated by: LCOV version 1.14