Files
flux/lib/core/utils/extensions.dart
Mark M2 Macbook 94ad524bae reworked operation (#12)
Reviewed-on: #12
Co-authored-by: Mark M2 Macbook <marco@catelli.it>
Co-committed-by: Mark M2 Macbook <marco@catelli.it>
2026-05-04 15:36:42 +02:00

50 lines
1.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flux/l10n/app_localizations.dart';
extension MyStringExtensions on String? {
// Gestiamo anche il nullable per sicurezza
String myFormat() {
if (this == null || this!.trim().isEmpty) return '';
return this!
.trim()
.toLowerCase()
.split(' ')
.where((word) => word.isNotEmpty) // Evita problemi con doppi spazi
.map((word) {
if (word.contains('iphone') || word.contains('ipad')) {
return word.replaceFirst('ip', 'iP');
}
if (word.contains('imac')) {
return word.replaceFirst('im', 'iM');
}
return word[0].toUpperCase() + word.substring(1);
})
.join(' ');
}
String fileExtension() {
if (this == null || this!.trim().isEmpty) return '';
final parts = this!.split('.');
if (parts.length < 2) return ''; // Nessuna estensione trovata
return parts.last.toLowerCase();
}
String fileNameWithoutExtension() {
if (this == null || this!.trim().isEmpty) return '';
this!.replaceAll(RegExp(r'[^a-zA-Z0-9\.\-]'), '_');
final parts = this!.split('.');
if (parts.length < 2) return this!; // Nessuna estensione trovata
return parts
.sublist(0, parts.length - 1)
.join('.'); // Ritorna tutto tranne l'ultima parte
}
}
extension LocalizationExtension on BuildContext {
AppLocalizations get l10n => AppLocalizations.of(this)!;
}