Программирование : Dart & Flutter по-русски
Анатолий
Там софт должен работать годами
Анатолий
Ну даже я преувеличил ??
Анатолий
Все мы знаем кое что секретное
admin
чем плох апи на каком нить вертиксе?
admin
не обязательно же шпринг с ЕЕ тащить
admin
вертикс вероятно и Го перплюнет в скорости
admin
ибо сетевая часть это нетти а остальное это реактивные акторы
Анатолий
Го не такой быстрый как все мечтают, обычный язык, из компилируемых самое дно
admin
я когда выбрал делать бек под апку на вертиксе или эликсире выбрал последний именно изза любви к ФП а не изза скорости
km
Приветствую други. Подскажите пожалуйста в какую сторону копать, можно ли на флаттере организовать работу приложения в фоне, на подобии сервисов в андроиде...?
Анатолий
говорят что можно, но это не точно и это не чисто на флаттере
Erik Spent
можно, есть либка за 300 баксов)
Erik Spent
[
{
"type": "link",
"text": "https://pub.dartlang.org/packages/flutter_background_geolocation"
}
]
Мумитроль
Флаттер работает внутри привычной Activity, если нужны сервисы - Вам будет нужно написать их нативно и прикрутить к Flutter.
Erik Spent
it will work for DEBUG builds
Анатолий
эт тока локация?
km
А как быть айос? Просто в айос я не в зуб ногой если честно..
Erik Spent
а так надо писать нейтив под обе платформы
Анатолий
ну там же "теоретически" не так много писать?
Анатолий
просто чета иногда делать
Анатолий
или там надо серьезно постараться?
Мумитроль
А в iOS такого вообще нет, дак что писать нечего)
Мумитроль
Там нет понятия работы в фоне, если это только не геолокация, музыка и тд.
Анатолий
а как у них работают приложения в фоне?
Мумитроль
Там сворачивая приложение оно вскоре выгружается полностью.
Анатолий
это какая-то неправильная многозадачность )
Мумитроль
И никаких сервисов и тд
admin
Оно не выгружается, просто код не выполняется
Мумитроль
В итоге там батарейка 1500 мач в старых iPhone тянет как 3000 мач в ведре.
Мумитроль
Процесс выгружается
Alexei Volkov
[
"Смотрите примеры из ",
{
"type": "link",
"text": "https://pub.dartlang.org/packages/flutter_isolate"
},
" но с учетом того что понативной части в андроиде это должно быть из сервиса."
]
Анатолий
это вроде не совсем то
Анатолий
точнее совсем не то
admin
Процесс выгружается только когда памяти мало остаётся, а так приложения могут сутками висеть в приостановленном состоянии
Мумитроль
Это не то, что спрашивают
Мумитроль
Вы про Android или iOS?
km
Прост о хотел прикрутить уведомления. В фоне проверять бекенд, если что то поменялось присылать пуши. Firebase юзал, но нужна своя определенная логика. Что можете подсказать?
Мумитроль
Вы хотите разрядить телефон в 0?
Анатолий
чет мне подсказывает что вы не с той стороны начали
admin
Уведомления не так прикручиваются
Анатолий
пуши и сервер может сам присылать если что изменилось
Alexei Volkov
Я не говорю что это ровно то что спрашивают. Но там не плохой референс как запускать изоляты и организывать обмен с ними.
Анатолий
без фонового процесса
Анатолий
ему не нужны изолянты
Мумитроль
Обычно, не приложение смотрит и проверяет, а сервер через пуш будит приложение и говорит, что изменилось.
Alexei Volkov
А как вы из сервиса андроида запустите что либо без изолята?
Анатолий
а как вы из сервиса отдадите данные изолянту?
Alexei Volkov
легко и не принужденно
Анатолий
ну вот так же и приложению можно отдать данные, разве нет?
Alexei Volkov
Человек спросил про работу в фоне, если он все это будет делать в контексте активити, то onPause остановит все.
km
Ну я как бы только постигаю гранит дева... Подскажите куда копать буду оч благодарен
Alexei Volkov
Его он тоже остановит если создан в контексте активити
Анатолий
все флаттеровские изолянты созданы в контексте приложения
km
Как это можно организовать и на чем если не секрет?
Анатолий
любой сервис который может работать с пушами, либо велосипедить. К примеру (барабанная дробь) фаербайз :)
Анатолий
Какая именно логика нужна?
Мумитроль
Почитайте про пуши, там особо выбирать не выйдет
Maria
можно посмотреть как сделан alarm_manager плагин тут:
Maria
[
{
"type": "link",
"text": "https://github.com/flutter/plugins/tree/master/packages"
}
]
Анатолий
фаербейз можно элементарно связать с gae, там маленький инстанс с кроном (если надо что-то постоянно проверять) который деграет нужные функции у фаербейза
Maria
всякие нотификейшн плагины. Статья про geofencing на медиуме. Принцип вроде один
km
Проверка бд. При изменении пуш, желательно на определенного юзера.
Maria
вроде выше пишут, что как-то через изоляты, но я что-то не могу понять, как что и причем тут изоляты?? и примеров с изолятами никогда не встречала в реализованных подобного рода плагинах
Анатолий
[
{
"type": "link",
"text": "https://firebase.googleblog.com/2017/03/how-to-schedule-cron-jobs-with-cloud.html"
},
"\n\nСамое тупое что приходит в голову:\n1. крон регулярно проверяет что надо\n2. по ссылке схема, дергает нужную функцию которая шлет пуш"
]
Анатолий
у фаербейза есть апи для работы с пушами, просто отдаете ей массив данных и пуш приходит
Анатолий
там смол инстанс бесплатны один
Анатолий
для банальной проверки даже его моного будет
Анатолий
если ограничить вызов функций то можно неплохо сэкономить
Анатолий
там есть лимиты на вызов/работу
Анатолий
можно без функций прям с инстанса дергать что надо
Maria
посмотрите как сделан alarm_manager. Там же нет никаких изолятов
Alexei Volkov
[
{
"type": "link",
"text": "https://github.com/flutter/plugins/blob/master/packages/android_alarm_manager/android/src/main/java/io/flutter/plugins/androidalarmmanager/AlarmService.java#L90"
},
"\n\nЧто это если не запуск изолята?"
]
Анатолий
ну гае довольно таки недорогой по сравнению с авс/мсчетатам
Анатолий
а где там изолянт?
Анатолий
Не все где написано isolate есть флаттеровский изолянт :)
Alexei Volkov
не буду продолжеть этот спор, живите в своем мире
Анатолий
Технически функция main стартует в своем изолянте
Анатолий
треть для гугла и треть для фаербейза это уже остается 10
Artem K
Добрейший вечерочек всем! Делаем социальный проект в основе которого благотворительность. Собираемся разрабатывать также апк под андро и апле. Возможно тут есть человеки умеющие в Андроид / Айос / РеактНетив / Флаттер ? Хотеющие по вечерам погрузиться в достаточно интересный проект??? Готовы посотрудничать как фриланс или/и по-другому. Прошу писать в личные сообщения, расскажу подробней про проект и задачу
Анатолий
Люди хотеющие получить помошников могут написать в соответствующий канал
Анатолий
есть таковой для флаттера
Анатолий
[
{
"type": "mention",
"text": "@dartlang_jobs"
}
]
Анатолий
тут срач ваше сообщение быстро выведет из области видимости
Анатолий
Кстати, на тему жс
Анатолий
Оч много возможностей )
Andrey
Ну хватит уже, там не явное приведение типов
Andrey
Хотите сравнивать с учетом типов === в помощь
Анатолий
тоже самое выйдет
Анатолий
приведение типов явное, оно явно описано на 2 страницы
Andrey
Явное это когда (нужныйТип)переменная привет из срр
Andrey
Используй typescript и не будет таких проблем
Анатолий
то я пошутил типа
admin
Это видимо страницы А3
First Last
Там ведь не только сравнения
First Last
А чо за холивар
Анатолий
та как обычно, какой язык лучше, но мы давно успокоились
First Last
Да Чаво там сложного Главное unwrap делай везде и будет тебе счастье)))
Мумитроль
Кто-то может подсказать как нарисовать пунктирную линию на канвасе без доп зависимостей?
northelks
canvas.drawLine
Мумитроль
и как его применить?
northelks
эмм, там же легко “провалиться в апи”
northelks
хотя возможно и не так просто..
Мумитроль
Чет я не вижу способов сделать пунктир
Мумитроль
и я не один такой, как оказалось, проблема у многих и есть прям зависимость которая может помочь
Мумитроль
Но это дичь, друзья
northelks
мм, согласен, я думал там в апишке будет это заимплеменчено
Мумитроль
и я бы не спрашивал
northelks
я как-то давно наткнулся вот на это, думал уже должны были добавить/пофиксить, но походу ещё нет
northelks
[
{
"type": "link",
"text": "https://github.com/flutter/flutter/issues/4858#issuecomment-472716207"
}
]
northelks
может будет полезно
Мумитроль
я на Canvas рисую, мне не это нужно
northelks
там прям не совсем линия, но..
northelks
хотя хз, поможет ли)
Мумитроль
Ага, а еще там используется зависимость, которой я хочу избежать с методом dashPath
Мумитроль
И мне уже будет проще самому написать и рисовать отрезками, но это как-то вообще странно
northelks
ты про path_drawing?
northelks
можно ещё глянуть коды charts_flutter, там тоже есть реализация пунктирной линии
northelks
charts_common -> chart_canvas -> drawLine
Мумитроль
Уже проскакивала мысль. Думаю как и тут реализовали, просто Path генерируют такой циклом.
Мумитроль
И казалось бы, почему в Flutter такая с виду тривиальная задача и решается в лом?
Анатолий
Эх, не то, вот HTML самое оно
Vadim Lukichev
Brainfuck, вне конкуренции
admin
[
"Кто то занимался реверсом генерируемого флаттером платформного бинарника? В частности ",
{
"type": "link",
"text": "libflutter.so"
},
" ?"
]
admin
Чистый ли там бинарь под арм или обертка над вм + аот снапшоты дарт байткода?
admin
Не охота тратить свое время но вопрос любопытный. В плане инжекта полиморфных крипторов сегментов в бинарнике
admin
судя по тому что сами утилиты флутера состоят из dart.exe snapshot то видимо второе
Artyom Nesterenko
Дополнительное подтверждение ко вчерашнему разговору о том, что Android <= 4 больше не нужен. Смотрим на последний пункт (остался только 4.4 ??). Так что, думаю, и во Flutter скоро версию поднимут, хоть в этом нет особой необходимости.
Artyom Nesterenko
Или это они имели в виду, что и для 4.4 версий больше не будет, тут не совсем понятно.
Max Payne
4.4 убрали поддержку
Pavel Kozlovskiy
Добрый день, а я правильно понял, что если есть анимация то это всегда StatefulWidget ?
Artyom Nesterenko
Нет, может быть и Stateless.
Artyom Nesterenko
Да и вообще можно сделать, что в StatefulWidget только контроллер лежит, а все анимации описаны в StatelessWidget.
Pavel Kozlovskiy
[
"Вы меня запутали, и это хорошо)))\nУшёл читать ",
{
"type": "link",
"text": "https://flutter.dev/docs/development/ui/animations/tutorial"
},
""
]
Artyom Nesterenko
[
"Потом еще можете сюда:\n",
{
"type": "link",
"text": "https://flutter.dev/docs/development/ui/animations/staggered-animations#stateless-widget-staggeranimation"
},
"\n",
{
"type": "link",
"text": "https://medium.com/flutter-community/create-simple-animations-for-your-articles-with-flutter-7769085108d1"
},
""
]
Pavel Kozlovskiy
Но, согласитесь, что там всё равно лежит AnimatedBuilder, который StatefulWidget
Artyom Nesterenko
Соглашаюсь. ??
Artyom Nesterenko
Вопрос в том, где он лежит. Чтобы сделать анимацию, необязательно пихать все в StatefulWidget, ему главное дернуть AnimationController.
Pavel Kozlovskiy
[
"НУ у меня вопрос возник по большей части в процессе разбирательства с redux, и я запутался, почему в хорошо известной репе с примерами архитектур используются стейтлесс вижжеты, а вот здесь фулл\n",
{
"type": "link",
"text": "https://github.com/swat-cat/reduxsample/blob/master/lib/ui/auth/login/sign_in.dart"
},
""
]
Artyom Nesterenko
Не шарю в Redux, но вроде все норм по анимации, не вижу ничего такого.
Sergey ?
Из официальных источников в дебаг моде там dartvm, в релизе только рантайм и gc
bitizen
Все привет! Подскажите, как лучше сделать архитектурно. Есть страница товара. У товара есть отзывы. На странице видно 2 последних отзыва и есть кнопка посмотреть все отзывы. Отзыву можно поставить like/dislike. Как эффективно сдлеать это работу с лайками? Архитектура BLoC
Ray Kit
Ну блоком и делать ???>?
Ray Kit
Или ты имеешь ввиду как с помощью bloc это реализовать ?
Alexei Volkov
[
"Про bloc нашел заметку ",
{
"type": "link",
"text": "https://medium.com/flutter-community/why-use-rxdart-and-how-we-can-use-with-bloc-pattern-in-flutter-a64ca2c7c52d"
},
""
]
bitizen
я имею ввиду мне же не делать subject на каждый отзыв?
bitizen
я в целом то bloc понял, но проблема в том что я не могу найти best practice и bad practice
northelks
пока сам не попробуешь, не поймёшь однозначно
bitizen
вот например как делать лайки, что если нужно bloc например для конкретных 2х экранов, но этих экранов в стеке может быть несколько
northelks
а все эти бест и не бест практики они субъективны и работает зачастую лишь в контексте той или иной задачи того или иного проекта
bitizen
согласен но хотя бы дает бызовое понимание что хорошо, а что плохо и в каких ситуациях
northelks
а какие сложности?
northelks
лайк - диспатч, дислайк- диспатч
bitizen
это понятно, но куда
bitizen
каждому посту свой сабджект?
bitizen
или один на всех?
northelks
что такое сабжект у тебя?
northelks
один блок на страницу
bitizen
это поянтие из rx, типа поток событий
northelks
в блоке стейт, стейт это лист отзывов
Artyom Nesterenko
[
"О, вот вам новое подробное сравнение. ",
{
"type": "link",
"text": "https://www.didierboelens.com/2019/04/bloc---scopedmodel---redux---comparison/"
},
""
]
Artyom Nesterenko
Прям по полочкам, когда и что.
northelks
в листе отзывы, диспатчеш - в листе ищешь отзыв, меняешь лайк, возврщаешь новый стетй
northelks
страница показывает новые значения
bitizen
а не будет ли тогда дерево всех отзывов перерисовываться?
northelks
я думаю это будет вечная тема
northelks
и каждый уважаемый будет считать своим долгом внести лепту в мировой дискусс по данному вопросу и высказать своё фе одному методу, заняв ярую позицию защиты другого метода
northelks
и это нормально
northelks
всё что в build методе будет перерисовываться
northelks
и это нормально
bitizen
на самом деле за это только беспокоюсь
bitizen
хотя я заметил что флютер умный, и как то хитро перерисовывает
northelks
в самой офиц доке везде написано, что build может вызываться часто
bitizen
ну просто с тем же успехом можно использовать setState
northelks
и что не стоит париться, потому что под капотом, за build методо стоит огромный процесс парсинга виджетов и понимания кого как что и зачем отрендеривать
northelks
потому что блок не панатея
northelks
setState -> scoped_mode -> redux/bloc
northelks
от простого к сложному
northelks
ого, там в статье даже гифку классную для редакса замутили))
northelks
+1 за гифку, сколько не читал доков за всё время по редаксу, наверное лучшая гифка))
Artyom Nesterenko
Они там для каждой архитектуры, мне тоже очень понравились. ??
Dmitry Dreko
спасиб за интересный источник
Dmitry Dreko
[
"ребят, есть подобный источник для flutter? \n",
{
"type": "link",
"text": "https://github.com/Alexintosh/Awesome-Ionic"
},
""
]
|