На типовой вопрос существует типовой ответ😁
Но думается мне, автор вопроса не то имел ввиду..
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
Я пропал. Я был занят тем, что готовился к собесам.
Три компании, три собеседования и три оффера✅
Я долго повторял теорию и заполнял ямы в своих познаниях. С кое-какими вопросами от собеседущих я справлялся отлично, а где-то наоборот немного тупил, но в целом сложилось все хорошо.
В одной компании собес был около 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