Программирование : Dart & Flutter по-русски
Анатолий
если тебе просто надо от ошибки избавиться
Макс Зубко
да, просто избавиться
Макс Зубко
Добавить знак ??
Анатолий
[
{
"type": "link",
"text": "https://www.dartlang.org/guides/language/language-tour#operators"
}
]
DVS (Read The F.ng Manual) Studio (NoHello)
если переменная null, то Text будет материться на нее. ему обязательно надо String
DVS (Read The F.ng Manual) Studio (NoHello)
например mySuperNullVar ?? "значение по-умолчанию"
Макс Зубко
Понял, спасибо
tridetch ??
Да login page возвращается билдером роута и все норм с фокусом и ребилдом у меня
admin
Ребята я работаю в один радио приложении , у меня есть проблема когда звонят звук автоматически не отличается , как возможно
Alexey Perelygin
а знаете чем опасен мутабельный объект? мне кажеться есть некоторые кляксы, пробелы в понимании того, зачем и почему люди стремятся к иммутабельности. Ваш пример с яблоком очень просто разрушается тем, что если вы считаете, что ударенное яблоко или надкусанное не изменилось - то в вашем мешке с яблоками будут и надкусанные и целые - врядли найдется покупатель на такой товар
Daniil S
откушенное яблоко перестает быть яблоком?
Daniil S
тип яблоко, оно не изменилось
Daniil S
структура его изменилось
Оганнес Асатрян
только если вы продаете яблоки
Оганнес Асатрян
а если ты кормишь яблоками ослов, то им пофиг))
Daniil S
на счет покупки яблока и мешок я не очень понял, у вас в колекции могут содержаться несколько юзеров с разными данными, таким образом в мешке могут быть яблоки разных цветов и формы
Daniil S
я как раз утвержадаю, что надкусанное яблоко изменилось, вы явно не до конца поняли, что я хотел донести
Alexey Perelygin
ок, может ли быть несколько мутаторов для одного стейта?
Daniil S
если вы хотите разделить на несколько мутаторов - пожалуйста, я рассматриваю сценарий с одним мутатором
Daniil S
в вашем случае позаботесь чтобы разные мутаторы не обращались к одним и тем же данным
Alexey Perelygin
ну вот как раз позаботившись об этом я в итоге получу иммутабельный стейт
Alexey Perelygin
через множество итерация возможно но все же
Alexey Perelygin
Я не могу понять: 4если множество мутаторов могут менять единственный стейт - в итоге проще сделать иммутабельный стейт и не парить себе мозг синхронизациями. Во вторых если один мутатор - один стейт - то какая разница мутабельный он или нет? и нафиг себе услажнять жизнь тогда тестированием мутабельного стейта?
Daniil S
о том, что если ваш мутатор становится очень большм, разделите его на множество, синхранизировать ничего не нужно
Daniil S
большая разница, не пересоздавая имутабельный стейт вы экономите ресурсы мобильного девайса
Alexey Perelygin
меня больше стейт волнует а не мутатор
Alexey Perelygin
он же у вас мутабельный?
Daniil S
вы похоже статью не читали
Alexey Perelygin
пойду перечитаю что ли
Daniil S
говорите что я утвержадю вещи, которые противоположны аргументам в статье
Alexey Perelygin
class Mutator { mutateState(action) { switch(action){ case Actions.Increment : { state.valueElementState.value++; state.valueElementState.valueBroadcaster .add((state.valueElementState.value).toString()); break; } } } - ну вот конкретно вижу мутабельный стейт. Разве нет?
Daniil S
повторюсь, я не называл стейт иммутабельным
Daniil S
а виджет иммутабельный
Alexey Perelygin
ну я утверждал про стейт. Стайт же у вас мутабельный?
Daniil S
повторюсь, я не называл стейт иммутабельным
Alexey Perelygin
н-да. Ну ладно, зарекался уже спорить и на свою голову не выдержал.
Mikle Alpha
Благодарю за совет, он направил меня на истинный путь!) Проблема заключалась в функции-билдере полей форм, избавившись от которой я решил проблему. Если интересно - подробно описал все, добавил код оригинального "косячного" компонента и новый видос на оверфло (RU).
Roman Pihariev
привет всем, подскажите по вопросу: сую лист вью в Column, хочу чтобы высота лист вью была такой, сколько требует отображение всех айтемов (ограничение 3), то есть аналог wrap_content в ведре, лист вью находится в контейнере, так как мне нужно декорировать бекграунд, в какой виджет нужно сунуть лист вью для такого поведения?
Roman Pihariev
я так понимаю, один из наследников Flexible?
Roman Pihariev
с Expanded получилось поведение аналогичное match_parent в том же ведре, мне нужно обратное :)
Roman Pihariev
спасибо большое, решилось! :)
Maria
я честно говоря не спец, но вот тут очень интересно, какие именно ресурсы и как экономятся. Может есть примеры на этот счет?
Daniil S
пример коробка в которой лежат данные, менять ее данные мы не можем. Чобы получить данные внутри коробки нам нужно просто обратиться в память по ссылке на данные из коробки. В случае когда нам нужно данные в коробке изменить, есть три пути: пересоздать коробку полностью, скопировать все данные и изменить те, которые хотим поменять и третий путь изменить нужные данные сетером. Представим что коробка очень большая и имеет в себе большие данные, вычесляемые данные и тд. То пересоздавать такую коробку - ресурсоемкий процесс. Копировать - уже лучше, но со старой как быть? Ждать пока ее GC заберет, а вдруг ссылку на нее где-то храните/используете? Вот и не заберет уже) Самый простой и эффективный на мой взгляд способ- просто посмотреть в коробку и заменить нужные данные другими. Чем меньше работы мы производим - тем меньше нагружается процессор => меньше расходуется аккумулятор
Maria
Не получится ли так, что классы, которые мы создаём (типа модели/стейты) лишь малая часть всех классов и влияние их пересоздания незначительно? И может быть операционки и яп должны об этом больше заботиться? Тут вопрос в цифрах. Интересно сравнить и посмотреть.
Igor
[
{
"type": "pre",
"text": "Premature Optimization Is the Root of All Evil (c)",
"language": ""
}
]
tdesc
иммутабельные коллекции пересоздают свои копии очень быстро за счет хешей
Artyom Nesterenko
[
"В Android через flavors, для Flutter тоже можно. ",
{
"type": "link",
"text": "https://flutter.io/docs/deployment/flavors"
},
""
]
Александр Котков
и в ios и андроид можно чекать build type debug или release
Max??
кто-то делал кэш для http? Чтобы в случае потери соединения с сервером возвращался последний полученный response
Александр Котков
если чисто логи помогут, то логируй все через print и просто подруби андроид к компу на котором запущена студия и открой логи
Александр Котков
будет видно все логи устройства
Александр Котков
или лучше через Log где укажешь TAG и по нему фильтровать)
Александр Котков
обмажся логами)
Александр Котков
и не работает где в релизке? на стороне дарта или нативки?
Александр Котков
я имею ввиду не работает на какой стороне
Александр Котков
если это андроид и релизка и включен про гвард, он мог порезать нужное или изменить имена
Александр Котков
особенно если используешь сервисы гуглов
Александр Котков
или gson
Александр Котков
если на ios работает значит дело конретно на стороне андроида
Александр Котков
понятн, ну выключи про гвард и забилди релизки
Александр Котков
если будет работать значить дело в этом)
tdesc
Есть remote server который сокет слушает
tdesc
Туда можно слать логи и смотреть
tdesc
Пакет который в pub работает с редаксом из коробки, но можно и самому подкрутить там пару классов всего
Maria
У меня такое было с шифрованием. Когда применяла классы из convert. Работало, но очень медленно. На первый взгляд выглядело будто не работает??
Александр Котков
+ причем на ios работает медленне на много нежели на ведре
Александр Котков
чтоб интересно было)
Александр Котков
в телефоне у вас развернутое
Александр Котков
она и больше может весить
Александр Котков
апк это как зип
Александр Котков
билд ios у нас вообще под 2гига весит а в маркете уже 15мб
DVS (Read The F.ng Manual) Studio (NoHello)
15гб?! о_О
Александр Котков
щас подправлю)
DVS (Read The F.ng Manual) Studio (NoHello)
А. Фуф
Александр Котков
не все так плохо)
Кирилл Адещенко
Кто знает как видео зашарить?
Maria
Дополню: сейчас уже должно быть получше. Судя по issue прилично увеличили скорость. Но я не проверяла пока.
tdesc
Ни к кого билды фаербейз под андроид не разваливались с миграцией на androidX?
Timofey
Разваривались, откатывался
Timofey
Интересно кто как порешал
tdesc
Локально починили на CI никак не починим
Timofey
А как починили локально?
tdesc
В плагинах версии меняли и еще какое то шаманство с суппорт лимбами
Timofey
[
"Для CI ",
{
"type": "link",
"text": "https://codemagic.io/"
},
" юзаете?"
]
Timofey
У меня плагинов штук 15, долго ждать пока все под X обновляться
Timofey
Интересно кто то codemagic юзал?
tdesc
Эх у меня альфа релиз на след неделе, придётся локально билдить.
Кирилл Адещенко
Классная тулза! Больше нечего сказать. Может сразу собрать и отправть в Gooogle play, AppStore
Timofey
То есть есть смысл для релиза юзать, так как во время разработки сам себе могу билдить
Кирилл Адещенко
Автоматизация! Запушил ты в мастер, а он сам всё собрал и запустил тесты пока ты пьёшь кофе)
Кирилл Адещенко
Ну или не в мастер)
Alex Adrianov
Где найти JsonCodec? В библиотеке convert его не видит
Alex Adrianov
Нет вообще таких либ
Alex Adrianov
Все, что есть
Alex Adrianov
Отбой, нашел, там либа флаттера, а не Дарта коннектилась
Artyom Nesterenko
[
{
"type": "link",
"text": "https://t.me/dartlang_jobs"
}
]
Evgeny Kot
[
{
"type": "mention",
"text": "@melnikovk"
},
" в личку пожалуйста"
]
Max??
Codemagic это CI? Тяжело его внедрять? У меня просто проекты по 2-3 месяца и не хочется тащить в них то что настраивается долго (вроде Jenkins)
Evgeny Kot
[
"Не проходите мимо, на ",
{
"type": "link",
"text": "https://t.me/dartlang_jobs"
},
"\nНовая вакансия ??"
]
Оганнес Асатрян
мне будет интересно пообщаться с человеком, который не побоялся и пошел прям работать флатер разрабом
Оганнес Асатрян
писать код под прод
Александр Котков
перегоняем текущие приложения на флаттер в прод почему нет?
Александр Котков
работает нормально, никаких сверх пупер херни не замеченно, если баг критический его фиксят за день, два
Оганнес Асатрян
можно ссыль на прилаги, какого они рода?
Александр Котков
на данные момент это не выложенно в маркеты, точнее закрытое тестирование релизок
Александр Котков
приложение типа месеенджер
Александр Котков
со всеми плюхами звонки, файлы и так далее
Оганнес Асатрян
хех)) ну дык. ждем-с значит))
Оганнес Асатрян
нельзя говорить что все четко, пока его не тестят целевые юзеры
Александр Котков
ахаха это согласен
Оганнес Асатрян
[
{
"type": "hashtag",
"text": "#уменявсеработает"
},
"!"
]
Александр Котков
ненене не так
Александр Котков
[
{
"type": "hashtag",
"text": "#ничонинаюуменявсеработает"
},
""
]
Оганнес Асатрян
я посмотрю на количество багов когда вашу прилагу будут юзать пару лям юзеров на китайфонах андроид
Александр Котков
ну милиона нет
Александр Котков
но у нас есть днищенский китайфоны
Александр Котков
на них полет нормальный
DVS (Read The F.ng Manual) Studio (NoHello)
+. Надеемся в Очень скором времени выкатить 3 приложения под одним проектом. Полностью на флаттере. Главное стабильный релиз выбрать) Сначала они в кач-ве касдева будут висеть и собирать аналитику. потом редизайн и полноценное внедрение. Отпишусь, как запустим)
Оганнес Асатрян
самое страшное на мой взгляд. это когда прилетают баги и ты без понятия как их фиксить вообще. (речь про флатер)
Constantine
есть же чат на 1100 человек )
Оганнес Асатрян
всего лишь
Оганнес Асатрян
где очень мало людей которые выкатили в прод чет
Constantine
но это фигня ) у RN также ??
Оганнес Асатрян
и смогут помочь с реальным булшитом
Оганнес Асатрян
я пока искал работу мне несколько вакансий скинули, где надо было переписать с рн на нативку
Constantine
наконец-то это началось )
DVS (Read The F.ng Manual) Studio (NoHello)
Над логирование, Zone и прочие полезные штуки на проделанной встраивать
First Last
Что 200, что 1100 - суть одна и та же Ничего не изменилось
Constantine
это был сарказм, расслабься )
Constantine
я переубедил по осени делать заказчика делать проект на флаттер и мы делали его на RN по этой причине )
Constantine
страшно сцуко релизиться )
Александр Котков
команда флаттера очень хорошо отвечает на ишью и так далее
Оганнес Асатрян
а нет расшифровки для 10?
Александр Котков
уже ктото писал по подобной проблеме, я отписывался, подпись дебаг версиий отличается от подписи для релизки
Александр Котков
нужно в их сервисах гуглов на страничке oauth добавлять так же подпись для релизки вы тестили с дебажкой
Александр Котков
у вас там должен же быть json
Александр Котков
и в сервисах прописана подпись релизная
Александр Котков
в консоле фаер бейза и так же в google api oauth где-то там , щас точно не скажу где
Александр Котков
нужно релизки)
Александр Котков
[
{
"type": "link",
"text": "https://stackoverflow.com/questions/36999751/google-signin-not-working-in-release-mode-apk-android"
}
]
Александр Котков
2 и 3 ответ вам нужен
Александр Котков
вообщем то все прочитай поймёшь о чем речь
admin
из за чего вверх не листает дёргается когда медленно ведёшь пальцем?, вниз такой проблемы нет
Александр Котков
при прокрутке вверх случаем не вызывается перерисовка листа?
Александр Котков
я имел ввиду билд сорян
Александр Котков
скролишь ввершь, а он виджет заново собирает и ставит в начальное положение список
admin
ага подгружает только то что на экране
Александр Котков
добавь key PageStore
Александр Котков
может поможет
Александр Котков
pagestoragekey
Александр Котков
именно) я первый раз с этим 2 дня возился
Александр Котков
гуд, хрен знает почему гуглы это не добавляют в доку
Александр Котков
у них там это есть, но написано так что не поймёшь
tridetch ??
Я вот еще баг заметил в любом textfield когда текст выделяешь конец выделения можно норм двигать а начало вообще не хочет
Max??
У нас под меня пару проектов взяли и скоро будут искать ещё разрабов
Daniil S
а в чем проблема?
Daniil S
на флаттере можно хоть банкинг писать
Daniil S
работа есть, мало конечно
Daniil S
ну смейся, кек)))
Оганнес Асатрян
какой из?
Daniil S
[
{
"type": "link",
"text": "https://soundcloud.com/flutterdevpodcast/0-pilotnyy-vypusk"
}
]
admin
При замене ListView.builder на GridView.builder проблема пропадает хотя он также из стрима получает данные
admin
ещё в дебаг режиме если резко свйпнуть бывает просто само дёргается в конце списка, на реализ сборке пока такого не замечал
northelks
так на апворке уже весьма так немало предложений по флаттеру ?? до НГ, в ноябре-декабре, было где-то лишь 5-10 штук всего, сейчас уже 112, весь этот январь неплохо так пушилась тема флаттера
northelks
понятно, что из этих 112 уже многое старое и неактуальное, но всё же.. статистика она штука такая
Кирилл Адещенко
[
"Привет! Такая проблема, я гружу фото из сети и сохраняю его на устройстве в screen. После того как всё ок, возврвщаюсь pop-ом назад где у меня GridView со всеми фото которые на устройте. ",
{
"type": "bold",
"text": "Карточка создаётся, а фото нет("
},
""
]
Yrij Bezhevets
Фото нужно закешировать куда-то, потом подгрузить ее
Кирилл Адещенко
Уже разобрался)
Artyom Nesterenko
[
"GitHub - mobxjs/mobx.dart: MobX for the Dart language\n",
{
"type": "link",
"text": "https://github.com/mobxjs/mobx.dart"
}
]
Artyom Nesterenko
Кто-нибудь пробовал?
Alexander Kladkov
Заюзал в пет проекте
Artyom Nesterenko
И как оно, стоит времени и сил? Я не очень уловил разницу с Redux, вот и думаю, что изучать.
Alexander Kladkov
Фронтендер?
Artyom Nesterenko
И выглядит сильно сложнее по началу.
Artyom Nesterenko
Нет, я из Android. ??
Artyom Nesterenko
Так что все это чуждо.
Alexander Kladkov
Тогда быстро в двух словах. Мобх это магия, которая работает сама и из коробки. Отлично для мелких и средних проектов. Потому что, дальше вся это реактивность из коробки будет больше боли приносить
Artyom Nesterenko
Не уточнил, что меня интересует использование с Flutter. ??
Alexander Kladkov
Бойлерплейта почти нет
Alexander Kladkov
Я понял
Artyom Nesterenko
Ага, спасибо!
Alexander Kladkov
Поэтому если что-то сложное, советую прорабатывать модели очень хорошо. Очень. Концепция очень простая. Есть action — через который идут все мутации "стора". Есть observable — то за чем смотрим. computed — вычиляемые свойства, которые кешируются, и пересчитываются, только при изменении данных
Alexander Kladkov
Концепция мобх это 5 минут. И еще 5 минут на хеллоу ворлд
Alexander Kladkov
И уже словил баг. Я не смог точно узнать в mobx дело или в чём-то другом, но на ios он не перерендеривает виджет на первое изменение
Alexander Kladkov
Пришлось корячить костыль с таймаутом
Alexander Kladkov
[
{
"type": "pre",
"text": "if (Platform.isIOS) {\n this._timer = new Timer(new Duration(milliseconds: 32), () {\n // Просто ререндерим компонент\n setState(() {});\n this._timer.cancel();\n });\n }",
"language": ""
},
""
]
Artyom Nesterenko
Звучит круто, но можно как-то на пальцах, чем это лучше или хуже Redux для Flutter, кроме того, что магия на аннотациях?
Alexander Kladkov
На декораторах :) Разница огромная. Это просто разные подходы :) Redux это event-emmiter в какой-то степени
|