Программирование : Dart & Flutter по-русски
Sergey Salnikov
dist рассчитан на аргументе конструктора, ты можешь дальше плюнуть и не инициализировать мембера y и тогда this.y останется null
Sergey Hottabych
Понял теперь.
Sergey Hottabych
Я-то думал, что он берет значение поля класса.
???????
А в чем смысл this.y = y тогда был бы?) Само в себя присвоить?)
???????
Или ты думал про инициализаторы так?
Sergey Salnikov
[
{
"type": "pre",
"text": "If you initialize an instance variable where it is declared (instead of in a constructor or method), the value is set when the instance is created, which is before the constructor and its initializer list execute",
"language": ""
},
"\nЧитайте и перечитывайте доки"
]
Sergey Hottabych
про инициализаторы
Sergey Hottabych
Ну зачем чат тогда? Если по каждому вопросы посылают читать доки / в гугл?
???????
Алсо, почаще используй final поля и иммутабельные модели. Точка роста тебе, тут у тебя явно пробелы.
???????
Тоесть чат тут для тебя это ребята которые тебе доку бесплатно пересказывать будут? Ничоси, хорошь, однако...
Sergey Hottabych
Я специально написал num y без final, потому что иначе не даст инициализировать в теле конструктора.
Sergey Salnikov
Ты ж и так знаешь что это так в этом чате)
???????
Ну вот сожалею об утраченном акрониме "RTFM"
???????
Нужно снова вводить в общее употребление)
Sergey Hottabych
Вот тоже непонятно. Почему если для final x; написать Point(this.x), то это сработает, а если написать Point (num x) { this.x = x}, то уже ругается? Если первое, как в доках написано, это просто синтаксический сахар для второго?
Sergey Salnikov
[
"RTFM\n\n",
{
"type": "pre",
"text": "Instance variables can be final but not const. Final instance variables must be initialized before the constructor body starts — at the variable declaration, by a constructor parameter, or in the constructor’s initializer list.",
"language": ""
},
""
]
Sergey Hottabych
Откуда ты это все берешь?
Sergey Hottabych
Ссылочку хотя бы кинь
Sergey Salnikov
На ходу придумываю
Sergey Hottabych
Ребят, умерьте звездность, не забывайте, что сами когда-то учились писать свой первый for (i=0; i<10; i++)
Sergey Salnikov
Какая звёздность, мы ребята которые читают документацию. Ты сперва прочитай и потом спрашивай конкретику
???????
Ок. Плати денег, без звездности поможем.
???????
Сергею в 2 раза больше чем мне, за вредность и цитирование Lang tour
Sergey Salnikov
Пересказывать документацию)) Это как я детям сказки пересказываю) Upd только они читать ещё не умеют
Григорий Коваленко
хороший совет, кстати
Evgenii Elchev
Я его защиту скажу, что прочитать всю доку и запомнить/понять с одного раза это разные вещи)
Sergey Salnikov
Я писал - читаю и перечитываю
???????
Так её и не надо за раз наизусть учить. Возник вопрос по конструторам - пошел в раздел и прочитал по ним
???????
Возник вопрос по final полям - пошел и прочитал
???????
Это все на одной странице. Если оглавлением пользоваться не умеешь - Ctrl+F
vasilich
[
{
"type": "link",
"text": "https://youtu.be/B1fIqdqwWw8"
}
]
???????
Как говорил классик: читайте и перечитывайте документацию
Evgenii Elchev
Я же говорю, это ещё и осмыслить надо)
vasilich
Там и про Файнал задвигают
Evgeny Cherkasov
На основании чего? Есть же области действия переменных.
Boris Goryachev
Такая проблема - есть пуш уведемоления на ios через firebase (все почти как в доках) - все приходит. Но при клике на 1 из них удаляются все. Коллапск кей не используется. По идее они должны висеть до тех пор, пока на них либо не кликнули, либо удалили. Может кто-то сталкивался с таким поведением?
Boris Goryachev
гугл что-то мне не помог ??
Mitai
Доброго дня всем, нужо ли юзать статический анализатор кода на этапе изучения?
Mitai
[
{
"type": "link",
"text": "https://dart.dev/guides/language/analysis-options"
},
" вот это"
]
???????
Если ты про dartanalyzer - то как ты собрался его "не юзать"?
Mitai
так а линтер это что? и правила линтера?
???????
Линтер, если что, также по умолчанию на некоторые правила включен.
???????
И да, стоит. Смысл учится говнокодить, чтоб потом заного переучиваться? Чтоб время потерять и некачественный продукт выпускать?
Socrat
[
"всем привет, кто то работал с этим ? и вообщем по voip на dart\n",
{
"type": "link",
"text": "https://github.com/cloudwebrtc/dart-sip-ua"
},
""
]
Evgeny Cherkasov
У кого нибудь было что Андроид студия при запуске Flutter web приложения намертво вешает комп (win 10)?
Moby Polo
Коллеги, подскажите какие то уроки advanced уровня по Флаттеру, в которых разбираются вопросы на вроде: 1) паттерны 2) репозитории 3) сложные сценарии работы и тп 4) какие то ещё умные слова
Alf
неужели всё настолько плохо по сравнению с реакт нейтивом?
???????
Да, все просто ужасно
???????
Вообще ничего не работает
???????
Лучше даже не начинать
Alf
я не вбрасывать пришел если что
Alf
5к ишуев думаю не случайно же появились?
???????
3133 человека тут мучаются, все правильно
???????
все собираемся в реакт натив идти
???????
Какой вопрос, такой и ответ
???????
Будут умные вопросы, будут умные ответы
Alf
нормальный вопрос задал
Alf
ты наверное покраснел там
Mitai
ну еще есть те кому нравится сам дарт))
???????
Да, троллишь как боженька
???????
Ну ладно, 3132 человека собираются в РН)
Nikita Domnitskii
Колличество ишью к "всё плохо" вообще никакого отношения не имеет
Чингис Хуурак
Стоит ли всерьез изучать flutter на перспективу?
???????
Да, но дарт как первый язык не стоит
???????
По крайней мере если не для себя и не решения определенных задач
Чингис Хуурак
средний уровень php получается, в дарте тоже ООП как понял
???????
Дарт (особенно флатер) с большим упором на ООП реактивщину
???????
После пыхи может быть сложновато, тут уже от опыта и общей эрудиции зависит.
Mitai
а что стоит учить первым?
Sergey Sidorov
У меня все.
???????
От задач и устремлений зависит
Moby Polo
Видать, я какую то глупость спросил, раз все проигнорили ??
???????
Это также очень хороший вариант. Но в чяте дарта это не уместно.
Sergey Sidorov
Какой вопрос, такой ответ, чо:)
???????
Ты смотрел осом репозиторий?
Чингис Хуурак
знания react-a тоже все таки нужны да
???????
Не реакта, а ReactiveX)
???????
Реакт это фреймворк не имеющий никакого отношения)
???????
В пыхе, эти расширения, также есть, если что.
Чингис Хуурак
понял) тоже в эту сторону покапаюсь
Moby Polo
Видать нет, flutter os repository - не гуглится, подскажи как правильно?
???????
[
{
"type": "link",
"text": "https://github.com/yissachar/awesome-dart"
},
"\n\nДля каждого языка и фреймворка есть такие списки"
]
???????
[
"Так и гуглится: \"",
{
"type": "code",
"text": "awesome тото"
},
"\""
]
Чингис Хуурак
В на каких сайтах можно найти хорошие уроки (без воды) по flutter-у для начинающих. Может быть кто смотрел или проходят курсы, или канал в ютубе
???????
Очевидная документация
Moby Polo
Ага, слово не признал в транскрипции, спасибо! Если есть ещё что - поделитесь, пожалуйста :)
???????
Там все есть в разделе get started
Moby Polo
Если совершенно новичок рекомендую курсы с Angela Yu и второй курс с Maximillian. На перемотке смотрится быстро и все очень понятно. Считаю до pre-junior’а после них начинаешь дотягивать :)
Evgeny Cherkasov
[
"Вот такое выдало после часа зависания:\n",
{
"type": "pre",
"text": "Exhausted heap space, trying to allocate 34359738384 bytes.\nFinished with error: Failed to establish connection with the application instance in Chrome.\nThis can happen if the websocket connection used by the web tooling is unable to correctly establish a connection, for example due to a firewall.",
"language": ""
},
"Куда копать? Другое приложение нормально запускается."
]
???????
Ну ты в фаервол пробывал смотреть для начала, как тебе тут написано?
???????
Ребутаться пробывал на предмет занятых портов?
Чингис Хуурак
Документацию еще не смотрел, но тоже посмотрю. Надеюсь с гугл-переводчиком осилю информацию. Спасибо за все ответы ????
NewBalanceM5
[
{
"type": "link",
"text": "https://github.com/newbalancem5/flutter_info"
}
]
Moby Polo
Поясню, пришёл в мир флаттер из веб, являюсь фулл-стек разработчиком, стоит задача по разработке большого приложения. Так как опыта совершенно нет, хочу закладывать архитектуру получше и тп. В конечном итоге мне важна производительность, не хотелось бы перепиливать с нуля через пол года ) Потому в начале работ хочу максимально собрать сложных примеров(пусть даже и не связанных с моей задачей), паттернов и best practice
???????
Ну а как еще то? Или ты полагаешь, что левый индус на ютубчике сделает лучше гугла, а заодно и авторов языка и авторов фреймворка?
Чингис Хуурак
Спасибо, тоже посмотрю ??
???????
Ты на флатер или дарт?
???????
Если что, запороть производительность бизнес логикой - это оооооооооооооочень постараться надо
???????
А вот сам интерфейс - снижай размер перерендериваемой области, а также частоту этого самого рендера
???????
Старайся избегать setState, пользуй стримбилдеры.
Чингис Хуурак
ну про индусов не знаю, а вот когда наши прогеры на проекте показывая дают знания, то намного лучше бывает заходит)
Moby Polo
Спасибо, уже нацелился на провайдер и почти везде стейтлесс
???????
Провайдер не есть архитектура, вам уже из каждой щели об этом говорят
???????
Сам автор об этом говорит
Moby Polo
Может быть есть что-то под рукой, что можешь именно на эту тему посоветовать почитать?
???????
начни с описания к стейтлес/стейтфул виджетам и методу build
???????
Там это написано все
Evgenii Elchev
суть в том что авторы языка не показывают корнер кейсов. Я же смотрел видео по дарту. Они такие, о смотри, вот канал, в одну сторону суешь, с другой ловишь) иди юзай скорее)
Чингис Хуурак
Спасибо вам ребят за обратку?????
Evgenii Elchev
может там в боринг шоу они решают реал ворлд проблемы конечно
???????
Ну да, в этом и мотивация смотреть индусов. Только такой подход хорош, когда тебе надо разобраться как чистить унитаз по быстрому, пока говно на головы соседям не полилось)
Evgenii Elchev
но к слову индусы тоже чушь записывают обычно)
???????
Я не на шоу отсылал, а на гет стартед на офф сайте)
Moby Polo
Мог бы раскрыть мысль? Как его НЕ надо использовать?
4??uzhoy .
Тюдей ви гонна буильд скаффод виз листвью Бади, акйей зэтс алль, секнс
Evgenii Elchev
это как знаешь, есть какая то штука. В ios оутлеты например. Это когда в вижуал билдере связываешь кнопочку с переменной в коде. Штука ну изи. Взял мышкой и протянул связь. В доке так и написо, возьмите и протяните мышкой. И оно так работает. Но есть нюанс, эта связь сохрвняется просто статичной строкой в xml, если переименовать в коде переменную, приложение падает, можно проятнуть две связи и оно будет падать, можно удалть элемент в вижуал билдере и оно падает. В целом как бы логичные штуки. Я когда с этим столкнулся, минут за 15 понял в чем беда. Но для новичков, у которых в голове каша, и для них вообще тут все не знакомое, такие нюансы просто все ломают) они буквально могут потратить несколько суток, что бы понять что там за беда) потому что они знают что можно протянуть, а что это дает и как работает не знают) И вот я рассказываю про UI обязательно делаю акценты на таких корнер кейсах) показываю вот так сделаете будет плохо, а плохо вот из за чего, и вот как надо делать, что бы было всегда хоршо)
???????
Как основу для "архитектуры". Если ты видел это у каких то индусов. Провайдер нужон для чистой архитектуры. Собственно это очень классная штука. Простыми словами: Оно позволит тебе в одном виджете положить чото. А гдето спустя N его наследников - достать.
Vitaliy Zhitnik
Привет. Помогите понять ООП. Я не программист, это хобби. У меня простой вопрос по классам, на который не могу найти ответ: в чем разница между созданием нового класса из базового вызовом и словом extend? то есть между Cars() и class Toyota extend Cars? Ведь получится одир и тот же класс в итоге. Знаю, что при наследовании не наследуется конструктор, но если нет конструктора, в чем разница?
???????
Тойота будет уметь ехать, будет знать что у нее есть пассажиры и бензобак. Даже если ты вообще ничего из этого не будешь у нее объявлять.
???????
[
"Также ты можешь сделать так:\n",
{
"type": "code",
"text": "List cars = [Suzuki(), BMW()];"
},
""
]
???????
Сможешь положить разные марки в список с машинами. Тк машины у них будут общий знаменатель.
Moby Polo
Да я понял, только так и планирую использовать, по сути там круд часть, если можно так выразиться. Имею крупные проекты на реакте и vue, есть даже приложения на бекбоне в nwjs, понимаю смыслы и принципы в этом плане. Спасибо!
???????
Из архитектурных шаблнов тута популярный BLoC и MobX, также немножко есть Redux, но я редко вижу его упоминания.
???????
В общем советую начать со стейт менеджера если не будет казаться тяжело. Если тяжело - начни с чего поменьше-попроще. Все же может быть много нового.
???????
Хотя говорят флатер после реакта норм заходит.
Moby Polo
Я совершенно знаком с редаксом в веб реакте, много читаю споров на счёт какой стейтменеджер лучше. Я пощупал мобх, редакс и провайдер. По простоте - мне подходит провайдер, как считаешь - верное утверждение или я не разобрался? Совершенно не с целью холивара
???????
Провайдер не стейт менеджер и не имеет к ниму никакого отношения, еще раз)
???????
Ты вообще в одном предложении с ними его не должен употреблять)
???????
Провайдер это другое и он не заменяет и не исключает стейтменеджер
Vitaliy Zhitnik
не совсем понял. Так вроде в обоих случаях новый класс будет знать как ехать - в обоих случаях же отнаследуются поля(свойства) и методы из базового класса
Moby Polo
Спасибо, прошёл этот участок пути, с моим бекграундом до сюда - оказалось очень просто. Но зная, например, нюансы vue, которые мне стали известны спустя два года - хочется перед разработкой побольше подготовиться )
???????
Он служит для проброса инстанса этого самого стейт менеджера по контексту
???????
Да, но помимо тойоты у тебя может быть еще БМВ и Сузуики
???????
То что тебя интересует называется "полиморфизм"
Moby Polo
Для лучшего понимания на «машинках» можешь пояснить когда бы ты использовал, например, редакс и когда провайдер?
???????
Ну на машинках: когда бы ты использовал седан, а когда колеса для него?
???????
Я думаю, ты предпочел бы использовать их вместе)
Vitaliy Zhitnik
но что мне помешает создать так сузуки? Cars suzuki = Cars() Не могу понять разницы по факту
???????
У сузуки могут быть свои, уникальные свойства.
???????
Тобишь предположим сузуки обычный седан, ламбарджини двухместная и дверки открываются у нее вверх, полицейская машина обладает сигналкой
Vitaliy Zhitnik
Конечно, но эти свойства мы будем добавлять в обоих случаях. и в вызове нового класса, и при наследовании. Получается, что разница лишь в том, что не наследуется конструктор?
???????
Свойства могут быть уникальными
???????
У сузуки в принципе нет полицейской сирены и она не может включать её
Moby Polo
Не, ну я скорее вот про что: Предположим у нас есть некое состояние авторизации, которое или нулл или модель пользователя с полями (например, фамилия, имя и тп). Очень образно: Если мне надо понять - показывать приложение или форму авторизации - я в некой мидлваре опишу, что надо посмотреть в провайдер с указанной коллекцией и понять ее значение. Если нулл - показывал форму, если модель, то проверяю валидность авторизации и открываю приложение. Считаю, что в этом случае - мне подойдёт провайдер. А подобным образом можешь описать пример, когда провайдера будет не достаточно?
Moby Polo
Рекомендую посмотреть Angela Yu, в ее уроках есть база в целом по паттернам и подходам программирования, безотносительно конкретного языка. В том числе подробно поясняются четыре столпа ооп
???????
А теперь тебе к этому делу надо присрать кэширование, бэк, локальную субд и еще пару штук
???????
И экрана у тебя уже не 2, а 10
???????
Собственно твой вопрос сводится к: когда мне надо переставать формошлепить и задуматься об архитектуре, разделив логику на отдельные домены/подсистемы
???????
Провайдер существует лишь на стороне UI, только там где есть импорты флатера.
Vitaliy Zhitnik
ладно, спасибо. Еще пара мелких вопросов 1. зачем нужно ключевое слово void перед функцией, если функция и без него отлично работает? Это просто хороший тон, чтоб отметить что функция ничего не возвращает или функциональность в void все же есть? 2. зачем слово static? что она делает при отметке переменных в классах? простым языком если
???????
"хороший", но при этом обязательный тон
???????
void означает что ты выбрасываешь в помойку результат вычисления
???????
Это аналог "процедур" в языках где они есть
Moby Polo
Вот здесь начинаю понимать, спасибо, почитаю, как работать и можно ли между разными сторами в провайдере делиться данными. Краем уха слышал что-то про ProxyProvider
???????
Ну это все не то, ну или не совсем то. Провайдер это просто удобненькая обертка над InheritedWidget (он у них с запутаным API получился) Вы эе не будете спрашивать, что следует использовать, стейтфул виджет или редакс?
Moby Polo
2. Очень образно, как const определяется при билде приложения. То есть ты можешь обратиться к любому свойству класса без его определения
???????
И в данном контексте рассматривайте его как аналог DI скорее
Mitai
эхх не успел ответить про void((
Vitaliy Zhitnik
обратиться к любому свойству класса без его определения - можно это разжевать?)
???????
Оно говорит, что метод/поле относится не к конкретному объекту, а всем объектам сразу.
Moby Polo
Немного расширяюсь ответ. Подразумевается, что в дарте есть GC, который стирает данные данные вычислений внутри такой функции, это часть экономии памяти
Vitaliy Zhitnik
О, спасибо. Теперь про void понял. Это то, что мне нужно было!
???????
Ну не то чтоб прям стирает) В функцию могут попадать объекты по ссылке, через параметры или область видимости) Не станет же он их стирать)
Evgeny Cherkasov
Перезагрузка компа не помогла. Файерволла нет.
???????
Если венда, то по дефолту он всегда включен. Но тогда не должен быть проблемой с дефолтными настройками
Moby Polo
Например у вас есть класс Car, а в нем определено свойство color как статик. Вы можете вызвать Car.color и получите значение, при этом мы не вызывали класс так Car().color. Пример на свойствах не очень хотя бы в силу ограниченности смыслов. Представьте, что у вас будут некоторые хелперы, глобально доступные методы, которые можно вызывать без создания класса.
???????
Ну шож, попробуй запустить не из ведроид студии Посмотри что будет
Moby Polo
Да, все верно, важное уточнение, определенные именно в текущей области видимости, конечно же :)
Vitaliy Zhitnik
Спасибо большое, понял про static. Не думал просто что нельзя просто без static обратиться к переменной или методу внутри класса. Очень помогли мне
Evgeny Cherkasov
Ну да, я имел в виду что ничего в нем не менял. До этого все работало. Перестало только вчера. Подозреваю что после апгрейда флаттера. Хотя странно что другой проект запускается.
???????
Может так будет понятно: просто методы и поля - это методы и поля созданых объектов. а статик - методы и поля класса
???????
Ну флатер клин попробуй или переставить
???????
Попробуй запускать не из ведроид студии
???????
Разделяй и влавствуй: локализуй проблему
Moby Polo
[
{
"type": "mention",
"text": "@PlugFox"
},
", подскажите, пожалуйста, у вас есть в паблике/гите проекты на флаттере за вашим авторством, я бы хотел посмотреть, занять какие-то best practice?"
]
Danila
Всем привет. Flutter только изучаю. Скажите, а во флаттере тоже нужно (как и в ReactNative) писать модули на родных языках (Java, swift, object-c), если нет api для управления железом (скажем, камерой) ?
???????
У меня есть ряд пакетиков в пабе. В паблик в гите есть только 1 проект, я на нем архитектуру обкатываю. На днях хочу попробывать перевести с БЛоК'а на эвент бас.
???????
Яб прям не сказал, что стоит с меня что то слизывать, я не такой уж и пример для подражания)
Moby Polo
Могли бы вы прислать гит и названия или ссылки на пакеты в пабе?
???????
[
{
"type": "link",
"text": "https://pub.dev/publishers/plugfox.dev/packages"
}
]
Moby Polo
Премного благодарен, а гит?
Moby Polo
А понял, простите ) сбоку ссылка
???????
[
{
"type": "link",
"text": "https://github.com/PlugFox"
}
]
Andrey Rusakov
Пожалуйста подскажите, как реализовать следующую штуку: экраны должны строится как обычно, под весь экран устройства, но отображаться, в масштабе скажем 40%, причем в итоге, на экране должно отображаться несколько разных, уменьшанных "живых предпросмотров". Transform scale не решает проблему, т.к. экраны уже строятся под уменьшенный контекст, и scale просто уменьшит уже "порезанный" результат.
Evgeny Cherkasov
Вобщем помогло одно из двух - либо invalidate cache в студии, либо флаттер клин
Evgeny Cherkasov
RawMaterialButton работает так же как FlatButton в моем случае
?? Назар Калитюк
а покажи скрин кнопки
Evgeny Cherkasov
Да обычная кнопка. Проблема в том, что мне нужно в нее поместить виджет, который растягивается в ширину по размеру кнопки.
Evgeny Cherkasov
Если я в кнопку помещаю Expanded, то оно работает, но в консоль пишет ошибки, что не очень хорошо.
Sergey Salnikov
задавай не мета вопросы, а конкретику с voip, sip, webrtc и мобильными звонилками у меня 3 проекта за плечами кстати было бы интересно узнать кто ещё работал в voip - откликнитесь)
4??uzhoy .
может есть у кого ссылка на шаблон приятной темной темы переопределенной ? можно и не только темной
|