Признавайтесь, кому приходилось хотя бы раз писать расширения для строк, чисел и даже списков, чтобы выполнить какие-то простые преобразования или проверки, которых нет среди стандартных функций? Уверена, почти всем! Сегодня я расскажу, как перестать это делать.
Вам нужна всего одна библиотека — dartx.
Пакет дает доступ к дополнительным расширениям классов String, int, num, Iterable, DateTime, File и других, которые используются буквально в каждом проекте. Разберем самые интересные функции.
🔸String
1️⃣
capitalize() и decapitalize() — изменят регистр только первой буквы предложения2️⃣
isNotNullOrBlank и isNullOrBlank — проверят, есть ли читаемое содержимое, при этом не учитывая специальные символы по типу \n и пробелов3️⃣
urlEncode и urlDecode — в строке преобразуют ссылку в формат application/x-www-form-urlencoded или обратно
final capitalizedText = 'пример заглавной буквы'.capitalize(); // Пример заглавной буквы
final isBlank = ' \n'.isNullOrBlank; // true
final decodedText = 'Пример%20декодирования'.urlDecode; // Пример декодирования
🔸Iterable
1️⃣
sortedBy() и thenBy() — позволят вам выполнить сортировку по нескольким признакам2️⃣
chunkWhile() и splitWhen() — объединит в подсписки при выполнении или невыполнении условия
final dogs = [
Dog(name: "Charlie", age: 1),
Dog(name: "Bark", age: 3),
Dog(name: "Charlie", age: 6),
];
final sorted = dogs.sortedBy((dog) => dog.name).thenByDescending((dog) => dog.age); // Bark, Charlie (6), Charlie (3)
final chunckedList =[1, 2, 4, 9, 10, 11].chunkWhile((a, b) => a + 1 == b); // [[1, 2], [4], [9, 10, 11]]
🔸DateTime/Duration (эти функции можно подключить отдельно через пакет time)
1️⃣
isAtSameYearAs(date) — проверит, находится ли текущая дата в рамках одного и того же года даты date в параметре (есть аналогичные проверки по месяцу и дню)2️⃣
minutes.fromNow и minutes.ago — высчитает DateTime по указанной длительности в будущем и прошлом3️⃣
hours — создаст Duration объект из целого числа
final tenMinutes = 10.minutes; // Duration(minutes: 10)
final isAtSameYear = DateTime(2025, 01, 01).isAtSameYearAs(DateTime(2020, 10, 05)); // false
final timeInFuture = 5.minutes.fromNow; // DatiTime.now() + 5 минут
Это только малая часть того, что умеет dartx!
❤️ — если уже пользуетесь пакетом
🔥 — если только сейчас открыли для себя его чудесные функции
