Программирование : Dart & Flutter по-русски
Alik E.
Сохраню, спасибо. Взял вечером курс Стивена Грайдера на Udemy. Всю ночь вот смотрю, очень нравится и очень понятно объясняет.
Andreii Bezruchko
Ребята, пожалуйста объясните разницу между const и final, читал читал но так и не могу понять
Daniil S
const - то, что мы определяем как константу в компайл тайме, final - неизменяемая ссылка в ран-тайме. По сути const - нужно определять тогда, когда ты имеешь доступ к const конструктору и точно определил переменную на этапе, именно разработки, а не работы программы
Daniil S
[
{
"type": "link",
"text": "https://youtu.be/D7_4KjTkKsw?t=765"
}
]
Daniil S
надеюсь, что правильно
Andreii Bezruchko
Спасибо)
Михаил
stephen grider на udemy неплох. в некоторых местах он нудно повторяет примерно одно и то же, но можно сделать 1.5 скорость
Daniil S
тут просто есть люди которые дарт пилят, стисняюсь немного)
northelks
[
{
"type": "mention",
"text": "@dsrenesanse"
},
" зачем же так сложно объяснять const/final ??"
]
Daniil S
ну стараюсь подробно, чтобы вот точно понятно было)
northelks
получилось наоборот) имхо
l
Ещё во время дебага приложения const будут обновляться, а final нет
l
[
{
"type": "link",
"text": "https://flutter.dev/docs/development/tools/hot-reload#recent-code-change-is-included-but-app-state-is-excluded"
}
]
Alik E.
Всем привет. Можете посоветовать, как реализовать такой UI? Нужно, чтобы весь список с фотками скроллился вертикально, при этом в самом верху списка на первом месте был вот этот черный квадрат, а горизонтальный список с категориями должен держаться всегда, как Section Header. Реализовал такое в нативе и в React Native, но во Flutter не могу найти ничего подходящего.
Alik E.
Чтобы сделать черный квадрат на первом месте много думать не надо, так как можно просто возвращать этот виджет на 0 индексе списка. А вот как сделать так, чтобы категории держались всегда на экране - не понимаю. И в нативе, и в React Native подобные вещи всегда в Section Header отдавал и весь список был под этой секцией. В Flutter не нашел такого, но скорее всего плохо читал. Если кто поможет - буду очень благодарен.
l
SliverAppBar, но я не делал с ним ещё ничего, так что это неточно
Alik E.
А как заставить одну ячейку нестед листа всегда держаться вверху экрана?
Alik E.
Может так яснее будет
Vyacheslav
[
"Привет ещё раз. А ты не знаешь, будут фиксить подобные вещи, типа this function has a return type, but doesn't end with a return statement? Пример: функции, где свитч на все кейсы енама, но линтер или компилятор все равно ругается. слишком олдскульно как-то ",
{
"type": "mention",
"text": "@misteraleph"
},
""
]
Alik E.
Вообще над енамами нужно поработать. Ни сырых, ни ассоциативных значений
Vyacheslav
Дефолт не нужен
Vyacheslav
Зачем писать дефолт, если нет неиспользованных кейсов перечисления
Maria
Раньше не ругался на такое насколько помню. Странно.
Vyacheslav
[
{
"type": "code",
"text": "bool test( bool input) {\nswitch (input) {\ncase true:\nreturn true;\ncase false:\nreturn false;\n}\n}"
}
]
Vyacheslav
Такое неподвластно линтеру или компилятору. Подчёркивает. Но собирается
Vyacheslav
Сейчас зафоткаю
DVS (Read The F.ng Manual) Studio (NoHello)
default?
Vyacheslav
Он конечно решает проблему. Но я не об этом
Vyacheslav
Меня эта проблема напрягает, когда я новый кейс добавляю
DVS (Read The F.ng Manual) Studio (NoHello)
А.. не весь тред прочитал. Забавная особенность
Vyacheslav
Это приводит к багам придобавлении нового кейса
Vyacheslav
А также компилятор должен сам понимать, когда на это нужно ругаттся. А когда нет
??????????
Всем привет, подскажите где можно почитать о потоках в dart и как с ними работать, спасибо
??????????
в справке непонятно
Олжас Сулеймен
Или изоляты
??????????
Я так понимаю Future это как Promise в js, а втот стримы
Олжас Сулеймен
вот хз как обяснить через джс
northelks
[
{
"type": "link",
"text": "https://medium.com/flutter-community/reactive-programming-streams-bloc-6f0d2bd2d248"
}
]
northelks
стримы это простые pub/sub
northelks
Future это да, как промисы в дж
northelks
можно либо await/async, либо then
Vyacheslav
Тут с веб что ли все?
Оганнес Асатрян
большинство
Олжас Сулеймен
может запулим голосвание, +1 с бека
northelks
да, много кто побитый жизнью с RN
Daniil Kostin
+1 с бека, с натива, с геймдева :)
Анатолий
ты еще php 3 застал?
Vyacheslav
А что там так изменилось?
Vyacheslav
Мои знания заканчиваются денвером и 2010 годом
Vyacheslav
У меня от пхп ощущение, что это полная дичь, и там до классов как до луны:)
Анатолий
Та не, там вполне нормальная система классов, классическое ооп, даже миксины есть
Анатолий
Ну там опкеш стоит, и это все не пропадает даром + структура проекта улучшается. Вот в го, к примеру, сложней структурировать приложение из-за его плоской структуры
Анатолий
Есть в пхп асинхронные библиотеки ?? можно как на ноде писать
Анатолий
Начиная от фреймверком и заканчивая всем необходимым, от фс до сети
admin
Так про все сказать можно
northelks
это ведь разные вещи)
northelks
блок это стейт, а стейт это не данные) не модели
Анатолий
Тебе опрежеленно нужно писать на го, думаю он тебе понравится
Анатолий
И драй, не люблю копипасту
northelks
это не паттерн)
northelks
и бд есть) своя, родная, фаербэйзная, в чём проблема то)
northelks
или без orm уже никак)
Анатолий
Вообще паттерн и принцип технически одно и то же
Анатолий
Ибо реализаций паттерна может быть много, а работают они все по одному принципу
northelks
паттерн - это более конкретное, с нейким шаблоном и правилами
Анатолий
Иногда да, но не всегда
northelks
паттерн другим не может)
Анатолий
Слишком размытая грань просто
northelks
ты ищешь что-то по паттернам, по конкретным критериям
northelks
по принципам что-то найти нельзя
Анатолий
Ну если с этой стороны смотреть то да
Alexandr AndroidDev
[
"поделюсь печалью. бился головой о mobius(",
{
"type": "link",
"text": "JUG.ru"
},
") и appsconf(Ontico), программные комитеты считают, что Dart2/Flutter в России не интересен слушателям"
]
Анатолий
Меньше конкуренции это всегда хорошо
admin
Ну на этих конфах были доклады по кроссплатформе и у них есть по чему делать выводы
Анатолий
Когда будет интересен, у вас уже будет опыт и преимущество
Александр Васильев
Так работает
Александр Васильев
А так нет =//
Александр Васильев
почему никто не знает?
Александр Васильев
Это же не тень
Александр Васильев
ide пишет что так можно использовать
Александр Васильев
Расскажите плиз суть идеи=)
Александр Васильев
как мне оттенок задать?
Александр Васильев
а как просто цвет задать серый?
Александр Васильев
Color(0xFF42A5F5) ?
Александр Васильев
мне светло серый нужен
Александр Васильев
grey[300]
Александр Васильев
primarySwatch: Colors.grey[300], - ошибку выдает
Александр Васильев
почему не работает со скобками то?
Александр Васильев
без скобок работает
Александр Васильев
primarySwatch: Colors.grey[300] - ошибка primarySwatch: Colors.grey - работет
Олжас Сулеймен
Сватч MaterialColor это диапазон от светлого к темному Map int, Color
northelks
потому что это разные типы
Олжас Сулеймен
Чем меньше тем светлее
northelks
тебе нужен что-то вроде MaterialColor(Colors.grey.value, {300: Colors.grey[300]})
Олжас Сулеймен
На самом сайте материала есть утилита которые генерируют сватч по 500
northelks
grey возвращает MaterialColor, когда как grey[300] возвращает Color
Александр Васильев
primarySwatch: MaterialColor(Colors.grey.value, {300: Color(0xFFE0E0E0)}), - не работает primarySwatch: MaterialColor(Colors.grey.value, {300: Colors.grey[300]}), - не работает
Александр Васильев
А как ?
Александр Васильев
что-то туплю
Alexandr AndroidDev
[
"помогите уставшему мозгу понять :)\n",
{
"type": "pre",
"text": "(0 until childCount).map { getPosition(getChildAt(it)!!) }.contains(itemCount - 1)",
"language": ""
},
""
]
Александр Васильев
нужно primarySwatch и оно просит MaterialColor тип
Александр Васильев
аа нельзя свой цвет?
Александр Васильев
так оттенки же нельзя?
Александр Васильев
ААа... это я подключаю в Теме набор grey с оттенками и допустим использую его в AppBar ?
Александр Васильев
а как сделать чтоб оттенок был 300 в целом в приложении?
Александр Васильев
вот где синий
Александр Васильев
primaryColor: Colors.grey[300], - так работает)
Олжас Сулеймен
[
{
"type": "link",
"text": "https://codelabs.developers.google.com/codelabs/mdc-103-flutter/#3"
}
]
Александр Васильев
brightness: Brightness.light, пусть
Александр Васильев
на дарк нету назвпний полей
Александр Васильев
не охото капать сейчас=)
Олжас Сулеймен
если глянуть в ThemeData то там можно запилить тему для AppBar
Олжас Сулеймен
[
{
"type": "link",
"text": "https://material.io/design/color/the-color-system.html#tools-for-picking-colors"
}
]
Александр Васильев
это я прохожу туториал 25 часовой =) уже часов 90 наверное=) так что пусть так будет! Спасибо, Юрий что отвечате ????
Олжас Сулеймен
вот удобная вещь для генераций сватча
Олжас Сулеймен
и про доку не забывайте
Александр Васильев
да читаю
Александр Васильев
я еще перед этих курс по дарт на ютубе послушал - без этого наверное бы не смог.. а раньше на питоне только копипастэ)
Александр Васильев
Я хотел узнать - все пишут что нужно BLOC использовать А у меня в курсе ScopedModel для остслеживания состояний всего приложения, и RX для тех мест где нужно кусочек ui какой-то отслеживать изменения и ребилдить. Мне же хватит этого? Или BLOC нужно изучить?
Александр Васильев
Flutter BLOC pattern
Александр Васильев
package:scoped_model/scoped_model.dart - модель всего приложения package:rxdart/subjects.dart - для каких-то ед. элементов эти использую
Александр Васильев
У меня в двух словах так - я передаю данные/функции между страницами с помощь scoped_model А до этого передвались данные через конструкторы. БЛОК что такое даже и незнаю=)
Александр Васильев
Ну если что-то изменилось я делаю notifyListeners(); - и само все что изменилось ребилддиться
Александр Васильев
с этим согласен.. просто есть вещи которые меняються в одном месте и их еще нужно изменить в другом через notifyListeners(); это делается в Scope Model
Александр Васильев
Ну это проще чем через конструкторы данные таскать
Олжас Сулеймен
вот делаете один общий объект со стрим контроллером, подписываете на него зависимости ... и вот вам блок
Александр Васильев
но это все ИМХО - у меня слишком мало опыта чтоб что то обсуждать адекватно
Александр Васильев
Пока буду двигаться по курсу.. 89% уже.. Потом обязательно по БЛОК посмотрю
Александр Васильев
[
"Авторы не слабые..\nContributors #\nOriginal Fuchsia Authors\nAndrew Wilson\nBrian Egan\nPascal Welsch\n\n",
{
"type": "link",
"text": "https://pub.dartlang.org/packages/scoped_model"
},
""
]
Александр Васильев
Да ситуация банальная - в курсе хорошо разжеванно про эту библиотеку - вот и использую её
Александр Васильев
у меня с map_view была подобная ситуация..
XbIK
у меня тоже после обновления до поддержки android x, gradle начал вытворять
XbIK
тот же гугловский package webview перестал нормально работать, сами на сайте рекомендуют откатить его до версии 0.2.0 с 0.3.4
XbIK
но 0.2.0 не нравится xcode ??
IB Akhrorov
Думал что я один пишу говнокод??
IB Akhrorov
Почему им не включить майнинг в ос
??????????
Можете посоветать каие-то ресурсы для изучения Flutter?
Kostia
Может кто помочь, как сделать так чтобы подождать получение всех айтемов из базы и тогда уже добавить?
Kostia
Так snapshots это же стрим, зачем там then?
Александр Васильев
[
"Начинать нужно с DART\n",
{
"type": "link",
"text": "https://www.youtube.com/watch?v=ulg2dpPkulw&list=PLUbFnGajtZlX9ubiLzYz_cw92esraiIBi"
},
" - простенький курс с точки зрения Flutter, но все основы понятны\n\nВот продвинутый курс - можно уже сложные вещи делать\n",
{
"type": "link",
"text": "https://www.udemy.com/learn-flutter-dart-to-build-ios-android-apps/"
},
""
]
IB Akhrorov
Ребят , когда я программирую на андроид , я забываю некоторые функции , это я один такой или у всех так ?
??????>? Maksim Mukharev
А есть какой-то boilerplate хороший?
Анатолий
Бойлерплейт для чего?
??????>? Maksim Mukharev
Для приложения с хорошей архитектурой. Где роутинг сделан, разные экраны, выделены данные
Анатолий
Ну это не всегда надо
Анатолий
Опять же экраны какие, данные какие? точно они всегда одинаковые будут?
Анатолий
Не придется потом удалять?
Анатолий
Мне кажется добавить роутинг проще чем удалять ненужное
northelks
[
{
"type": "link",
"text": "https://habr.com/ru/company/moikrug/blog/442934/"
}
]
Анатолий
По чему на фотках за компом в офисах все такие довольные? Они что не работают а втычут в чатики?
northelks
настоящие программисты не работают, ты разве не знал?
northelks
кушают печеньки, общаются в чатах, сидят за компом и клацают по клавишам
northelks
“делать блок” звучит мощно
northelks
у тебя какая-то мания или анти-мания блока))
northelks
[
{
"type": "mention_name",
"text": "0xff00ff",
"user_id": 49566130
},
" сарказм..)"
]
Анатолий
Ну, я такое про админов слышал
Andrey
Играют в кикер, пинг понг, пьют смузи, куря вейп на гироскутере
Andrey
[
"А ещё можно в качалке приседать стоя на гироскутере\n",
{
"type": "link",
"text": "https://twitter.com/siliconbangalor/status/817806840365023232?s=21"
},
""
]
northelks
лучше на балансборде попробовать))
Анатолий
Если он упадет с таким весом, будет бо бо
??????>? Maksim Mukharev
[
"Нашел что-то вроде ",
{
"type": "link",
"text": "https://github.com/felipecarvalho/flutterstarter"
},
"\nНо он старый уже и не обновлялся"
]
Анатолий
[
{
"type": "link",
"text": "https://flutterstudio.app/"
}
]
??????>? Maksim Mukharev
Ну, если это первое приложение, то хорошо бы какие-то практики посмотреть
Анатолий
про эту штуку слышал?
Анатолий
Можно накидать себе быстренько стартовую страничку и с нее плясать уже
??????>? Maksim Mukharev
Вау!!! Вот это круто! Прямо огромная благодарность! Только недавно думал, что подобный инструмент обязан появиться на свет, раз все готовыми виджетами. И вот он ))
Анатолий
Но там нет роутинга, только возможность накидать внешний вид странички одной примерно
Анатолий
Я его в начале обычно использую для старта, а дальше уже обвешиваю роутингом как мне надо
??????>? Maksim Mukharev
Вот где роутинг делать тогда лучше? Прямо в main?
Анатолий
Смотря где он нужен :)
Анатолий
Можно и прям в мейн
Анатолий
Но в целом он довольно таки неплохо повторяет родное поведение виджетов
Artyom Nesterenko
[
"Dart is dead for modern web dev. It never was in serious contention but it's now (almost) official - webdev\n",
{
"type": "link",
"text": "https://www.reddit.com/r/webdev/comments/ayvdod/dart_is_dead_for_modern_web_dev_it_never_was_in/"
}
]
Karen
"Title is misleading, a better title would have been “Web Components is dead”. The linked issue is to support a newer version of the web components spec. As mentioned in the issue discussion, neither Angular nor React nor Vue nor any other major modern frontend framework supports web components. The feature doesn’t seem to have a lot of momentum, so it makes sense that it wouldn’t be at the top of the Dart team’s priority list." ??
Анатолий
Веб компоненты не поддерживает, какой ужас, они жутко тупят везде кроме хрома, так что пока и не надо париться об этом
Анатолий
Ютуб вроде на них построен, и для ие они грузят фалбеки, по сути для ие там отдельный сайт
Анатолий
хорошая технология
Анатолий
Я тебя иногда не понимаю
Анатолий
Кто знает что это за кнопочка?
Анатолий
пишет что меняет рендер андроид/иос
Анатолий
Но эмулятор то андроидовский
Руслан Яндиев
Наверное на разных платформах движок рендерит по разному. Т.е. это чисто программная, не аппаратная часть.
|