Как уже известно, ProjectIDX стал для всех доступен. Для тех, кто в танке: это такой облачный IDE, который работает из браузера, с собственными эмуляторами/симуляторами и прочими виртуальными устройствами, включительно Web(Ага, пишем Web в Web'е), который был разработан компанией Google.🫡
И, конечно, он включает в себя интеграцию со всеми актуальными сервисами Google, с такими как Firebase и его Crashlytics, а также AI Gemini (Это конкурент сына маминой подруги в мире ИИ - GPT от OpenAI). Кстати, как можете наблюдать на скриншотах - в РФ его нельзя юзать: санкции там, все дела. We are illegal! 🚫
Я решил его затестить, ну ведь очень интересно было с винды запустить симулятор ios устройства (и не надо мне говорить, что по факту запускается все на удаленном железе, я и сам знаю. Вас проверял..). Так, вот.. Не получилось. Хах!😁 Обо всем по порядку.
Как только зарегистрировался на сайте и создал виртуальное пространство, предварительно указав, что буду разрабатывать проект на фреймворке Flutter (к слову, там стоит самая актуальная версия на момент публикации этого поста: Flutter 3.22 и Dart 3.4.0) - меня встретил VSCode прямо в браузере (Неожиданно очень шустро работающий как для ide внутри браузера). Это тот же самый VSCode, который у тебя прямо сейчас стоит на ПК, т.е. ты можешь его кастомизировать, менять темы, устанавливать extensions (ну плагины...учи английский) и т.д.
Сразу запустились превью с Web и Android, где я затестил дефолтное приложение с текстом "Hello World". Компилируется не долго, я бы даже сказал быстро (опять таки, учитываем, что это все в облаке). Отмечу, что Android эмулятор сильно лагал, а Web вообще заработал только после перезапуска виртуального пространства (пришлось перезапустить idx). Но все работает!
И тут, я пошел переключать устройство, с которого буду запускать код на ios симулятор и вот незадача: Его нет! И в документации тоже ничего об этом не нашел, там инфа только про Web и Android. Тут два варианта: либо ios симуляторы еще не завезли, либо просто я не нашел инфу о том, как его включить (Хотя я искал не только в доках).
Android эмуляторов среди доступных устройств - два. Планшет и смартфон. Также можно по желанию добавить линукс проект (ага, это я нашел).
Еще, как видно на скриншоте, я и со своего смартфона запустил ProjectIDX и заметил интересную штуку: если взаимодействовать с эмулятором (ну дёргать его если.. тыкать там куда-то), то в режиме реального времени это все происходит и на другом устройстве (в моем случае на ноуте), где открыт тот же проект с тем же эмулятором. Похоже оно работает как трансляция 📹, я сильно не вникал.
Итог: ProjectIDX очень крутая и перспективная технология, но пока ещё сыровата. Оно и понятно, ведь ide совсем недавно стало доступно для массового пользователя.🤷♂️
Такие дела...Если кто знает что там с ios, то пишите в комментах.
И, конечно, он включает в себя интеграцию со всеми актуальными сервисами Google, с такими как Firebase и его Crashlytics, а также AI Gemini (Это конкурент сына маминой подруги в мире ИИ - GPT от OpenAI). Кстати, как можете наблюдать на скриншотах - в РФ его нельзя юзать: санкции там, все дела. We are illegal! 🚫
Я решил его затестить, ну ведь очень интересно было с винды запустить симулятор ios устройства (и не надо мне говорить, что по факту запускается все на удаленном железе, я и сам знаю. Вас проверял..). Так, вот.. Не получилось. Хах!😁 Обо всем по порядку.
Как только зарегистрировался на сайте и создал виртуальное пространство, предварительно указав, что буду разрабатывать проект на фреймворке Flutter (к слову, там стоит самая актуальная версия на момент публикации этого поста: Flutter 3.22 и Dart 3.4.0) - меня встретил VSCode прямо в браузере (Неожиданно очень шустро работающий как для ide внутри браузера). Это тот же самый VSCode, который у тебя прямо сейчас стоит на ПК, т.е. ты можешь его кастомизировать, менять темы, устанавливать extensions (ну плагины...учи английский) и т.д.
Сразу запустились превью с Web и Android, где я затестил дефолтное приложение с текстом "Hello World". Компилируется не долго, я бы даже сказал быстро (опять таки, учитываем, что это все в облаке). Отмечу, что Android эмулятор сильно лагал, а Web вообще заработал только после перезапуска виртуального пространства (пришлось перезапустить idx). Но все работает!
И тут, я пошел переключать устройство, с которого буду запускать код на ios симулятор и вот незадача: Его нет! И в документации тоже ничего об этом не нашел, там инфа только про Web и Android. Тут два варианта: либо ios симуляторы еще не завезли, либо просто я не нашел инфу о том, как его включить (Хотя я искал не только в доках).
Android эмуляторов среди доступных устройств - два. Планшет и смартфон. Также можно по желанию добавить линукс проект (ага, это я нашел).
Еще, как видно на скриншоте, я и со своего смартфона запустил ProjectIDX и заметил интересную штуку: если взаимодействовать с эмулятором (ну дёргать его если.. тыкать там куда-то), то в режиме реального времени это все происходит и на другом устройстве (в моем случае на ноуте), где открыт тот же проект с тем же эмулятором. Похоже оно работает как трансляция 📹, я сильно не вникал.
Итог: ProjectIDX очень крутая и перспективная технология, но пока ещё сыровата. Оно и понятно, ведь ide совсем недавно стало доступно для массового пользователя.🤷♂️
Такие дела...Если кто знает что там с ios, то пишите в комментах.
❤2
Как и ожидалось, после появления макросов в Dart - data class себя долго ждать не заставил (Но правда пока не от самой команды Flutter).
Автор библиотеки Bloc уже успел выложить свое решение на pubdev и github:
https://pub.dev/packages/data_class_macro
https://github.com/felangel/data_class
Автор библиотеки Bloc уже успел выложить свое решение на pubdev и github:
https://pub.dev/packages/data_class_macro
https://github.com/felangel/data_class
Dart packages
data_class_macro | Dart package
Experimental support for data classes in Dart using pkg:macros
👍2
На типовой вопрос существует типовой ответ😁
Но думается мне, автор вопроса не то имел ввиду..
https://youtu.be/9x_z-AWK7P0?si=9_t9v0gCSykSQtQE
Но думается мне, автор вопроса не то имел ввиду..
https://youtu.be/9x_z-AWK7P0?si=9_t9v0gCSykSQtQE
😁2
Копался в файле framework.dart и случайно наткнулся на комментарий, где было написано, что:
Объекты BuildContext на самом деле являются объектами Element. Интерфейс BuildContext используется для предотвращения прямого манипулирования объектами Element.
Документация это подтверждает слово в слово.
Ссылка: https://api.flutter.dev/flutter/widgets/BuildContext-class.html
Я почему-то думал, что это разные, но взаимосвязанные вещи, а не, что одно интерфейс для другого.
Объекты BuildContext на самом деле являются объектами Element. Интерфейс BuildContext используется для предотвращения прямого манипулирования объектами Element.
Документация это подтверждает слово в слово.
Ссылка: https://api.flutter.dev/flutter/widgets/BuildContext-class.html
Я почему-то думал, что это разные, но взаимосвязанные вещи, а не, что одно интерфейс для другого.
👍2
Очень часто вижу, что люди БОЯТСЯ показывать свой код другим. У всех сомнения: а можно ли так писать? а это правильно? не будет ли никто надо мной смеяться?
А когда все таки решают показать, сначала следует сопроводительная фраза, что-то по типу: "строго не ругайте за мой колхозный код". Уже все настолько привыкли, что за любой код, который выложили на общее обозрение, им прилетит несколько камней от "опытнейших сеньоров" с указанием того, какое их код днище🕳
Да, есть определенные шаблоны программирования, которых желательно придерживаться. Да, принципы SOLID, DRY, KISS, YAGNI (etc) надо соблюдать насколько это возможно. Да, есть правила и негласные договоренности, которые надо учитывать. Но это НЕ ЗНАЧИТ, ЧТО У ВСЕХ ДОЛЖЕН БЫТЬ ОДИНАКОВЫЙ КОД.
Для каждого частного случая (если это не мега-типовая задача, которая уже миллион раз была решена) могут быть свои уникальные решения. Более того, может быть такое, что ты и твой коллега с другого конца света можете абсолютно разными путями решить одну и ту же проблему и не факт, что у кого-то "более правильный" вариант.
Если ты написал плохой код - ты поймешь, что ты написал плохой код позже. Ты либо сам споткнешься об него; либо прочитаешь статью (документацию) и поймешь как сделать лучше чем есть; либо тебе объяснят более опытные люди (объяснят, а не закидают камнями). Если кто-то скинул тебе стикер с человечком, который бьет себя по лицу, показывая "какой треш" и не аргументирует, то скорее всего он сам не понимает, как делать "правильно".
Изучай паттерны, учи архитектуру, ПОНИМАЙ для чего тебе та или иная архитектура и перестань наконец бояться, что ты неправильно обычный print в коде написал и кто-то тебе об этом скажет.
А когда все таки решают показать, сначала следует сопроводительная фраза, что-то по типу: "строго не ругайте за мой колхозный код". Уже все настолько привыкли, что за любой код, который выложили на общее обозрение, им прилетит несколько камней от "опытнейших сеньоров" с указанием того, какое их код днище🕳
Да, есть определенные шаблоны программирования, которых желательно придерживаться. Да, принципы SOLID, DRY, KISS, YAGNI (etc) надо соблюдать насколько это возможно. Да, есть правила и негласные договоренности, которые надо учитывать. Но это НЕ ЗНАЧИТ, ЧТО У ВСЕХ ДОЛЖЕН БЫТЬ ОДИНАКОВЫЙ КОД.
Для каждого частного случая (если это не мега-типовая задача, которая уже миллион раз была решена) могут быть свои уникальные решения. Более того, может быть такое, что ты и твой коллега с другого конца света можете абсолютно разными путями решить одну и ту же проблему и не факт, что у кого-то "более правильный" вариант.
Если ты написал плохой код - ты поймешь, что ты написал плохой код позже. Ты либо сам споткнешься об него; либо прочитаешь статью (документацию) и поймешь как сделать лучше чем есть; либо тебе объяснят более опытные люди (объяснят, а не закидают камнями). Если кто-то скинул тебе стикер с человечком, который бьет себя по лицу, показывая "какой треш" и не аргументирует, то скорее всего он сам не понимает, как делать "правильно".
Изучай паттерны, учи архитектуру, ПОНИМАЙ для чего тебе та или иная архитектура и перестань наконец бояться, что ты неправильно обычный print в коде написал и кто-то тебе об этом скажет.
🔥3
Народ, копался в Kotlin docs (не, не перехожу на native, просто его тоже знать полезно для Flutter разработчика, кстати) и заметил, что
там есть раздел Kotlin Wasm. Не знаю давно ли они его готовят, но то, что готовят - это факт. Правда пока что Alpha версия.
Даже пример сайта есть на Compose Multiplatform + Kotlin Wasm (по мне так очень корявый пока что). Кликни сюда, чтоб посмотреть.
Если ты не знаешь, что такое WebAssembly (wasm) - можешь прочитать в этой статье.
Напомню, что на прошедшей конференции Google IO команда Flutter тоже представила Flutter wasm (и пока в этой гонке находится впереди), на которую возлагает большие надежды.
В целом, данная технология должна сильно улучшить производительность Flutter Web и помочь сделать выбор в пользу Flutter тем, кто собирается писать web-приложения, а команда Kotlin хотят помешать и забрать себе этот кусок пирога! Ну а как мы знаем, конкуренция это хорошо, это заставит каждую из команд сделать свой продукт лучше!
там есть раздел Kotlin Wasm. Не знаю давно ли они его готовят, но то, что готовят - это факт. Правда пока что Alpha версия.
Даже пример сайта есть на Compose Multiplatform + Kotlin Wasm (по мне так очень корявый пока что). Кликни сюда, чтоб посмотреть.
Если ты не знаешь, что такое WebAssembly (wasm) - можешь прочитать в этой статье.
Напомню, что на прошедшей конференции Google IO команда Flutter тоже представила Flutter wasm (и пока в этой гонке находится впереди), на которую возлагает большие надежды.
В целом, данная технология должна сильно улучшить производительность Flutter Web и помочь сделать выбор в пользу Flutter тем, кто собирается писать web-приложения, а команда Kotlin хотят помешать и забрать себе этот кусок пирога! Ну а как мы знаем, конкуренция это хорошо, это заставит каждую из команд сделать свой продукт лучше!
Kotlin Help
Kotlin/Wasm | Kotlin
👍1
Настраивал 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