Программирование : Dart & Flutter по-русски
Artyom Nesterenko
Нужна производительность — Rust, нужно быстро — Python. Код на Dart некрасивый. Теперь живите с этим. ??
tdesc
сейчас дарт дает уникальную возможность делать микрофронтенд архитектуру которая будет работать на любом экране. точно так же как React это не архитектура и не язык, flutter это не архитектура и bloc это не архитектура, это фреймворк и паттерн программирования на языке дарт реализованный. на одном флаттере только формошлепить.
Evgenii Elchev
Жаль что врайк единственная такая компания)
Mitai
ваще в ютубе был доклад где врайковячянин расказывал почему выбор пал на дарт
Evgenii Elchev
Не помнишь тезисы?
Mitai
если проект становится большим, и растет количество программистов, при использовании жаба скрипт переодически выплывают разные странные ошибки
Mitai
если у вас большой проект и куча людей то жаба скрипт плохой выбор
Mitai
щас мб найду в истории его
Mitai
[
{
"type": "link",
"text": "https://www.youtube.com/watch?v=TtLMHfvY2uM"
}
]
Павел
Подскажите , как получить контекст вне метода build виджета? Но в его же классе
Павел
[
{
"type": "link",
"text": "https://i.imgur.com/qIgSeYm.png"
}
]
Павел
можно конечно передать его аргументом, но как-то не красиво
Павел
может есть поле какое-то?
atyourservice
Его в билд аргументом передают
atyourservice
Почему некрасиво-то?
Evgenii Elchev
Не знаешь, они там про TS говорили, я пощелкал немного, основной упор на строгую типизацию идёт
Павел
Просто думал, что фреймворк в класс виджета поле подставит, в каком контексте отрендерил виджет. А так таскать контекст по всем фукнциям класса виджета. Просто личные ощущения)
Alexey Z
[
"How to use `GlobalKey` to maintain widgets' states when changing parents? - Stack Overflow\n",
{
"type": "link",
"text": "https://stackoverflow.com/questions/56895273/how-to-use-globalkey-to-maintain-widgets-states-when-changing-parents"
}
]
Павел
The most common use-case of using GlobalKey to move a widget around the tree
Павел
где-то попадалось, что не очень рекомендуется к использованию, так как тратит ресурсы чуть сильнее
Alexey Z
А через провайдер не расматривал вариант?
Павел
провайдер использую, а он что имеет поле контекста? Я туда как раз отдаю аргументом контекст другой, не основной
Павел
пока просто отдал через аргумент функции
Павел
[
{
"type": "link",
"text": "https://i.imgur.com/NjqJ7OF.png"
}
]
???????
Заодно это решит твою проблему токеном бота
???????
Не придется на клиенте хранить как лошок
Павел
Собственно есть задача, что-то типа Bottom action sweet, только хочу чтобы выезжало слева или справа. Пока реализовываю через модальное окно. Может кто-то посоветует что-то интереснее?
Mitai
совсем не много, основной доклад был все таки о дарт
Evgeny Cherkasov
[
{
"type": "link",
"text": "https://flutter.dev/docs/cookbook/design/drawer"
}
]
Павел
почти drawer но нет, без кнопки вывода
Павел
[
{
"type": "link",
"text": "https://material.io/components/sheets-side/#standard-side-sheet"
}
]
Evgeny Cherkasov
Его можно и программно открывать
Nikita Domnitskii
[
{
"type": "link",
"text": "https://habr.com/ru/company/wrike/blog/330832/"
}
]
tdesc
врайк был один из первых, за счет дарта получил конкурентное преимущество
Evgenii Elchev
Ага, спасибо
Evgenii Elchev
Мы опять скатываемся в холивар. Я просто хотел сказать, что есть множество компаний, где разработчиков больше 25, а строк кода больше 2кк, но они живут без дарта. Сейчас я посмотрел доклад, почитал статью и все ещё не вижу весомых причин использовать именно дарт. В прочем я так же не считаю что они не должны использовать дарт. Не говоря уже о том что это все просто мое личное мнение.
tdesc
когда у вас будет 25 разработчиков на проекте будет смысл подискутировать
Evgenii Elchev
У меня было больше разработчиков на проекте
tdesc
занимались организацией команд и работ и релизами?
Evgenii Elchev
И я руководил. Но это правда были разные периоды
tdesc
зачем тащить сообщество назад в js болото?
Evgenii Elchev
С чего вы взяли что я его куда то тащу?
Пашка
Привет всем Начал изучать Flutter, могли бы вы дать какие нибудь ру источники, книги, статьи для изучения. И есть карта джуна?
tdesc
да вот удивляет ваша позиция. выбор между дартом и джаваскрипт для вас не очевиден и даже более того сомнителен
Evgenii Elchev
Я на Swift 5 лет пишу ???>?
Пашка
Благодарю Ещё один вопрос Пишу на маке, приложения на симуляторе запускаются, все ок. Когда ставлю на реальное устройства они вылетают, в чем проблема?
tdesc
вот откуда тогда ваши компетенции по кроссплатформенным инструментам взяться? у вас задач нет таких
Evgenii Elchev
И я ещё раз говорю. Я просто высказал своё мнение. Причём вполне нейтральное.
tdesc
мнение неплохо подкреплять аргументами
Evgenii Elchev
Если хочешь кого то убедить. А я не хочу
northelks
кто хочет писать на дарте, тот будет писать на дарте :) если кто-то хочет гнаться за трендами - его право
tdesc
«есть множество кампании где 25 блаблабла» но пишете вы на свифте а не на дж. крайне авторитетно
northelks
зачем спорить о том, что лучше и кто круче)
tdesc
не поняли зачем же врайк дарт выбрал )
Evgenii Elchev
И что? Я не понял. Вы же пытаетесь доказать что я при этом не компитентен.
Evgenii Elchev
Точно не я)
northelks
они выбирали между ts и дартом, ts тогда был юный, выбрали дарт покатило, продолжили писать на нём
northelks
они рискнули - риск оправдался (даже ещё до флаттера)
tdesc
по закону даунинга крюгера у меня это и не получится. я других от вашего мнения предостерегаю
Evgenii Elchev
Какого мнения? Что можно писать, можно не писать на дарт?
northelks
37сигнал в своё время рискнули с руби - и захватили рынок неплохо
tdesc
я уверен что по вопросам свифта у вас очень хорошее мнение
Evgenii Elchev
Но вы не знаете сколько я писал не js.
Evgenii Elchev
И вы почему то противопоставляете мое утверждение многие компании имеют сложный продукт и не пишут на дарт
Evgenii Elchev
И то что я 5 лет пишу на Swift
tdesc
значит если и писал то было это больше 5 лет назад
Evgenii Elchev
Типо компании из за этого пропали?)
Evgenii Elchev
Майкрософт?
tdesc
особенно кто на jQuery писал
Evgenii Elchev
Я ничего никому не доказывал
Evgenii Elchev
И никуда не скланял
tdesc
веб эволюционировал настолько что html +css это не веб
Evgenii Elchev
Вы тут супер хиро
Evgenii Elchev
Вы все знаете
Evgenii Elchev
Мне ничего говорить нельзя
Evgenii Elchev
Закончим на этом
northelks
я писал 5 лет назад на джс) ещё на версиях реакта, когда от него -dom не отпочковался отдельно и только-только flux появлялся
tdesc
у каждого свой взгляд на реальность
Evgenii Elchev
И только ваш правильный
tdesc
я свой аргументирую
Evgenii Elchev
«есть множество кампании где 25 блаблабла» но пишете вы на свифте а не на дж. крайне авторитетно
Evgenii Elchev
[
{
"type": "link",
"text": "https://t.me/rudart/162314"
}
]
Evgenii Elchev
Это к чему аргументы?
Evgenii Elchev
Так и вы не гитхаб
Evgenii Elchev
И врайк не гитхаб
tdesc
хотел уточнить ваш реальный опыт в вебе 5 лет назад чем занимались
tdesc
врайк пишет под веб
Evgenii Elchev
Все ещё не улавливаю связи между моим высказыванием и моим опытом
tdesc
опыта нет, мнения сколько угодно
Evgenii Elchev
Ваш аргумент что у меня нет опыта
Evgenii Elchev
И значит я не прав
Evgenii Elchev
Я опелировал к опыту других компаний
Evgenii Elchev
Кто тоже больше
Evgenii Elchev
И не пишет на дарте
Evgenii Elchev
Но видимо не нельзя на них ссылаться
Evgenii Elchev
Потому что сам я не пишу на js в последнее время
Evgenii Elchev
Вот писал бы
Evgenii Elchev
Мог бы на них сослаться
Evgenii Elchev
Все ваши аргументы просто личные наезды на меня
tdesc
если бы вы там работали то можно бы было
Alexey Z
И какие компании ушли от дарта?
Mitai
а можно вопрос нубский?
Mitai
как разрабатывать на дарте/aqueduct? права, группы, все нужно создавать самому?
Mitai
какая группа может редактировать какая нет
Mitai
юзера и что у него есть...
tdesc
мож лучше готовый фаербейз чем свой бек пилить? )
Mamikon Papikyan
привет всем. кто-нибудь знает как отключить ети сообщении? Когда кликаю на экран андроида она дает мне такие разные сообщении...
Mitai
начинать с HTML и CSS?
tdesc
с выбора бек или фронт
Artyom Nesterenko
[
"Только такое нашел. ",
{
"type": "link",
"text": "https://stackoverflow.com/a/55965761/5569272"
},
"\nОтключить ты их в принципе не можешь, потому что это логи системы."
]
Mamikon Papikyan
ок спасибо
Evgenii Elchev
Ты сделай для начала просто флаг admin - да/нет) настройка групповых прав это не задача на которой надо учиться)
Temurxon
как можно и лучше сделать
Temurxon
которая кружится
Evgenii Elchev
Либо делать трансформ всего блока потяамовой и одновременно каждого внутреннего против часовой. Либо руками смещать центры каждой кнопки. Может есть какой нибудь стандартный виджет. Но я такого не знаю
Evgenii Elchev
А ещё есть же флар
Roman Cinis
[
"Который уже давно не flare a rive (",
{
"type": "link",
"text": "rive.app"
},
") ;). Но такое проще прямо в флаттере сваять без сторонних библиотек. Да перф. будет лучше"
]
Evgenii Elchev
Согласен. Но я просто накидывал варианты)
Sasha
Ребят, а как можно переопределить нажатие на кнопку назад?
Mitai
трудный выбор, они все такие интересные
Andrei Abramenko
[
{
"type": "link",
"text": "https://medium.com/@iamatul_k/flutter-handle-back-button-in-a-flutter-application-override-back-arrow-button-in-app-bar-d17e0a3d41f"
}
]
Fortune's Desire
гайс, что значит такая подсветка в студио?
Fortune's Desire
я стырил чето с гитхаба посмотреть
Nick
Сгенерированный файлы
Rinat Kurmashev
я хочу в плагине сделать листенер для нативной библиотеки, например делаю invoke method, в нативе вызвается листенер, вот как вернуть инфу из нативного листенера? через methodChannel или eventChannel?
Angry TaigaFox
Привет, подскажите зачем showBottomSheet generic ? И самое главное что через PersistentBottomSheetController в future closed можно получить какие то данные того же типа что и generic.??
Олжас Сулеймен
[
"кто спрашивал кто пользуется дартом ( на май 2019 )\n",
{
"type": "link",
"text": "https://github.com/dart-lang/site-www/blob/25482fe021febea3520c6db7c51705036493a270/src/community/who-uses-dart.md"
},
""
]
Mitai
даже игруля есть, список довольно внушительный
Олжас Сулеймен
но старый ((
Alexey Z
Ребят как подружить два провайдера? функции дергать друг у друга
Rinat Kurmashev
Передать один другому
MiT
[
{
"type": "link",
"text": "https://pub.dev/documentation/provider/latest/provider/provider-library.html"
}
]
Alexey Z
Спасибо, алгоритм ясен
Алексей Корпатенков
Потому что BS может вернуть результат через навигатор .pop(result)
Angry TaigaFox
Я пробовал, он возвращает каждый раз null, возможно я что не правильно делаю.(
Алексей Корпатенков
А откуда навигатор берешь? Или ещё в чём-то проблема. Тут тогда нужно уже код смотреть, но на моей практике работает без проблем
Angry TaigaFox
Это конечно тоже вариант, но мне он не подходит
Angry TaigaFox
Дело в том что постоянно возвращает null, а должен 'hello' вернуть, не работает сама передача результата через pop
Angry TaigaFox
Navigator вызывается в контексте BS
Angry TaigaFox
И я не могу понять почему всегда null если в pop я передаю параметры
Angry TaigaFox
Да дело не в асинхронности, Future closed контроллера всегда возвращает null, данные через pop не передаются
Angry TaigaFox
builder чего?
Angry TaigaFox
так я метод ScaffoldState (showBottomSheet) вызываю, а туда передаю сам Widget
Angry TaigaFox
Ну собственно что было не так у меня, я вызывал тот же метод, передавал ему тот же builder??
Angry TaigaFox
Сейчас такой вариант попробовал, но тоже лажа, closed возращает null
Angry TaigaFox
Не помогает(
Angry TaigaFox
Сделал так но result всегда null
DVS (Read The F.ng Manual) Studio (NoHello)
убрать .closed
Max
Типичный пример. В отрисовке динамического UI очень часто приходится делить числа пополам - центровки и т.п. Арифметическое деление - очень дорогая операция. В разы дороже остальных. А бинарный сдвиг - примерно как инкремент, дешевле сложения.
Roman Cinis
а можно на этом моменте поподробнее? Как в дарте реализовать бинарный сдвиг? Для тех кто без бэкграунда в какой-либо разработке
Max
[
{
"type": "link",
"text": "https://dart.dev/guides/language/language-tour#bitwise-and-shift-operators"
}
]
Max
value >> 1 - быстрое деление пополам.
Max
Точно так же, как в JS, если что.
Roman Cinis
здорово! Спасибо, но я не зря написал про отсутствие бэкграунда в разработке, поэтому про JS это не ко мне :D
Artyom Nesterenko
В любом языке программирования так же.
Roman Cinis
да понятно. просто я лично ни на чём не писал никогда, так что для меня это новинка :)
Max
Шансов что тебе пригодится это знание раньше, чем ты детально освоишь язык - очень мало. В контексте флаттера, к примеру, такие оптимизации нужны только если ты пишешь свой виджет с нуля с самостоятельной отрисовкой.
Roman Cinis
ну я зацепился глазом за "Арифметическое деление - очень дорогая операция. В разы дороже остальных". Поэтому думаю что бы не говнокодить лучше сразу делать правильно...
Max
В масштабе времени пользователя разница абсолютно несуществена. Читаемость кода с привычными операциями важнее. А если у тебя полсотни делений на отрисовку фрейма - то можно и соптимизировать немного)
Artyom Nesterenko
Как однажды сказал очень уважаемый человек.
Max
Вопрос был про то, зачем такие операции в принципе нужны. И да, бывают истории, когда они нужны)
Roman Cinis
ну новичку сложно определить где начинается преждевременная оптимизация и где заканчивается костыль
Artyom Nesterenko
Мне кажется, что и новичку несложно понять, что не нужно лезть в такой низкий уровень, тем более, что изначально написанное работает хорошо. ??
Max
Поэтому и отвечаем детально. Там, где действие - результат интеракции с пользователем или с сервером - точно не нужны.
Artyom Nesterenko
Да, я прочитал.
Artyom Nesterenko
Поддерживаю.
Roman Cinis
ну оно понятно, я ж просто вижу что человек знающий пишет про сложность операций, значит беру на заметку. А обоснованно оно или нет наверное можно понять спустя некоторое время, с опытом
Roman Cinis
Ясно, для меня лично уже стало понятнее. Спасибо ещё раз и думаю я со своей стороны закончу оффтоп :)
Тимур
[
"Парни, прошу помощи!\nПытаюсь передать картинку на сервер. Клиент - Flutter, Сервер - ",
{
"type": "link",
"text": "Aqueduct.io"
},
" (dart).\nС клиента передаю Multipart и в нем доп. поле - имя файла.\nВопрос - как это поле (имя файла) распарсить на сервере?"
]
Fortune's Desire
а flutter packages get подтягивает все плагины вообще в проекте? Я пытаюсь фаербейз настроить, добавил в градлы необходимые строчки
Fortune's Desire
Но не уверен, что все подтянулось, как по гайду на оффсайте
Fortune's Desire
или только в yaml
Artyom Nesterenko
flutter packages get берет только pubspec.yaml
Fortune's Desire
Тогда зачем они просят это
Max
Pubspec вроде как управляет только кодом Dart. А плагины могут содержать Java/Kotlin/Objective C/Swift
Artyom Nesterenko
Хм. Возможно, я неправ.
Artyom Nesterenko
Вообще, для обновления зависимостей Gradle нужно открыть модуль Android и нажать кнопку Gradle Sync.
Fortune's Desire
Это суровые реалии жизни или то, к чему я приду, не сделав flutter packages get?
Fortune's Desire
Прекрасно все, в app/build.gradle сломались new properties и new GradleExcptions, стоив мне открыть файл
Fortune's Desire
перешел, там много текста, буду вникать
|