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

Duit-Foundation / flutter_duit / 20818159884

08 Jan 2026 01:18PM UTC coverage: 88.441% (-2.5%) from 90.958%
20818159884

push

github

web-flow
feat: Capability-base API migration pt1 (#322)

2 of 140 new or added lines in 5 files covered. (1.43%)

6 existing lines in 4 files now uncovered.

4430 of 5009 relevant lines covered (88.44%)

34.79 hits per line

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

0.0
/lib/src/capabilities/controller_capability_impl.dart
1
import "package:flutter_duit/flutter_duit.dart";
2
import "package:flutter_duit/src/ui/index.dart";
3

4
final class DuitControllerManager with UIControllerCapabilityDelegate {
5
  final Map<String, UIElementController> _viewControllers = {};
6
  late final UIDriver _driver;
7

NEW
8
  @override
×
9
  void attachController(String id, UIElementController controller) {
NEW
10
    final alreadyContains = _viewControllers.containsKey(id);
×
11

12
    if (alreadyContains) {
NEW
13
      _driver.logger?.warn(
×
NEW
14
        "Controller with id=$id already exists and it will be overriden \n This could happen because two or more controlled widgets have the same id parameter",
×
15
      );
16
    }
17

NEW
18
    _viewControllers[id] = controller;
×
19
  }
20

NEW
21
  @override
×
NEW
22
  void detachController(String id) => _viewControllers.remove(id)?.dispose();
×
23

NEW
24
  @override
×
NEW
25
  UIElementController? getController(String id) => _viewControllers[id];
×
26

NEW
27
  @override
×
NEW
28
  int get controllersCount => _viewControllers.length;
×
29

NEW
30
  Future<void> _resolveComponentUpdate(
×
31
    UIElementController controller,
32
    Map<String, dynamic> json,
33
  ) async {
NEW
34
    final tag = controller.tag;
×
NEW
35
    final description = DuitRegistry.getComponentDescription(tag!);
×
36

37
    if (description != null) {
NEW
38
      final component = ComponentBuilder.build(
×
39
        description,
40
        json,
41
      );
42

NEW
43
      controller.updateState(component);
×
44
    }
45
  }
46

NEW
47
  @override
×
48
  Future<void> updateAttributes(
49
    String controllerId,
50
    Map<String, dynamic> json,
51
  ) async {
NEW
52
    final controller = _viewControllers[controllerId];
×
53
    if (controller != null) {
NEW
54
      if (controller.type == ElementType.component.name) {
×
NEW
55
        await _resolveComponentUpdate(controller, json);
×
56
        return;
57
      }
NEW
58
      controller.updateState(json);
×
59
    }
60
  }
61

NEW
62
  @override
×
63
  void releaseResources() {
NEW
64
    for (var controller in _viewControllers.values) {
×
NEW
65
      controller.detach();
×
66
    }
NEW
67
    _viewControllers.clear();
×
68
  }
69

NEW
70
  @override
×
NEW
71
  void linkDriver(UIDriver driver) => _driver = driver;
×
72
}
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