HubScanner constructor Null safety

HubScanner()

Implementation

HubScanner() {
  _flutterBlue.setLogLevel(LogLevel.critical);
  _subscription = _flutterBlue.scanResults.listen((List<ScanResult> results) {
    for (ScanResult result in results) {
      if (!result.advertisementData.serviceUuids.contains("00001623-1212-efde-1623-785feabcd123")) {
        continue;
      }

      Helper.dprint("Detected ${result.device.name}");

      if (_hubs.containsKey(result.device.id.id)) {
        Helper.dprint("Already have this hub.");
        continue;
      }

      if (Helper.debug) {
        result.advertisementData.serviceData.forEach((key, value) {
          Helper.dprint("service data $key : ${Helper.toHex(value)}");
        });

        result.advertisementData.manufacturerData.forEach((key, value) {
          Helper.dprint("manufacturer data $key : ${Helper.toHex(value)}");
        });

        result.advertisementData.serviceUuids.forEach((element) {
          Helper.dprint("Service uuid: $element");
        });
      }

      if (!result.advertisementData.manufacturerData.containsKey(FlutterBlueHubManufacturerData.LegoManufacturerId)) {
        Helper.dprint("Didn't find expected manufacturer data.");
        continue;
      }

      FlutterBlueHubManufacturerData? hubManufacturerData =
          FlutterBlueHubManufacturerData.fromList(result.advertisementData.manufacturerData[FlutterBlueHubManufacturerData.LegoManufacturerId]);

      if (hubManufacturerData != null) {
        Helper.dprint("Found a hub!!!!");
        Hub hub = new Hub(HubTransport(result.device, hubManufacturerData));
        _hubs[result.device.id.id] = hub;
        _controller.add(this.list);
      }
    }
  });
}