formatModelAndBilling function

({bool shouldSplit, String truncatedBilling, String truncatedModel}) formatModelAndBilling({
  1. required String modelName,
  2. required String billingType,
  3. required int availableWidth,
})

Determine how to display model and billing info.

Implementation

({bool shouldSplit, String truncatedModel, String truncatedBilling})
formatModelAndBilling({
  required String modelName,
  required String billingType,
  required int availableWidth,
}) {
  const separator = ' \u00b7 ';
  final combinedWidth =
      modelName.length + separator.length + billingType.length;
  final shouldSplit = combinedWidth > availableWidth;

  if (shouldSplit) {
    return (
      shouldSplit: true,
      truncatedModel: modelName.length > availableWidth
          ? '${modelName.substring(0, availableWidth - 1)}\u2026'
          : modelName,
      truncatedBilling: billingType.length > availableWidth
          ? '${billingType.substring(0, availableWidth - 1)}\u2026'
          : billingType,
    );
  }

  final maxModelWidth = math.max(
    availableWidth - billingType.length - separator.length,
    10,
  );
  return (
    shouldSplit: false,
    truncatedModel: modelName.length > maxModelWidth
        ? '${modelName.substring(0, maxModelWidth - 1)}\u2026'
        : modelName,
    truncatedBilling: billingType,
  );
}