LCOV - code coverage report
Current view: top level - lib/src/components/mixins - hoverable.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 17 19 89.5 %
Date: 2021-08-10 15:50:53 Functions: 0 0 -

          Line data    Source code
       1             : import 'package:meta/meta.dart';
       2             : 
       3             : import '../../../game.dart';
       4             : import '../../game/base_game.dart';
       5             : import '../../gestures/events.dart';
       6             : import '../base_component.dart';
       7             : 
       8             : mixin Hoverable on BaseComponent {
       9             :   bool _isHovered = false;
      10           2 :   bool get isHovered => _isHovered;
      11           0 :   void onHoverEnter(PointerHoverInfo info) {}
      12           0 :   void onHoverLeave(PointerHoverInfo info) {}
      13             : 
      14           1 :   @nonVirtual
      15             :   void handleMouseMovement(PointerHoverInfo info) {
      16           2 :     if (containsPoint(eventPosition(info))) {
      17           1 :       if (!_isHovered) {
      18           1 :         _isHovered = true;
      19           1 :         onHoverEnter(info);
      20             :       }
      21             :     } else {
      22           1 :       if (_isHovered) {
      23           1 :         _isHovered = false;
      24           1 :         onHoverLeave(info);
      25             :       }
      26             :     }
      27             :   }
      28             : }
      29             : 
      30             : mixin HasHoverableComponents on BaseGame {
      31           1 :   @mustCallSuper
      32             :   void onMouseMove(PointerHoverInfo info) {
      33           1 :     bool _mouseMoveHandler(Hoverable c) {
      34           1 :       c.handleMouseMovement(info);
      35             :       return true; // always continue
      36             :     }
      37             : 
      38           3 :     for (final c in components.reversed()) {
      39           1 :       if (c is BaseComponent) {
      40           1 :         c.propagateToChildren<Hoverable>(_mouseMoveHandler);
      41             :       }
      42           1 :       if (c is Hoverable) {
      43           1 :         _mouseMoveHandler(c);
      44             :       }
      45             :     }
      46             :   }
      47             : }

Generated by: LCOV version 1.15