LCOV - code coverage report
Current view: top level - lib/components/_core/widgets - draggable_pointer.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 0 28 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 'dart:math';
       5             : 
       6             : import 'package:app_finance/_configs/theme_helper.dart';
       7             : import 'package:app_finance/_ext/build_context_ext.dart';
       8             : import 'package:app_finance/components/_core/component_data.dart';
       9             : import 'package:flutter/material.dart';
      10             : 
      11             : class DraggablePointer extends StatefulWidget {
      12             :   final Map<String, dynamic> data;
      13             :   final bool topLeft;
      14             :   final Function()? onDragStarted;
      15             :   final Function(DraggableDetails)? onDragEnd;
      16             : 
      17           0 :   const DraggablePointer(
      18             :     this.data, {
      19             :     super.key,
      20             :     required this.onDragStarted,
      21             :     required this.onDragEnd,
      22             :     this.topLeft = true,
      23             :   });
      24             : 
      25           0 :   @override
      26           0 :   DraggablePointerState createState() => DraggablePointerState();
      27             : }
      28             : 
      29             : class DraggablePointerState extends State<DraggablePointer> {
      30             :   Color? color;
      31             : 
      32           0 :   @override
      33             :   Widget build(BuildContext context) {
      34           0 :     final colorScheme = context.colorScheme;
      35           0 :     final border = BorderSide(width: 4, color: context.colorScheme.primary);
      36           0 :     final size = [ThemeHelper.getHeight(context) / 3, ThemeHelper.getWidth(context) / 3].reduce(min);
      37           0 :     return Container(
      38           0 :       margin: EdgeInsets.all(ThemeHelper.getIndent(0.1)),
      39           0 :       child: Draggable<ComponentData>(
      40           0 :         data: widget.data,
      41           0 :         onDragEnd: widget.onDragEnd,
      42           0 :         onDragStarted: widget.onDragStarted,
      43           0 :         feedback: Transform.translate(
      44           0 :           offset: widget.topLeft ? Offset.zero : Offset(-size, -size),
      45           0 :           child: Container(
      46           0 :             decoration: BoxDecoration(
      47           0 :               border: Border(
      48           0 :                 top: widget.topLeft ? border : BorderSide.none,
      49           0 :                 left: widget.topLeft ? border : BorderSide.none,
      50           0 :                 bottom: widget.topLeft ? BorderSide.none : border,
      51           0 :                 right: widget.topLeft ? BorderSide.none : border,
      52             :               ),
      53             :             ),
      54             :             height: size,
      55             :             width: size,
      56             :           ),
      57             :         ),
      58           0 :         child: MouseRegion(
      59             :           cursor: SystemMouseCursors.resizeDownRight,
      60           0 :           onEnter: (_) => setState(() => color = colorScheme.primary.withOpacity(0.5)),
      61           0 :           onExit: (_) => setState(() => color = null),
      62           0 :           child: Container(
      63           0 :             decoration: BoxDecoration(
      64             :               shape: BoxShape.circle,
      65           0 :               color: color ?? context.colorScheme.secondary.withOpacity(0.4),
      66             :             ),
      67             :           ),
      68             :         ),
      69             :       ),
      70             :     );
      71             :   }
      72             : }

Generated by: LCOV version 1.14