Программирование : Dart & Flutter по-русски
Evgeny Kot
[
{
"type": "mention",
"text": "@egora_sh"
}
]
Егор Шепелев
Прошу прощения, поиск меня подвел
Dmitry
подскажите как его использовать пожалуйста это график для него является линией
Fearless Cry
Хм. Надо как-то по умному закрыть Path
Fearless Cry
Или проставить флажок какой-нибудь
Dmitry
?? покопаюсь еще ... эх и туго идет этот flutter
Fearless Cry
Да наверняка не везде так просто эту тень отрисовать
Fearless Cry
а Pathы везде Pathы
Dmitry Bubnenkov
[
"Почему когда мы делаем dispose нам нужно делать вызов super:\n",
{
"type": "pre",
"text": " @override\n void dispose(){\n super.dispose();\n _bloc.dispose();\n }",
"language": ""
},
"\n\nК слову у меня IDE ругается: The method 'dispose' isn't defined in a superclass of 'HomePage'."
]
Max
Не всегда это нужно делать.
Dmitry Bubnenkov
а когда нужно\когда нет?
Dmitry Bubnenkov
[
"Я делал все по примерам отсюда \n",
{
"type": "link",
"text": "https://github.com/iamprb/bloc_pattern/blob/master/lib/main.dart"
},
"\n\nУ автора супер есть, у меня на него он ругается как написал выше"
]
Max
Вы уверены что dispose писали в State?
Dmitry Bubnenkov
нет не написал походу
Dmitry Bubnenkov
Тут же вроде 1к1 сделал как в примере
Max
Ну во-первых вообще не 1к1. А во-вторых в каком классе вы dispose объявили? На скрине не видно
Dmitry Bubnenkov
[
{
"type": "link",
"text": "https://gist.github.com/bubnenkoff/d916bd538662f0dad55bc911aebb5310"
}
]
Max
А тут он ругается на него?
Dmitry Bubnenkov
[
{
"type": "link",
"text": "https://gist.github.com/bubnenkoff/b00e79c295d1e81f1d06c601c7b79585"
},
"\n\nОн ругается вот тут на 139 строке"
]
Dmitry Bubnenkov
Выглядит это так
Max
Короче, ты прописал dispose в HomePage, у которого super это StatelessWidget. В dispose ты вызывыаешь dispose у super'a, но у StatelessWidget нет dispos'a. Выводы: внимательнее перепечатывайте, учите язык.
Dmitry Bubnenkov
Достаточно ли будет если я просто dispose сделаю? Бещ super?
Max
Вы его не туда впихнули
Max
Боже мой ну почитайте для чего он в интернете-то
Олжас Сулеймен
если у вас что что надо диспозить в стл это почти утечка
Dmitry Bubnenkov
[
"Почему не туда?\n",
{
"type": "pre",
"text": "class HomePage extends StatelessWidget {",
"language": ""
},
"\n",
{
"type": "pre",
"text": " @override\n Widget build(BuildContext context)\n{\n}\n\n @override\n dispose()\n {\n _bloc.dispose();\n }\n\n\n}",
"language": ""
},
""
]
Max
[
"Ты знаешь что такое ",
{
"type": "mention",
"text": "@override"
},
"?"
]
Dmitry Bubnenkov
да, указание что родитель перегрузиь надо
Dmitry Bubnenkov
все я понял, что там нечего перегружать т.к. нет такого метода
Dmitry Bubnenkov
А как быть тогда если у меня Стримы используются в Stateles? Не использовать их там?
northelks
угадай с трёх раз)
Dmitry Bubnenkov
[
"Нет, просто данные туда передаю:\n",
{
"type": "code",
"text": "RaisedButton(child: Text(\"dec\"), onPressed: () => { _bloc.eventSink.add(DecrementEvent()) },)"
},
""
]
Dmitry Bubnenkov
Речь про Bloc? Да там создается экземпляр класса
Dmitry Bubnenkov
Но в таком случае dispose делать не надо? Просто возможна ли тут утечка? Если да то как с ней бороться без dispose?
Олжас Сулеймен
для этого есть stateful переделайте свой виджет на нем
Dmitry Bubnenkov
А можно на палцах объяснить как утечка произойдет в данном случае?
northelks
подскажите, как через in_app_purchase получить список подписок, на которые можно подписаться?
northelks
через queryProductDetails(_kIds) не находит
northelks
(для гугл плея)
Evgeny Cherkasov
[
"Не знаю как флаттер плагин работает, но в самом андроиде вызывается ",
{
"type": "code",
"text": "querySkuDetailsAsync"
},
" со списком SKU и типом продута ",
{
"type": "code",
"text": "subs"
},
""
]
northelks
ну, мне бы во флаттере это дело завести)
Evgeny Cherkasov
приложение должно быть при этом опубликовано в Play, в internal testing например
northelks
не хочется в натив лезть
northelks
опубликовано в бете
Evgeny Cherkasov
маркет заапрувил его?
northelks
(могу скачать апу по ссылке на гугл плей)
northelks
статус published
Evgeny Cherkasov
список sku правильный запрашивается?
Sergey Ozeranskiy
всем привет, смотрю на способы работы с BottomNavigationBar, а именно вопрос перехода по экранам
Sergey Ozeranskiy
и вижу множество решений. У нас bloc+rxdart и вопрос кашерно ли использовать NavigatorState и onGenerateRoute?
northelks
вот здесь хз, ищу по Product ID который показывает в In-app products -> Subscriptions
Sergey Ozeranskiy
сейчас у гас просто routes
Evgeny Cherkasov
ну да по этому id надо запрашивать тогда в самом плагине надо смотреть с этим не подскажу, сам еще только планирую с ним разбираться
northelks
в консоле пишет W/BillingClient(14717): getSkuDetails() failed., походу не находит Sku
northelks
и доков по этому in_app вагон и тележка для флаттера, ых
Evgeny Cherkasov
А где тестируете? На эмуляторе или девайсе?
northelks
на эмуляторе это ж дело и не получится затестить
Evgeny Cherkasov
Получится, надо только чтобы Play стоял
northelks
а, хм, где-то читал, что лучше тестировать на реальных девайсах
Evgeny Cherkasov
А по BillingClient в логах ещё есть что нибудь?
northelks
можно тогда попробовать на эмуляторе ещё затестить
northelks
а где логи смотреть эти?
(;?_?) Ivan Zhuravlev ???>?
logcat?
Evgeny Cherkasov
Не ну если на девайсе не работает, то смысла на эмуляторе наверное нет
northelks
нуу, как показывает практика, андроид такой андроидный, что на девайсе версия андроида может не работать, а вот с версией на эмуляторе будет работать
Evgeny Cherkasov
Ну выше лог вы где смотрели? Я в Android Studio работаю, там в окне Logcat
Evgeny Cherkasov
Ну теоретически да
northelks
у меня vscode, лог то что в консоле выдаёт
Sergey Ozeranskiy
подниму вопрос)
(;?_?) Ivan Zhuravlev ???>?
гугли adb logcat
(;?_?) Ivan Zhuravlev ???>?
из консоли подцепишься и посмотришь на него
northelks
попробую, спасибо за советы
Sergey Ozeranskiy
уточни плиз что имеешь ввиду
Sergey Ozeranskiy
мне ведь нужно как-то понимать какой жкоран текущий и чтобы при тапе в нав панеле не открывался снова тот же экран
northelks
а почему не PageView заиспользовать?
northelks
для перехода по страницам через BottomNavigationBar
Sergey Ozeranskiy
кажется это не очень хороший враинат. Не?
northelks
просто интересно, почему нельзя
northelks
вроде как для PageView и придумали BottomNavigationBar
Sergey Ozeranskiy
в этом случае при тапе на иконку в баре с экрана который уже текущий - откроется текущий второй раз
Sergey Ozeranskiy
пытаюсь понять откуда такое изабилие реализаций навигаций в нав баре)
northelks
так вроде как не так уж и много
Sergey Ozeranskiy
к тем что уже предложили еще есть NavigatorState
Sergey Ozeranskiy
через GlobalKey
northelks
сделать clean флаттеру, перебилдил билд, вылогинился из девайса, перезагрузил телефон, залогинился в гугл, запустил билд... и заработало... бгг) спасибо за помощь ??
Evgeny Cherkasov
Да не за что
Sergey Ozeranskiy
можете объяснить что актуально из этого или что почему стоит использовать?
northelks
только через танцы с бубном
northelks
делайте то, что намного проще
northelks
pageview и просто jumpTo проще некуда для перехода по страницам
northelks
плюс добавляете AutomaticKeepAliveClientMixin для страницы, и она вовсе не будет стейт каждый раз пересоздавать
northelks
я имею ввиду initState/dispose не будет вызываться с каждым переходом на страницу
northelks
(но build будет)
Evgeny Cherkasov
А у PageView свайп влево вправо можно запретить?
Evgeny Cherkasov
Имею в виду ручной, что только программно переключать
northelks
да, physics: neverscrollablescrollphysics
Evgeny Cherkasov
Но анимация при программном переключении будет?
northelks
[
"кстати, в доке вот тут нашёл \"Install your application on an Android-powered device. You cannot use an emulator to test Google Play Billing.\" ",
{
"type": "link",
"text": "https://developer.android.com/google/play/billing/billing_testing"
},
""
]
Evgeny Cherkasov
На самом деле можно, если на эмуляторе стоит образ с Play. Все время на нем тестирую )
northelks
хм, окей, буду знать)
northelks
мм, а есть какая-то особенность, чтобы сделать тестовый purchase без реальной оплаты?
IB Akhrorov
Кто работал с gmaps ui , стабильно ли работает?
Evgeny Cherkasov
Конечно. Надо добавить свой аккаунт в список License testers в Play console
Uraskin Semen
Есть объяснение, почему на iOS не появляется наклейка (1) на значке приложения, когда приходит пуш?
Uraskin Semen
То есть сам пуш всплывает, а на иконке ничего нте
northelks
а разница между Alpha и Beta есть для тестирования оплаты?
Evgeny Cherkasov
Для оплаты вроде нет
Evgeny Cherkasov
Нет для тестирования покупоу надо просто чтобы изначально опубликовано было поиложение
Денис
Подскажите ребят, если кнопки засунуть в Stateless widget, пропадает анимация нажатия? Но при это onPressed работает?
Fearless Cry
Не пропадает
Fearless Cry
onPressed работает
Денис
Спасибо, разобрался.
Dmitry Bubnenkov
[
"Небольшой Оффтоп.\n\n\"Сайт на 15 страниц. Докер. 600МБ.\"\nВсе что нужно знать о современном вебе.\n\n",
{
"type": "link",
"text": "https://toster.ru/q/670005"
},
"\n\nFlutter на фоне этого ужаса не так уж и плохо смотрится)"
]
Constantine
запустил бы без докера, меньше б мозг выносил ??
Constantine
так-то можно и битрикс сунуть в докер, но зачем?
Constantine ???????
Заменит ли Dart и Flutter: Kotlin и Java
Max
Но на Андроиде/Фуксии - заменит
Max
На бэкэнде - пока кишка тонка.
tdesc
Смотря для кого, мне заменил
tdesc
И swift туда же с objective c
Constantine ???????
Я про мобилки
Constantine ???????
Android
Max
А, ну так выйдет Фуксия - выбора не будет)
Constantine ???????
Не про бэк, на беке есть гораздо лучше языки
tdesc
Языки вообще не лучше и не хуже
tdesc
Лучше и хуже категория для выбора инструмента
Constantine ???????
с недостатками, с ограничениями
Max
Если системные API будут на Дарте - выбор будет несколько... ограничен)
tdesc
С недостатками и ограничениями их использующего. И это аффектит гораздо больше
tdesc
Всегда есть выбор не писать под фуксию, писать подо чтото другое
tdesc
software engineer должен уметь писать подо что угодно на чем угодно. и уметь правильно выбирать инструменты.
Constantine ???????
что почитать, посмотреть годного про Dart, не новичку в программировании кроме доки??
tdesc
flutter gallery в примерах
tdesc
и садится писать что надо свое
tdesc
[
{
"type": "link",
"text": "https://www.youtube.com/watch?v=SiNktJHIMT8"
},
"\n\nвсе смотрим прямую трансляцию Flutter-митапа от Wrike!"
]
tdesc
У меня там боец выступать будет )
Constantine ???????
Я со стрима пришел)
Constantine ???????
??все интересно
Constantine
нарезка потом будет по докладам?)
Constantine
а то стрим по ссылке прикроете
Mikhail
а есть инфа что в фуксии будут дропать поддержку андроид приложений? я до того слышал как раз обратное
Max
Дропать не будут. Сендбоксить - вероятно.
Max
Третьим, про изоляты?
M T
привет! товарищи flutter'исты, подскажите одну весчь) у меня есть User, который содержит в себе данные. Эти данные изменяются на 2+ экранах. Раньше был Redux. Теперь BLoC, но проблема осталась, так как State все равно есть. Вопрос. В каком стейте должен храниться User? В каком-то более глобальном или он должен быть привязан к экрану и каждый раз при заходе на экран получать эти данные откуда-то?)
Max
Хорошо бы, чтобы модель данных приложения не была привязана к экранам)
tdesc
Хорошо бы вернуть редакс и работать с ним через блок
M T
привязывать его не к экрану, а к локальному стейту, окей)
Max
Экран при этом может хранить свои данные, полученные в процессе (ViewModel). Но это уже изыски)
M T
ну там итак unidirectional подход с нотками redux)
tdesc
Тогда хз откуда вопросы с таким крутым почти редаксом )
M T
ну так я 2 варианта предложил, какой стул выбрать?) может best practices есть?
tdesc
Нормально спроектированный стейт в приложении это больше чем пол приложения
M T
ну тогда мне нужна лекция по тому, как правильно работать со стейтами, есть ссылочка?
tdesc
Для меня это build_redux + блоки поверх
tdesc
Сща будет выступающий
tdesc
Он расскажет как у нас сделано ( - я так думаю )
Max
Это довольно таки холиварная тема. Правильный способ у каждого свой (
M T
ну чисто по логике стейт должен соответствовать какому-то скоупу со своим жизненным циклом)
tdesc
Зависит от размера проекта и количества разрабов
Max
Или наоборот. Стейт один, и он урезается для каждого локального контекста)
tdesc
Про блок и редакс будет рассказывать но на примере своего проекта
tdesc
Стейт рутовый, сабстейты под задачи
???????
Андрей, отличный доклад) С flare опыт был, а вот на канвасе ручками рисовать - очень интересно)
Evgeny Cherkasov
Есть ощущение что Гугл специально создал конкуренцию, с одной стороны упорно переводя разработку под Android на Kotlin. А с другой параллельно развивая Flutter со своим другим языком. Что победит пока не понятно на мой взгляд. Гугл легко может прибить как одно так и другое в итоге.
tdesc
Это не для конкуренции
Denis Dubov
Думаю что в самом гугле это конкуренция команд.. это все нецентрализовано
tdesc
Оба языка паралельно развиваются
Evgeny Cherkasov
Я для себя решил пока поизучать Flutter, т.к. он открывает в перспективы возможность писать под все платформы
tdesc
Котлин для джавистов, дарт для вебщиков
tdesc
Гугл всех разрабов хочет
Evgeny Cherkasov
Я точно не знаю, но думаю это сознательно делается
Roman Romadin
А я вот смотрю и диву даюсь. Когда это Докладчики всё это успевают узнавать. Как думаете? Я вот сижу работку работаю и всё (бекендер) и до фич сил уже не хватает, чтоли
Evgeny Cherkasov
Зачем джавистам Котлин? На нем же только под Андроид писать.
tdesc
Очевидно чтобы избавится от джавы
Roman Romadin
Доклад только, что был - Огонь!
Denis Dubov
????очень интересный
Evgeny Cherkasov
Зачем джавистам избавляться от джавы? Это универсальный язык, и для фронтенда и для бакенда.
tdesc
Смысла обсуждать джаву и котлин и кто из них лучше не вижу
Evgeny Cherkasov
Гугл начал продвигать Котлин потому что у него тёрки с оракл которому принадлежит джава
tdesc
Кому и кобыла невеста ???>?
Evgeny Cherkasov
Я не могу это обсуждать, не знаю Котлин пока )
Evgeny Cherkasov
Речь была не о языках как таковых
Roman Romadin
[
{
"type": "link",
"text": "https://github.com/guid-empty/meetup2019"
},
"\n\n",
{
"type": "link",
"text": "https://fiddle.skia.org"
},
"\n\n",
{
"type": "link",
"text": "https://github.com/iamSahdeep/liquid_swipe_flutter"
},
"\n\n",
{
"type": "link",
"text": "https://dartup.ru/"
},
"\n\nПару ссылок себе сохранил"
]
tdesc
Вот и Даня выступает )
HUAWEI ??????
Не просто заменил, а на 2 головы выше заменил
M T
ну и еще куча симпатичного сахара)
Max
Лига Ставок, говорите?)
Max
Я пару лет назад делал фронтенд Первого ЦУПИСа)
|