Полтора года использую puro, полёт отличный. Опыт лучше, чем с fvm (может он сейчас и улучшился, но когда я делал о нём материал - дела были так себе). Быстрый вход:
Есть бенчмарки производительности стандартной вёрстки и mix-верстки?
Думаю, есть один существенный минус: обычно flutter-разработчики привыкли верстать в flutter-стиле. Поэтому новым разработчикам придётся учиться верстать с помощью mix, на что потребуется время и их большая мотивация ломать себе мозг новыми приколами.
Ещё: иногда чтобы сверстать что-то сложное (и может даже с вычурной анимацией) нужно немало времени и знаний. Mix действительно настолько классный, что позволит это сделать, или придётся от него отказываться в таких случаях? (в итоге получаем код вёрстки, в котором вот здесь mix, а здесь ваниль)
Спасибо, что рассказали о нём, впервые слышу. На первый взгляд он выглядит чужеродно.
Идея состоит в том, что не все комментарии одинаково важны. И как правило их не так уж и много. Поэтому на целевой статье мы долистываем до раздела комментариев и быстрым сочетанием "Highlights this page" выделяем только области "Автор и дата" и "текст комментария". И позже "Add to obsidian".
Предлагаю попробовать прямо на этом комментарии :)
А так, есть ещё способ докапаться до селекторов и настроить это в автоматическом режиме. Правда, повторюсь, не все комментарии полезны.
К сожалению, буквально в 20 числах октября эта функция работала нормально. А потом ни с того, ни с сего резко перестала - теперь наблюдается каша в коде. Есть открытая задача (и вот недавняя) на эту тему.
Также мною была открыта задача на добавление правильного языка к блоковому коду. Однако мне лично не видится возможным её адекватно реализовать в связи с разношёрстностью вёрстки, но с другой стороны - проставлять ручками тоже нет желания.
Можно рассмотреть slang, который позволяет разделить переводы на несколько файлов, используя namespace. Также там весьма годный консольный тулинг для работы с переводами.
Статья неконструктивна. Вы не можете сравнивать несопоставимые вещи. get - это огромный комбайн всего и вся сомнительного качества, пакет bloc предоставляет только стейт-менеджмент.
Далее, сквозь весь текст путаются понятия. Если коротко, BLoC != пакету bloc, MVC != GetX, BLoC != GetX .
Ещё кое-что. Признайтесь честно, вы смотрели исходный код get ? Подключите последнюю preview версию get: ^5.0.0-release-candidate-5 , которая есть на pub.dev и посмотрите. Посмотрите, что эта библиотека из себя представляет, что импортирует, из чего состоит, в особенности проверьте степень документации и комментирования, и обратите внимание на закомментированные участки кода. Вот, из прекрасного:
Оно вам точно нужно в проде или где-то ещё?
путь get-5.0.0-release-candidate-5/lib/get_navigation/src/routes/get_transition_mixin.dart
ниже в этом же файле
Не стройте иллюзий, этим нельзя пользоваться всерьёз.
Спасибо, изучал с удовольствием! Макросы появились во благо, но не весь спектр задач должен закрываться ими.
P.s. Riverpod на текущий момент (версия ^2.5.1 ) можно смело использовать без генерации. Плюшки вроде неограниченного числа family-параметров решаются с помощью Record или обычных моделек, для расширенной отладки можно добавить name-параметр, а stateful hot-reload доступен, если юзать Notifier-классы или же в обычных провайдерах воспользоваться глобальными приватными функциями. Да, плата есть - создание инстансов бойлерплейтно, особенно когда есть family параметры.
Серьёзно, это очень круто! Жаль, не хватает полноценной АПИшки, чтобы не тратить время на реверс-костыли ) Аналитика, к слову, в очень выгодном свете отличает твоё приложение от холодного и скучного "стока". Успехов!
Этот код даже не заведётся, поскольку параметры в функции должны быть помечены как обязательные. Тоже самое и в printUserInfoOptional
Функции высшего порядка принимают другие функции в качестве аргументов или возвращают их
???, не понимаю, на чём сделан акцент? Что функции это объекты на самом деле?
В Dart нет специального синтаксиса для объявления интерфейсов
Есть уже как год, появился в Dart 3, это модификатор interface
if(number % 2 == 0) {...}
Можно я просто побрюзжу и скажу, что уже пора использовать isEven или isOdd для этой цели
В Dart с включённым null safety переменные по умолчанию не могут быть null:
Передача данных между экранами обычно осуществляется через конструкторы и Navigator API:
SecondScreen({Key key, @required this.data})
Эта мысль преследовала меня сквозь весь текст. Теперь явно понятно, что весь материал представляет из себя простыню личных заметок, когда ещё использовался dart ~2 версии...
Напомню, что в рамках онлайн‑курсов OTUS вы можете изучить самые популярные ЯП, а также зарегистрироваться на ряд бесплатных мероприятий.
Вы правда используете 4 пробела для отступа везде, даже в pubspec.yaml? Или это ошибка копирования (ну что-то подсказывает мне, что нет). Хотел бы я увидеть ту лапшу в виджетах при 4-ёх пробелах, когда бывает и при двух всё плохо вмещается))) А ещё ведь есть старообрядное (спорно, сам использую, но в контексте текущего примера это хороший вопрос) ограничение по длине строки в 80 символов. Ухх
P.s. вместо неуклюжего StateNotifier с AsyncValue рассмотрите возможность использования AsyncNotifier (у него состояние уже завёрнуто в AsyncValue). Его также можно использовать без генерации кода. А что касается Provider и TextEditingController, то мне очень жаль, что выпилили вполне удобный ChangeNotifierProvider для этой цели. Но с другой стороны текстовые контроллеры можно класть в ConsumerStatefullWidget, либо использовать хуки (либо ваш способ). Ещё раз спасибо!
С учётом того, как здорово и достаточно легко к усвоению у вас получилось написать этот материал для новичков, спустя столько времени я всё ещё жду следующую часть ;) Просмотры это доказывают!
Так что можете считать это "спасибом" из будущего. Что удивительно, всё +- актуальным остаётся и по сей день.
Полтора года использую puro, полёт отличный. Опыт лучше, чем с fvm (может он сейчас и улучшился, но когда я делал о нём материал - дела были так себе). Быстрый вход:
Puro — эффективный способ управления Flutter-версиями / Хабр
Есть бенчмарки производительности стандартной вёрстки и mix-верстки?
Думаю, есть один существенный минус: обычно flutter-разработчики привыкли верстать в flutter-стиле. Поэтому новым разработчикам придётся учиться верстать с помощью mix, на что потребуется время и их большая мотивация ломать себе мозг новыми приколами.
Ещё: иногда чтобы сверстать что-то сложное (и может даже с вычурной анимацией) нужно немало времени и знаний. Mix действительно настолько классный, что позволит это сделать, или придётся от него отказываться в таких случаях? (в итоге получаем код вёрстки, в котором вот здесь mix, а здесь ваниль)
Спасибо, что рассказали о нём, впервые слышу. На первый взгляд он выглядит чужеродно.
Однако, кое-что можно сделать своими золотыми. Я использую подобный рецепт:
Заходим в Highlighter и в поведении клиппера указываем "ничего не делать" (вместо "заменять весь контент")
Далее, заходим в шаблон (создаём отдельный для habr.com) и в самом низу в поле "Содержание заметки" мы добавляем:
Идея состоит в том, что не все комментарии одинаково важны. И как правило их не так уж и много. Поэтому на целевой статье мы долистываем до раздела комментариев и быстрым сочетанием "Highlights this page" выделяем только области "Автор и дата" и "текст комментария". И позже "Add to obsidian".
Предлагаю попробовать прямо на этом комментарии :)
А так, есть ещё способ докапаться до селекторов и настроить это в автоматическом режиме. Правда, повторюсь, не все комментарии полезны.
К сожалению, буквально в 20 числах октября эта функция работала нормально. А потом ни с того, ни с сего резко перестала - теперь наблюдается каша в коде. Есть открытая задача (и вот недавняя) на эту тему.
Также мною была открыта задача на добавление правильного языка к блоковому коду. Однако мне лично не видится возможным её адекватно реализовать в связи с разношёрстностью вёрстки, но с другой стороны - проставлять ручками тоже нет желания.
Уже как почти месяц использую - отличная штука для быстрого сохранения важных материалов в базу знаний!
Хабы Flutter*, Dart* пожалуй лишние, а вот Creative Commons* весьма в тему. За материал - спасибо!
Монументально.
Спасибо! Сложно и подробно.
Можно рассмотреть slang, который позволяет разделить переводы на несколько файлов, используя namespace. Также там весьма годный консольный тулинг для работы с переводами.
Такой экземпляр не стыдно иметь на полочке :) Уже жду! Автору и издательству благодарность за проделанную работу ?
Очень классный материал с информативными скриншотами, проделана большая работа! Даже не подозревал, что всё настолько вариативно
Статья неконструктивна. Вы не можете сравнивать несопоставимые вещи. get - это огромный комбайн всего и вся сомнительного качества, пакет bloc предоставляет только стейт-менеджмент.
Далее, сквозь весь текст путаются понятия. Если коротко,
BLoC != пакету bloc,MVC != GetX,BLoC != GetX.Ещё кое-что. Признайтесь честно, вы смотрели исходный код
get? Подключите последнюю preview версиюget: ^5.0.0-release-candidate-5, которая есть на pub.dev и посмотрите. Посмотрите, что эта библиотека из себя представляет, что импортирует, из чего состоит, в особенности проверьте степень документации и комментирования, и обратите внимание на закомментированные участки кода. Вот, из прекрасного:Оно вам точно нужно в проде или где-то ещё?
get-5.0.0-release-candidate-5/lib/get_navigation/src/routes/get_transition_mixin.dartНе стройте иллюзий, этим нельзя пользоваться всерьёз.
Спасибо, изучал с удовольствием! Макросы появились во благо, но не весь спектр задач должен закрываться ими.
P.s. Riverpod на текущий момент (версия
^2.5.1) можно смело использовать без генерации. Плюшки вроде неограниченного числа family-параметров решаются с помощью Record или обычных моделек, для расширенной отладки можно добавитьname-параметр, а stateful hot-reload доступен, если юзатьNotifier-классы или же в обычных провайдерах воспользоваться глобальными приватными функциями. Да, плата есть - создание инстансов бойлерплейтно, особенно когда естьfamilyпараметры.Кажется, вы ошиблись сабом: вместо Github (в статье ничего об этом нет), можно использовать Flutter :)
Серьёзно, это очень круто! Жаль, не хватает полноценной АПИшки, чтобы не тратить время на реверс-костыли ) Аналитика, к слову, в очень выгодном свете отличает твоё приложение от холодного и скучного "стока". Успехов!
Множественного наследования здесь нет, это не c++
Не обязательно одного типа
Этот код даже не заведётся, поскольку параметры в функции должны быть помечены как обязательные. Тоже самое и в
printUserInfoOptional???, не понимаю, на чём сделан акцент? Что функции это объекты на самом деле?
Есть уже как год, появился в Dart 3, это модификатор
interfaceМожно я просто побрюзжу и скажу, что уже пора использовать
isEvenилиisOddдля этой целиЭта мысль преследовала меня сквозь весь текст. Теперь явно понятно, что весь материал представляет из себя простыню личных заметок, когда ещё использовался dart ~2 версии...
Поэтому спасибо, но нет.
Вы правда используете 4 пробела для отступа везде, даже в pubspec.yaml? Или это ошибка копирования (ну что-то подсказывает мне, что нет). Хотел бы я увидеть ту лапшу в виджетах при 4-ёх пробелах, когда бывает и при двух всё плохо вмещается))) А ещё ведь есть старообрядное (спорно, сам использую, но в контексте текущего примера это хороший вопрос) ограничение по длине строки в 80 символов. Ухх
Здорово, спасибо!
P.s. вместо неуклюжего StateNotifier с AsyncValue рассмотрите возможность использования AsyncNotifier (у него состояние уже завёрнуто в AsyncValue). Его также можно использовать без генерации кода. А что касается Provider и TextEditingController, то мне очень жаль, что выпилили вполне удобный ChangeNotifierProvider для этой цели. Но с другой стороны текстовые контроллеры можно класть в ConsumerStatefullWidget, либо использовать хуки (либо ваш способ). Ещё раз спасибо!
Спасибо, что-то новенькое! Изучу на досуге)
С учётом того, как здорово и достаточно легко к усвоению у вас получилось написать этот материал для новичков, спустя столько времени я всё ещё жду следующую часть ;) Просмотры это доказывают!
Так что можете считать это "спасибом" из будущего. Что удивительно, всё +- актуальным остаётся и по сей день.