handleTypeSelected method

void handleTypeSelected(
  1. BuildContext context,
  2. List<AbstractReport> reportList,
  3. ReportType reportType
)

Implementation

void handleTypeSelected(BuildContext context, List<AbstractReport> reportList, ReportType reportType) async {
  log.d('handleTypeSelected report ${reportType.name}');

  try {
    // Process non-screen reports AFTER user prompt for report Type
    var pack = ReportPack();
    var nonScreenReports = reportList.where((r) => r is! ScreenReport).toList();

    var categoryIndex = await TypeDialog(theme).chooseCategory(context, config, reportType);
    if (categoryIndex != null) {
      // Only trigger reports AFTER category selection
      await pack.createReport(config.storage, nonScreenReports);
      await handleCategorySelected(reportList, reportType, categoryIndex);
    } else {
      log.i('Cancelling trigger because categoryIndex was null');
      cleanReports();
      AbstractReport.isTriggered = false;
    }
  } catch (err) {
    log.e('Error in handleTypeSelected: $err');
    AbstractReport.isTriggered = false;
    cleanReports();
  }
}