buildFrequencyList function
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]),
);
},
);
}