initbluai method

Future<void> initbluai(
  1. BuildContext context,
  2. CustomColorTheme color,
  3. ConfigurationModel tap
)

Implementation

Future<void> initbluai(
  BuildContext context,
  CustomColorTheme color,
  ConfigurationModel tap,
) async {
  try {
    PermissionStatus permissionStatus = await Permission.camera.status;
    if (permissionStatus.isGranted) {
      camerapermission = true;
      notifyListeners();
      await BluaiSdk.initialize(
        apiKey!,
        "",
        settings: InitializationSettings(
          showInfoButton: false,
          enableSummaryScreen: false,
          showUserInterface: true,
          onboardingMode: OnboardingMode.hidden,
        ),
        // ),
      ).then((val) {
        //log("initialize $val");
        if (val == InitializationResult.success) {
          intilization = true;
          notifyListeners();
        }
      });
      await BluaiSdk.setCustomColorTheme(color);
      await BluaiSdk.setCameraMode(CameraMode.facingUser);
      await BluaiSdk.setPrecisionMode(PrecisionMode.strict);
      await BluaiSdk.setOperatingMode(OperatingMode.positioning);
      await BluaiSdk.setCustomMeasurementConfig(
        CustomMeasurementConfig(
          instantMetrics: [Metric.heartRate, Metric.bloodPressure],
          summaryMetrics: [
            Metric.bloodPressure,
            Metric.heartRate,
            Metric.breathingRate,
            Metric.hrvSdnn,
            Metric.cardiacStress,
            Metric.pnsActivity,
            Metric.cardiacWorkload,
            Metric.age,
            Metric.bmi,
          ],
        ),
      );
      await BluaiSdk.setLanguage("en");
      BluaiSdk.setEventCallback((event) async {
        if (event == Event.measurementFinished) {
          var results = await BluaiSdk.getMeasurementResults();
          if (results != null) {
            ScanModel scanModel = ScanModel();
            scanModel.bloodPressure =
                "${results.systolic_blood_pressure_mmhg?.toStringAsFixed(2).split(".")[0]}/${results.diastolic_blood_pressure_mmhg?.toStringAsFixed(2).split(".")[0]}";
            scanModel.heartRate = "${results.heart_rate_bpm.toInt()}";
            scanModel.breathingRate =
                "${results.breathing_rate_bpm?.toInt()}";
            scanModel.hrvsdnn = "${results.hrv_sdnn_ms?.toInt()}";
            scanModel.stressindex = "${results.stress_index?.toInt()}";
            scanModel.bmicategory = "${results.bmi_category}";
            scanModel.bmi = "${results.bmi_kg_per_m2?.toInt()}";
            scanModel.parasympatheticactivity =
                "${results.parasympathetic_activity?.toInt()}";
            scanModel.cardiacworkload =
                "${results.cardiac_workload_mmhg_per_sec?.toInt()}";
            scanModel.vascularage = "${results.age_years?.toInt()}";
            //log("Warning ScanModel ${scanModel.toJson()}");
            if (scanModel.toJson().values.any(
              (e) => e == null || e == "null",
            )) {
              warningtoast(
                title:
                    "Failed to capture your vitals data please restart and follow the guidelines provided.",
                messge:
                    "Failed to capture your vitals data. Please restart and follow the guidelines provided.",
              );
            } else {
              saveuser(context, tap: tap).then((val) {
                terminatesdk().then((val) {
                  Navigator.pushAndRemoveUntil(
                    context,
                    MaterialPageRoute(
                      builder: (_) => tap.child,
                      settings: RouteSettings(arguments: scanModel.toJson()),
                    ),
                    (route) => false,
                  );
                });
              });
            }
          }
        }
      });
    } else {
      bool cameraOk = await checkCameraPermission();
      if (cameraOk) {
        initbluai(context, color, tap);
      } else {
        warningtoast(
          messge: "Camera Permission is Required",
          title: "Camera Permission",
        );
      }
    }
  } catch (ex) {
    //log("Intlization Ex $ex");
  }
}