• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Duit-Foundation / duit_kernel / 20682128358

03 Jan 2026 07:51PM UTC coverage: 76.339% (-0.3%) from 76.636%
20682128358

Pull #51

github

web-flow
Merge 424eecc27 into 9c331752d
Pull Request #51: feat: Add ViewModel capability

0 of 9 new or added lines in 1 file covered. (0.0%)

37 existing lines in 2 files now uncovered.

1768 of 2316 relevant lines covered (76.34%)

4.85 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/lib/src/action_api/event_resolver.dart
1
import "dart:async";
2

3
import "package:duit_kernel/duit_kernel.dart";
4
import "package:flutter/material.dart" show BuildContext;
5

6
@Deprecated("Will be removed in the next major release.")
7
abstract class EventResolver {
8
  final UIDriver driver;
9
  final DebugLogger? logger;
10

UNCOV
11
  EventResolver({
×
12
    required this.driver,
13
    this.logger,
14
  });
15

16
  Future<void> resolveEvent(BuildContext context, eventData);
17
}
18

19
@Deprecated("Will be removed in the next major release.")
20
final class DefaultEventResolver extends EventResolver {
UNCOV
21
  DefaultEventResolver({
×
22
    required super.driver,
23
    super.logger,
24
  });
25

UNCOV
26
  @override
×
27
  Future<void> resolveEvent(BuildContext context, eventData) async {
28
    ServerEvent event;
29

UNCOV
30
    if (eventData is ServerEvent) {
×
31
      event = eventData;
32
    } else {
UNCOV
33
      event = ServerEvent.parseEvent(eventData);
×
34
    }
35

36
    try {
UNCOV
37
      final driver = this.driver;
×
38

39
      switch (event) {
40
        case UpdateEvent():
×
UNCOV
41
          event.updates.forEach((key, value) async {
×
UNCOV
42
            await driver.updateAttributes(key, value);
×
43
          });
44
          break;
45
        case NavigationEvent():
×
46
          assert(
UNCOV
47
            driver.externalEventHandler != null,
×
48
            "ExternalEventHandler instance is not set",
49
          );
50
          if (driver.externalEventHandler != null) {
×
UNCOV
51
            logger?.error("ExternalEventHandler instance is not set");
×
52
            throw StateError("ExternalEventHandler instance is not set");
×
53
          }
54
          await driver.externalEventHandler?.handleNavigation(
×
55
            context,
UNCOV
56
            event.path,
×
UNCOV
57
            event.extra,
×
58
          );
59
          break;
60
        case OpenUrlEvent():
×
61
          if (driver.externalEventHandler != null) {
×
UNCOV
62
            logger?.error("ExternalEventHandler instance is not set");
×
63
            throw StateError("ExternalEventHandler instance is not set");
×
64
          }
65
          await driver.externalEventHandler?.handleOpenUrl(event.url);
×
66
          break;
67
        case CustomEvent():
×
68
          if (driver.isModule) {
×
UNCOV
69
            await driver.driverChannel
×
70
                ?.invokeMethod<Map<String, dynamic>>(event.key, event.extra);
×
71
          } else {
72
            await driver.externalEventHandler?.handleCustomEvent(
×
73
              context,
UNCOV
74
              event.key,
×
UNCOV
75
              event.extra,
×
76
            );
77
          }
78
          break;
79
        case SequencedEventGroup():
×
80
          for (final entry in event.events) {
×
81
            if (context.mounted) {
×
UNCOV
82
              await resolveEvent(context, entry.event);
×
UNCOV
83
              await Future.delayed(entry.delay);
×
84
            }
85
          }
86
          break;
87
        case CommonEventGroup():
×
UNCOV
88
          for (final entry in event.events) {
×
UNCOV
89
            await resolveEvent(context, entry.event);
×
90
          }
91
          break;
92
        case CommandEvent():
×
UNCOV
93
          final c = driver.getController(event.command.controllerId);
×
94
          await c?.emitCommand(event.command);
×
95
          break;
96
        case TimerEvent():
×
97
          final evt = event;
98
          Future.delayed(
×
99
            evt.timerDelay,
×
100
            () async {
×
UNCOV
101
              if (context.mounted) {
×
UNCOV
102
                await resolveEvent(context, evt.payload);
×
103
              }
104
            },
105
          );
106
          break;
107
        default:
108
          break;
109
      }
110
    } catch (e, s) {
UNCOV
111
      logger?.error(
×
UNCOV
112
        "Error while resolving ${event.type} event",
×
113
        error: e,
114
        stackTrace: s,
115
      );
116
    }
117
  }
118
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc