Hola, Amigos! Сегодня мы посмотрим, чем отличаются 2 виджета для вывода текста -
С другой стороны, нам нужно каждый раз применять стиль текста к
Получается, что для большинства случаев нам подойдет именно
Рассказывайте в комментариях, какой из них чаще используете в своей работе?
RichText и Text.rich, а также разберемся, какой из них лучше использовать.RichText из них основной. Он позволяет нам отрисовывать текст с применением нескольких стилей, а также добавлением виджетов внутрь. Простой пример применения - выделение части текста жирным или курсивом:
RichText(
text: TextSpan(
children: [
TextSpan(text: ‘Обычный текст. ‘, style: TextStyle(fontSize: 14, color: Colors.black)),
TextSpan(text: Жирный текст. ‘, style: TextStyle(fontSize: 14, color: Colors.black, fontWeight: FontWeight.bold)),
TextSpan(text: ‘Снова обычный текст.‘, style: TextStyle(fontSize: 14, color: Colors.black)),
],
),
);
С другой стороны, нам нужно каждый раз применять стиль текста к
RichText, а также передавать ему textScaler. Эту проблему можно решить при помощи Text.rich, но он уже менее гибкий, чем RichText, так как в нем сложнее сделать что-то по-максимуму кастомное.
Text.rich(
TextSpan(
children: [
TextSpan(text: ‘Обычный текст. ‘),
TextSpan(text: Жирный текст. ‘, style: TextStyle(fontSize: 14, color: Colors.black, fontWeight: FontWeight.bold)),
TextSpan(text: ‘Снова обычный текст.‘),
],
),
);
Получается, что для большинства случаев нам подойдет именно
Text.rich, а RichText нужен для максимальной кастомизации.Рассказывайте в комментариях, какой из них чаще используете в своей работе?
👍6❤2👎1🔥1
Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga. Сегодня мы разберем один интересный кейс - как сделать так, чтобы какое-то действие в приложении совершалось тогда, когда мы трясем телефон.
В этом нам конечно же помогут 2 популярные библиотеки -
Пишите в комментариях, какое действие вы бы завязали на такой триггер?
P.S. А мы завязали один из триггеров открытия Amiga Dev Screen, который уже скоро вы сможете добавлять в свои проекты.
В этом нам конечно же помогут 2 популярные библиотеки -
sensors_plus и rxdart.Пишите в комментариях, какое действие вы бы завязали на такой триггер?
👍12🔥7❤3
Дайджест марта-апреля
Hola Amigos! Собрали в одну подборку все полезные посты марта и апреля, которые вы могли пропустить. Выбирайте, что интересно, и переходите по ссылкам для полезного выходного чтива:
🟡 Кеширование картинок
🟡 Пагинация на Flutter. Часть 1 и часть 2
🔴 Статья про обновление токена при помощи Dio
🟡 AppLifecycleState
🟡 Создаем собственные snippets. В Android Studio и в VS Code
🟡 Выбираем лицензию для библиотеки
🟡 Полезные extensions для String
🟡 Обфускация сборок
🟡 Плагин Bloc для IDE
🟡 RichText vs Text.rich
🟡 Совершаем действия при тряске телефона
Всем хорошего кода!
Hola Amigos! Собрали в одну подборку все полезные посты марта и апреля, которые вы могли пропустить. Выбирайте, что интересно, и переходите по ссылкам для полезного выходного чтива:
Всем хорошего кода!
Please open Telegram to view this post
VIEW IN TELEGRAM
10❤3🔥2👏2
Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga.
Иногда бэкенд не может помочь с поиском по строкам или его нужно реализовать полностью на локальных данных. Мы столкнулись именно с такой задачей.
В новой статье на Хабре разбираем, как прокачать локальный поиск с помощью математических алгоритмов и делимся нашим опытом реализации на Dart & Flutter.
🔗 Ссылка на статью
Делитесь в комментариях, сталкивались ли вы с похожими кейсами?
Иногда бэкенд не может помочь с поиском по строкам или его нужно реализовать полностью на локальных данных. Мы столкнулись именно с такой задачей.
В новой статье на Хабре разбираем, как прокачать локальный поиск с помощью математических алгоритмов и делимся нашим опытом реализации на Dart & Flutter.
🔗 Ссылка на статью
Делитесь в комментариях, сталкивались ли вы с похожими кейсами?
👍5🔥2👏2
Hola, Amigos! Наш Mobile Team Lead Павел Гершевич примет участие в активности под названием “Квартирник” на конференции CodeFest 16.
Квартирник - особый формат, где спикеры и эксперты общаются с залом на определенную тему. Павел вместе с Егором Поповым из Открытых Мобильных Платформ обсудят и ответят на вопросы касаемо кроссплатформы:
Почему одни фреймворки постоянно на слуху, а про другие мы не видим множества статей и докладов?
Есть ли границы у кроссплатформы? Можем ли мы написать одно приложение под все существующие устройства?
В чем преимущества и недостатки кроссплатформы?
Готовьте вопросы и приходите пообщаться с Павлом лично. Встречаемся 30 мая в 15:00 (11:00 МСК) на "Квартирнике" в Новосибирске!
Ссылка на квартирник
Квартирник - особый формат, где спикеры и эксперты общаются с залом на определенную тему. Павел вместе с Егором Поповым из Открытых Мобильных Платформ обсудят и ответят на вопросы касаемо кроссплатформы:
Почему одни фреймворки постоянно на слуху, а про другие мы не видим множества статей и докладов?
Есть ли границы у кроссплатформы? Можем ли мы написать одно приложение под все существующие устройства?
В чем преимущества и недостатки кроссплатформы?
Готовьте вопросы и приходите пообщаться с Павлом лично. Встречаемся 30 мая в 15:00 (11:00 МСК) на "Квартирнике" в Новосибирске!
Ссылка на квартирник
🔥4❤1👍1
Hola, Amigos! Начинаем новую рубрику, где будем рассказывать вам про полезные Snippet’ы, которые вы можете добавить к себе в IDE для ускорения разработки. В дальнейшем ее найдете по хештегу #snippet. Сегодня поговорим про сниппеты для жизненного цикла
Сниппет для быстрого добавления
Сниппеты для быстрого добавления
Пишите в комментариях, про какие сниппеты рассказать в следующий раз?
StatefulWidget.Сниппет для быстрого добавления
initState - initS:
@override
void initState() {
super.initState();
// Your code here
}
Сниппеты для быстрого добавления
dispose - dis и disF:
@override
void dispose() {
// Your code here
super.dispose();
}
@override
Future<void> dispose() async {
// Your code here
super.dispose();
}
Пишите в комментариях, про какие сниппеты рассказать в следующий раз?
👍4🔥3👏2
Hola, Amigos! Продолжаем рубрику с полезными extensions. Сегодня поговорим про расширение DateTime.
Можно получить информацию совпадает ли дата с сегодняшней, вчерашней или завтрашней:
Можно получить сколько дней разницы до сегодня:
Делитесь в комментариях, про расширения для каких классов вы еще хотите узнать?
#extensions
Можно получить информацию совпадает ли дата с сегодняшней, вчерашней или завтрашней:
extension DateTimeX on DateTime {
bool get isToday {
final now = DateTime.now();
return day == now.day && month == now.month && year == now.year;
}
bool get isTomorrow {
final tomorrow = DateTime.now().add(Duration(days: 1));
return day == tomorrow.day + 1 && month == tomorrow.month && year == tomorrow.year;
}
bool get isYesterday {
final yesterday = DateTime.now().subtract(Duration(days: 1));
return day == yesterday.day - 1 && month == yesterday.month && year == yesterday.year;
}
}
Можно получить сколько дней разницы до сегодня:
extension DateTimeX on DateTime {
int get daysDiff => this.difference(DateTime.now).inDays;
}
Делитесь в комментариях, про расширения для каких классов вы еще хотите узнать?
#extensions
👍8🤣2
Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga. Для многих задач уже есть готовые библиотеки, но иногда нужно удостовериться, а действительно ли та или иная библиотека нужна в разрабатываемом приложении? Ловите наш чек-лист по выбору библиотек и проверке необходимости их применения.
Начнем с того, что нужно определиться, на самом ли деле нужна библиотека. Если это библиотека какого-то сервиса, причем официальная, то ее можно добавлять. Но для других случаев зададим себе несколько вопросов:
⚪️ Сколько времени в будущем сэкономит использование библиотеки?
⚪️ Насколько сложно будет написать такой функционал своими силами?
⚪️ Есть ли у команды опыт для реализации такого функционала?
Если библиотека будет реально экономить время разработчиков, требуемый функционал достаточно сложен или у команды нет необходимого опыта для его реализации - будем выбирать и искать пакет.
Если вы уже знаете саму библиотеку и использовали ее, то берите. Если еще нет или вы в первый раз ищите под такой функционал, то нужно смотреть на:
⭕️ Дату последнего обновления библиотеки. Чем она ближе к текущей, тем лучше
⭕️ Частоту обновления. Это может означать, что разработчик не забросил эту библиотеку и активно ее развивает
⭕️ Количество скачиваний на pub.dev. Если их мало, то с такой библиотекой лучше не связываться
⭕️ Issues на Github, если код открыт. Поможет понять, какие есть проблемы.
⭕️ Прочитать ReadMe на предмет документации. Чтобы там не было всего пару строк, а было понятно, как использовать библиотеку
Если у вас большой опыт в Dart и Flutter, дополнительно можно посмотреть:
🟡 Зависимости. Там не должно быть ничего лишнего
🟡 Код библиотеки. Он должен быть понятен вам
🟡 API Reference. Если библиотека плохо документирована, то лучше от нее отказаться
Рассказывайте в комментариях, а как вы выбираете библиотеки для своих проектов?
Начнем с того, что нужно определиться, на самом ли деле нужна библиотека. Если это библиотека какого-то сервиса, причем официальная, то ее можно добавлять. Но для других случаев зададим себе несколько вопросов:
Если библиотека будет реально экономить время разработчиков, требуемый функционал достаточно сложен или у команды нет необходимого опыта для его реализации - будем выбирать и искать пакет.
Если вы уже знаете саму библиотеку и использовали ее, то берите. Если еще нет или вы в первый раз ищите под такой функционал, то нужно смотреть на:
Если у вас большой опыт в Dart и Flutter, дополнительно можно посмотреть:
Рассказывайте в комментариях, а как вы выбираете библиотеки для своих проектов?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2❤1