buildFrequencyList function

Widget buildFrequencyList(
  1. BuildContext context,
  2. FrequencyController frequencyController
)

Implementation

Widget buildFrequencyList(BuildContext context, FrequencyController frequencyController) {
  return ListView.separated(
    itemCount: frequencyController.sortedFrequencies.length,
    separatorBuilder:  (context, index) => const Divider(),
    itemBuilder: (_, index) {
      NeomFrequency frequency = frequencyController.sortedFrequencies.values.elementAt(index);
      if (frequencyController.favFrequencies[frequency.id] != null) {
        frequency = frequencyController.favFrequencies[frequency.id]!;
      }
      return ListTile(
          title: Text("${AppTranslationConstants.frequency.tr} ${frequency.frequency.toString()} Hz"),
          subtitle: Text(frequency.description, textAlign: TextAlign.justify),
          trailing: IconButton(
              icon: Icon(
                frequency.isFav ? Icons.remove : Icons.add,
              ),
              onPressed: () async {
                if(frequency.isFav) {
                  if (frequencyController.favFrequencies.length > 1) {
                    await frequencyController.removeFrequency(index);
                    if(frequencyController.favFrequencies.containsKey(frequency.id)) {
                      AppAlerts.showAlert(context,
                          title: "${AppTranslationConstants.frequency.tr} ${frequency.frequency.toString()} Hz",
                          message: FrequencyTranslationConstants.frequencyNotRemoved.tr
                      );
                    } else {
                      AppAlerts.showAlert(context,
                          title: "${AppTranslationConstants.frequency.tr} ${frequency.frequency.toString()} Hz",
                          message: FrequencyTranslationConstants.frequencyRemoved.tr
                      );
                    }
                  } else {
                    AppAlerts.showAlert(context,
                        title: "${AppTranslationConstants.frequency.tr} ${frequency.frequency.toString()} Hz",
                        message: FrequencyTranslationConstants.atLeastOneFrequency.tr
                    );
                  }
                } else {
                  await frequencyController.addFrequency(index);
                  if(frequencyController.favFrequencies.containsKey(frequency.id)) {
                    AppAlerts.showAlert(context,
                        title: "${AppTranslationConstants.frequency.tr} ${frequency.frequency.toString()} Hz",
                        message: FrequencyTranslationConstants.frequencyAdded.tr
                    );
                  } else {
                    AppAlerts.showAlert(context,
                        title: "${AppTranslationConstants.frequency.tr} ${frequency.frequency.toString()} Hz",
                        message: FrequencyTranslationConstants.frequencyNotAdded.tr
                    );
                  }
                }
              }
          ),
          onTap: () => Sint.toNamed(AppRouteConstants.generator,  arguments: [frequency]),
      );
    },
  );
}