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

Duit-Foundation / duit_kernel / 20690660200

04 Jan 2026 09:11AM UTC coverage: 76.813% (+0.2%) from 76.636%
20690660200

Pull #51

github

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

8 of 8 new or added lines in 1 file covered. (100.0%)

2 existing lines in 2 files now uncovered.

1779 of 2316 relevant lines covered (76.81%)

4.89 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
abstract class EventResolver {
7
  final UIDriver driver;
8
  final DebugLogger? logger;
9

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

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

18
final class DefaultEventResolver extends EventResolver {
UNCOV
19
  DefaultEventResolver({
×
20
    required super.driver,
21
    super.logger,
22
  });
23

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

28
    if (eventData is ServerEvent) {
×
29
      event = eventData;
30
    } else {
31
      event = ServerEvent.parseEvent(eventData);
×
32
    }
33

34
    try {
35
      final driver = this.driver;
×
36

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