Настраивал FCM и как же меня выбесила политика Apple в плане отправки push-уведомлений🤬
Сделай разрешение такое, дай разрешение в Xcode, добавь сертификат в developer acc, получи ключ с разрешением на отправку push-уведомлений, дай разрешение на разрешение, покажи справку о несудимости и т.п. ЧТО ЭТО ТАКОЕ???
Будто я не пуши собираюсь кидать, а оружием торгую. Почему на Android это можно сделать за 5 минут, а Apple ведет себя как обиженный кондуктор?
Сделай разрешение такое, дай разрешение в Xcode, добавь сертификат в developer acc, получи ключ с разрешением на отправку push-уведомлений, дай разрешение на разрешение, покажи справку о несудимости и т.п. ЧТО ЭТО ТАКОЕ???
Будто я не пуши собираюсь кидать, а оружием торгую. Почему на Android это можно сделать за 5 минут, а Apple ведет себя как обиженный кондуктор?
❤2
Provider больше не нужон! Ладно, это плохой кликбейт.
Я написал что-то вроде урезанной версии Provider (без MultiProvider). А если точнее это класс, который наследуется от InheritedNotifier с generic, вместо конкретной вью-модели (прям как сделали большие дяди, написавшие пакет). Класс назвал мега эпично - AdvancedInherited, можно без аплодисментов, спасибо!
На картинке можешь посмотреть как этим пользоваться. Ничего необычного, если ты до этого хоть раз без Provider вручную с Inherited-штуками возился.
Сам InheritedAdvanced у меня в репозитории на гитхабе. Можешь открыть, посмотреть как реализовано и свистнуть его к себе в проект (и если надо поправить что-то под себя). Там же лежит пример с картинки.
Для чего я это сделал? Чтобы provider не таскать к себе в проект ради inherit'ов (хотя в этом ничего плохого нет).
В своих проектах я стараюсь уменьшить количество пакетов, только и всего🤷♂️
Я написал что-то вроде урезанной версии Provider (без MultiProvider). А если точнее это класс, который наследуется от InheritedNotifier с generic, вместо конкретной вью-модели (прям как сделали большие дяди, написавшие пакет). Класс назвал мега эпично - AdvancedInherited, можно без аплодисментов, спасибо!
На картинке можешь посмотреть как этим пользоваться. Ничего необычного, если ты до этого хоть раз без Provider вручную с Inherited-штуками возился.
Сам InheritedAdvanced у меня в репозитории на гитхабе. Можешь открыть, посмотреть как реализовано и свистнуть его к себе в проект (и если надо поправить что-то под себя). Там же лежит пример с картинки.
Для чего я это сделал? Чтобы provider не таскать к себе в проект ради inherit'ов (хотя в этом ничего плохого нет).
В своих проектах я стараюсь уменьшить количество пакетов, только и всего🤷♂️
❤1
Если кто не знал, на портале у Яндекс есть разного рода хэндбуки, в том числе хэндбук по Flutter. Кликай, чтобы посмотреть.
Правда он еще в разработке и не все главы готовы. А точнее готовы только 3 главы из 8 (1 глава - введение). Отличное решение для тех, кому надо что-то быстро вспомнить, а для новичков что-то узнать!
Правда он еще в разработке и не все главы готовы. А точнее готовы только 3 главы из 8 (1 глава - введение). Отличное решение для тех, кому надо что-то быстро вспомнить, а для новичков что-то узнать!
education.yandex.ru
Flutter — Хендбук от Яндекс Образования
Этот хендбук позволит вам разобраться в устройстве Flutter, особенностях его компонентов, языке Dart и паттернах проектирования современных приложений
🔥3
Мне стало интересно, на сколько большая разница в количестве вакансий на head hunter между Flutter и Android/IOS. В придачу ещё и React Native глянул.
Я, конечно, знал, что вакансий на native Android и IOS будет больше, но не думал, что на столько!
Колоссальное преимущество на стороне "родных". А React Native не настолько сильно уступает Flutter как оказалось.
Удивляет, что даже сегодня кроссплатформа так сильно уступает в популярности (именно в популярности, а не в качестве) native инструментам. Ведь сейчас каждая пиццерия хочет себе мобильное приложение, и дешевле такому бизнесу это будет сделать единожды на Flutter, чем 1 + 1 Android/IOS отдельно. (идите лесом с react native, ладно?)
Либо я сделал не совсем корректное сравнение. Если что исправьте. Я просто глянул на hhru.
P.S.: фильтрация выбрана по всей России.
Я, конечно, знал, что вакансий на native Android и IOS будет больше, но не думал, что на столько!
Колоссальное преимущество на стороне "родных". А React Native не настолько сильно уступает Flutter как оказалось.
Удивляет, что даже сегодня кроссплатформа так сильно уступает в популярности (именно в популярности, а не в качестве) native инструментам. Ведь сейчас каждая пиццерия хочет себе мобильное приложение, и дешевле такому бизнесу это будет сделать единожды на Flutter, чем 1 + 1 Android/IOS отдельно. (идите лесом с react native, ладно?)
Либо я сделал не совсем корректное сравнение. Если что исправьте. Я просто глянул на hhru.
P.S.: фильтрация выбрана по всей России.
❤3
Если вы, как и я, задались вопросом: "Какие приложения на моем смартфоне сделаны на Flutter?", то могу поделиться с вами решением, которое обнаружил - это Flutter Shark.
Данное ПО не только покажет, что из вашего хлама на смартфоне сделано на Flutter, но еще и покажет библиотеки, которые были использованы в процессе разработки (Наверное это можно обойти обфускацией)
На IOS ссылку не нашел, может плохо искал.
Кстати, раньше был способ: скроллить то, что скроллится двумя пальцами, и скорость прокрутки увеличивалась в 2 раза. Это был явный баг, который легко отличал Flutter приложение от нативного. Сейчас его уже исправили.
Данное ПО не только покажет, что из вашего хлама на смартфоне сделано на Flutter, но еще и покажет библиотеки, которые были использованы в процессе разработки (Наверное это можно обойти обфускацией)
На IOS ссылку не нашел, может плохо искал.
Кстати, раньше был способ: скроллить то, что скроллится двумя пальцами, и скорость прокрутки увеличивалась в 2 раза. Это был явный баг, который легко отличал Flutter приложение от нативного. Сейчас его уже исправили.
Google Play
FlutterShark: Flutter App Info - Apps on Google Play
Detect Apps made with Flutter on your device & what packages used by Flutter app
👍4❤3
Пост не совсем о Flutter. Вернее совсем не о Flutter. Но т.к. это дневник - я хочу поделиться этим.
Прошлая неделя была очень насыщенная: я работал на работе, готовился защищать диплом, далее спонтанный переезд, а ещё я побывал на Сулакском каньоне, где невероятно красивые пейзажи!
Сулаксий каньон - один из самых глубоких каньонов в мире, даже глубже чем Большой каньон (Grand Canyon) в США.
Глубина первого - 1920 метров, тогда как глубина второго на 63 метра выше (Куда мы без фактов из Википедии, верно?)
Кстати, спускаться вниз по серпантину то ещё веселье даже на внедорожнике😁
Прошлая неделя была очень насыщенная: я работал на работе, готовился защищать диплом, далее спонтанный переезд, а ещё я побывал на Сулакском каньоне, где невероятно красивые пейзажи!
Сулаксий каньон - один из самых глубоких каньонов в мире, даже глубже чем Большой каньон (Grand Canyon) в США.
Глубина первого - 1920 метров, тогда как глубина второго на 63 метра выше (Куда мы без фактов из Википедии, верно?)
Кстати, спускаться вниз по серпантину то ещё веселье даже на внедорожнике😁
❤4🔥1🥰1
Я пропал. Я был занят тем, что готовился к собесам.
Три компании, три собеседования и три оффера✅
Я долго повторял теорию и заполнял ямы в своих познаниях. С кое-какими вопросами от собеседущих я справлялся отлично, а где-то наоборот немного тупил, но в целом сложилось все хорошо.
В одной компании собес был около 2-х часов😐, а собес в другой компании я раскидал всего за пол часа, отвечая на все вопросы идеально (по-моему скромному мнению). Третий собес был вообще не технический, а больше "за жизнь".
В итоге я получил 3 оффера и выбрал ту компанию, которая, как мне кажется, лучше всего для меня подходит (Хотя другие тоже были крутые).
А ещё обновил свою рабочую машину. Купил 14 дюймовый Mac на M3 Pro с 18 gb оперативы, а свой игровой HP Victus 16 выставил на продажу (и его уже покупают, прощайте игры).
Скоро будет контент покачественней, не расходимся.
Буду переписывать свой личный проект, и мне нужно будет знать ваше диванно-экспертное 😄 мнение по поводу тех или иных фишек (шучу, ваше мнение реально будет нужно, чтобы улучшить качество приложения).
А вот что это за приложение... Узнаете скоро..🫠
Три компании, три собеседования и три оффера✅
Я долго повторял теорию и заполнял ямы в своих познаниях. С кое-какими вопросами от собеседущих я справлялся отлично, а где-то наоборот немного тупил, но в целом сложилось все хорошо.
В одной компании собес был около 2-х часов😐, а собес в другой компании я раскидал всего за пол часа, отвечая на все вопросы идеально (по-моему скромному мнению). Третий собес был вообще не технический, а больше "за жизнь".
В итоге я получил 3 оффера и выбрал ту компанию, которая, как мне кажется, лучше всего для меня подходит (Хотя другие тоже были крутые).
А ещё обновил свою рабочую машину. Купил 14 дюймовый Mac на M3 Pro с 18 gb оперативы, а свой игровой HP Victus 16 выставил на продажу (и его уже покупают, прощайте игры).
Скоро будет контент покачественней, не расходимся.
Буду переписывать свой личный проект, и мне нужно будет знать ваше диванно-экспертное 😄 мнение по поводу тех или иных фишек (шучу, ваше мнение реально будет нужно, чтобы улучшить качество приложения).
А вот что это за приложение... Узнаете скоро..🫠
👍9👏2❤🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Я представил как он пишет код😂:
;counter final 32 =
😁3
Мне тут показали одну штуку - FVM. Может и вам будет полезно. Это менеджер версий для Flutter SDK🤖
Это софт без графического интерфейса. Просто устанавливаешь по инструкции через терминал и там же можешь с ним взаимодейстовать (команды быстро запоминаются). FVM позволяет быстро скачать на ПК нужную версию Flutter SDK (или удалить), установить его в проект, посмотреть список уже скачанных версий и т.п.
Я обычно вручную менял пути до нужной версии SDK в файле "settings.json" в VS Code в зависимости от проекта🤷♂️ А так вроде круче😁
Updated:
тут в комментах👇 подсказали ещё один менеджер версий. По описанию - это все тоже самое, что и FVM, но ещё и + графический интерфейс.
Ссылка: https://github.com/fluttertools/sidekick
Updated ещё раз:
Это обёртка над FVM🙃
Это софт без графического интерфейса. Просто устанавливаешь по инструкции через терминал и там же можешь с ним взаимодейстовать (команды быстро запоминаются). FVM позволяет быстро скачать на ПК нужную версию Flutter SDK (или удалить), установить его в проект, посмотреть список уже скачанных версий и т.п.
Я обычно вручную менял пути до нужной версии SDK в файле "settings.json" в VS Code в зависимости от проекта🤷♂️ А так вроде круче😁
Updated:
тут в комментах👇 подсказали ещё один менеджер версий. По описанию - это все тоже самое, что и FVM, но ещё и + графический интерфейс.
Ссылка: https://github.com/fluttertools/sidekick
Updated ещё раз:
Это обёртка над FVM🙃
GitHub
GitHub - leoafarias/sidekick: A simple app to make Flutter development more delightful
A simple app to make Flutter development more delightful - leoafarias/sidekick
👍1
Много букаф получилось, но ладно...
Вы задумывались о том, как работают стандартные иконки во Flutter? Неужели нет? И вы считаете себя хорошими Flutter разработчиками после этого? Я тоже нет, кстати. Дыы🤷
В своих личных проектах всегда юзал пакет flutter_svg для векторной графики. И даже не думал, как обстоят дела со стандартным классом IconData.
Столкнулся с этим в рабочем проекте, где для отображение тех иконок, которые нарисовал наш дизайнер используется тот же подход, что и в стандартных, а именно - это шрифты!
Для чего это нужно⁉️ Этот подход имеет один большой плюс:
Шрифты иконок занимают заметно меньше места в памяти в сравнении с отдельными SVG файлами, а также они менее ресурсоемки. Также, как и с SVG, можно манипулировать размерами и цветами таких иконок прямо в коде.
Когда их не надо использовать⁉️ Если вам нужна более сложная векторная графика с градиентом цветов и с множеством слоев и деталей, то лучше использовать SVG - ведь этот подходит включает в себя полноценный язык разметки и умеет создавать более сложную графику.
Как мне добавить иконки-шрифты в проект также, как это сделали разработчики фреймворка⁉️ Для этого есть специальные инструменты. К примеру, вы можете загрузить свои SVG иконки на этот сайт, и скачать уже готовый Dart файл с нужным кодом и файлом с шрифтами (не забудьте указать путь до файла с шрифтами в pubspec.yaml). Если возникли проблемы с отображением иконок, то попробуйте для начала переконвертировать линии в своем SVG в заливки, это упростит ваши иконки.
Немного про аргументы класса IconData❗️
🔵 codePoint – это целочисленное значение (int), которое представляет символ в наборе шрифтов. Оно указывает на конкретную иконку в шрифтовом файле.
🔵 fontFamily - cтрока (String), указывающая на семейство шрифтов, из которого иконка будет браться.
🔵 fontPackage - cтрока (String), указывающая пакет, в котором содержится семейство шрифтов.
🔵 matchTextDirection - bool значение, указывающее, следует ли изменять направление отображения иконки в зависимости от направления текста (полезно, когда используете иконку с текстом, и надо поменять направление текста внутри иконки, к примеру, когда пользователь переключатеся на арабский язык, где текст читается справа налево.
Можете посмотреть этот ролик на ютубе, если VPN есть🤖 (Дожили.. Надеюсь на сервера Одноклассников это не повлияет, а то останемся без главной соц сети мира).
Вы задумывались о том, как работают стандартные иконки во Flutter? Неужели нет? И вы считаете себя хорошими Flutter разработчиками после этого? Я тоже нет, кстати. Дыы🤷
В своих личных проектах всегда юзал пакет flutter_svg для векторной графики. И даже не думал, как обстоят дела со стандартным классом IconData.
Столкнулся с этим в рабочем проекте, где для отображение тех иконок, которые нарисовал наш дизайнер используется тот же подход, что и в стандартных, а именно - это шрифты!
Для чего это нужно⁉️ Этот подход имеет один большой плюс:
Шрифты иконок занимают заметно меньше места в памяти в сравнении с отдельными SVG файлами, а также они менее ресурсоемки. Также, как и с SVG, можно манипулировать размерами и цветами таких иконок прямо в коде.
Когда их не надо использовать⁉️ Если вам нужна более сложная векторная графика с градиентом цветов и с множеством слоев и деталей, то лучше использовать SVG - ведь этот подходит включает в себя полноценный язык разметки и умеет создавать более сложную графику.
Как мне добавить иконки-шрифты в проект также, как это сделали разработчики фреймворка⁉️ Для этого есть специальные инструменты. К примеру, вы можете загрузить свои SVG иконки на этот сайт, и скачать уже готовый Dart файл с нужным кодом и файлом с шрифтами (не забудьте указать путь до файла с шрифтами в pubspec.yaml). Если возникли проблемы с отображением иконок, то попробуйте для начала переконвертировать линии в своем SVG в заливки, это упростит ваши иконки.
Немного про аргументы класса IconData❗️
🔵 codePoint – это целочисленное значение (int), которое представляет символ в наборе шрифтов. Оно указывает на конкретную иконку в шрифтовом файле.
🔵 fontFamily - cтрока (String), указывающая на семейство шрифтов, из которого иконка будет браться.
🔵 fontPackage - cтрока (String), указывающая пакет, в котором содержится семейство шрифтов.
🔵 matchTextDirection - bool значение, указывающее, следует ли изменять направление отображения иконки в зависимости от направления текста (полезно, когда используете иконку с текстом, и надо поменять направление текста внутри иконки, к примеру, когда пользователь переключатеся на арабский язык, где текст читается справа налево.
Можете посмотреть этот ролик на ютубе, если VPN есть🤖 (Дожили.. Надеюсь на сервера Одноклассников это не повлияет, а то останемся без главной соц сети мира).
Fluttericon
FlutterIcon - Flutter custom icons generator
Build a truetype font for use with Flutter with the necessary Dart code to use within your apps.
👍9⚡1🔥1
Вчера с помощью своего великолепного ума (а также готовых решений на stack overflow🤫) и MethodChannel's, которые нужны для общения с нативной частью, написал для Android и IOS методы, которые сообщают о том, включен ли экран в данный момент или выключен. Потом до меня дошло, что подобная логика не совсем то, что нужно - а нужно (в рамках моей задачи) на самом деле следить за application lifecycle.
Для чайников: жизненный цикл приложения - это очередь состояний, которое проходит приложение с момента запуска и до момента закрытия. Грубо говоря: запуск, опциональный выход в бэкграунд, после выхода из бэкграунда - resume, а также закрытие приложения в конце (на самом деле это не все, я лишь перечислил так, чтоб можно было понять, что такое lifecycle).
Так вот, поняв, что мне нужно следить за этим, а не включен ли или выключен ли экран, я начал опять же с помощью своего великолепного ума (а также готовых решений на stack overflow🤫) реализовывать общение с нативкой по новому. И потратив на это несколько часов драгоценного времени (то был выходной) совершенно случайно наткнулся на дефолтный класс AppLifecycleListener в котором вся эта логика, и даже больше, уже реализована. Tкни на гиперссылку и прочитай подробнее в доках
Делюсь этим с вами в попытке сэкономить вам время, вдруг тоже не знали. 🫥
Для чайников: жизненный цикл приложения - это очередь состояний, которое проходит приложение с момента запуска и до момента закрытия. Грубо говоря: запуск, опциональный выход в бэкграунд, после выхода из бэкграунда - resume, а также закрытие приложения в конце (на самом деле это не все, я лишь перечислил так, чтоб можно было понять, что такое lifecycle).
Так вот, поняв, что мне нужно следить за этим, а не включен ли или выключен ли экран, я начал опять же с помощью своего великолепного ума (а также готовых решений на stack overflow🤫) реализовывать общение с нативкой по новому. И потратив на это несколько часов драгоценного времени (то был выходной) совершенно случайно наткнулся на дефолтный класс AppLifecycleListener в котором вся эта логика, и даже больше, уже реализована. Tкни на гиперссылку и прочитай подробнее в доках
Делюсь этим с вами в попытке сэкономить вам время, вдруг тоже не знали. 🫥
api.flutter.dev
AppLifecycleListener class - widgets library - Dart API
API docs for the AppLifecycleListener class from the widgets library, for the Dart programming language.
🔥7❤4😁3
Всем привет! Меня давно нет, а вас стало только больше🔥 Спасибо огромное, что не только не отписываетесь, а наоборот присоединяетесь к каналу.
Придумывать причины по которым меня долго нет не буду, изначально был слишком занят, а когда был занят не слишком, то было тупо лень о чем-то писать, искать информацию, чтобы делать контент и т.п.
Но сейчас я в отпуске (правда он уже почти закончился) и пишу ТЗ для дизайнера, который будет делать дизайн для моего собственного (с братом) проекта!!! Будем пилить его вместе с моим братом, который по совместительству бэк-разработчик, в свободное от основной работы время.
Скажу честно, идею проекта вынашивал долго, но каждый раз все упиралось в качественный дизайн (ну не умею я его пилить сам в этих ваших фигмах). Ну и кроме дизайна, конечно, есть и были сложности, в связи с которыми было сложно начать. Ну мы все таки решились!
О самом проекте более подробно расскажу, когда уже будут первые "чертежи" от дизайнера, буду с вами делиться успехами, сложностями, возможно где-то попрошу совета, в общем буду осведомлять вас о проделанной работе.
Оставайтесь на связи! (не будьте как я😊😁)
Придумывать причины по которым меня долго нет не буду, изначально был слишком занят, а когда был занят не слишком, то было тупо лень о чем-то писать, искать информацию, чтобы делать контент и т.п.
Но сейчас я в отпуске (правда он уже почти закончился) и пишу ТЗ для дизайнера, который будет делать дизайн для моего собственного (с братом) проекта!!! Будем пилить его вместе с моим братом, который по совместительству бэк-разработчик, в свободное от основной работы время.
Скажу честно, идею проекта вынашивал долго, но каждый раз все упиралось в качественный дизайн (ну не умею я его пилить сам в этих ваших фигмах). Ну и кроме дизайна, конечно, есть и были сложности, в связи с которыми было сложно начать. Ну мы все таки решились!
О самом проекте более подробно расскажу, когда уже будут первые "чертежи" от дизайнера, буду с вами делиться успехами, сложностями, возможно где-то попрошу совета, в общем буду осведомлять вас о проделанной работе.
Оставайтесь на связи! (не будьте как я😊😁)
👍4🔥3❤1