Программирование : Dart & Flutter по-русски
Семён undefined
идеально, можно так сказать
Оганнес Асатрян
Иной раз андроид студия жрет 9
Artyom Nesterenko
Или кто-то нашел баг в компиляторе/рантайме Dart. Было бы прикольно. ??
Семён undefined
мне кажется так и есть, иначе я не могу эту ерунду обьяснить
Anton ?? ? ??
неоптимизированность
Anton ?? ? ??
причем тут что у тебя завис комп и баг в компиляторе/рантайме Dart?
KDVMan
я тут с 8 гигами плакал когда студия открыта и эмулятор (щас поставил 16), а тут с 6 гигами умудряются работать :) ужас
Artyom Nesterenko
Быстрый SSD делает свое дело. MacBook с 8 ГБ отлично справляется. ??
Artyom Nesterenko
А как объяснить, что процесс dart.exe ест 6 ГБ оперативы, когда не должен? Это выглядит как memory leak.
KDVMan
у меня тоже ssd стоит, на windows 10 и вот на нем 8 гигов было очень мало, хром очень много жрет, сама андроид студия тоже, ну и эмулятор в довесок :) про "дополнительно открыть" webstorm я вообще молчу :)
Artyom Nesterenko
А, ну если Chrome еще. ??
Artyom Nesterenko
Хотя Мак справлялся у меня, вроде вкладок 10 было открыто.
KDVMan
угу это еще тот пожиратель памяти - лангольер блин )))
Artyom Nesterenko
Лучше, конечно, на устройстве в таких случаях тестить.
KDVMan
16 гигов решают проблему :)
Оганнес Асатрян
Вот и я об этом. Железо нормальное нужно. А мне отвечают - все было ок. Было да прошло
KDVMan
не, ну если прям вот было все ок и после внесения каких-то исправлений все стало тормозить, то явно надо смотреть на измнения, но может конечно момент случайного совпадения еще быть... у меня так одна планка памяти отвалилась (дуальная память 8 + 8) вечером выключил комп все ок, утром уже у меня было 8 гигов :)))
KeepOnSmiling ??
Я даже на линуксе с 8гб не могу ужиться, а вы про мак :) мак же ваще транжирить оперативку как не в себя. Хотя винда ещё хлеще, конечно
KeepOnSmiling ??
От ОС ещё зависит кол-во оперативки.
KeepOnSmiling ??
Где-то 8гб это много, где-то - мало
admin
хакинтош 8гб штук 30 вкладок chrome и vscode, вообще никаких проблем
KDVMan
не, ОСь нормал жрет (всмысле не так много), хром если давно не рестартил его (например весь день) вот эта падла жрет )
KDVMan
особенно если серфишь активно
Artyom Nesterenko
Не знаю, где он там транжирит. Вроде оптимально использует и освобождает, когда нужно. Понятное дело, что на Linux можно сделать так, что в простое <200 МБ занято, но нужно ли.
Anton ?? ? ??
Нет. Система занимает весь RAM, и это отлично
Anton ?? ? ??
linuxatemyram.
KeepOnSmiling ??
Хакинтош - это жесть :) Сидел на этой хреновине года 2-3, изчертыхался весь :)
KeepOnSmiling ??
Собирал железо ессно для хака
KeepOnSmiling ??
Покуда на маках уже лет 10 сижу, последнее время линукс нажал подъюзывать
admin
наверное самое стабильное из всего что у меня было) две недели кексты подбирал правда)
KDVMan
короче вывод: памяти много не быват :) а если после внесения изменений начинает проц и память жраться на 100% ищи причину в коде :) точнее откатывайся и проверяй :)
KeepOnSmiling ??
Ну если сравнить с виндой - наверное, да. Макос - неплохая штука в целом. Покуда линукс очень узкоспециализированный
KeepOnSmiling ??
Если с музыкой работать - тут макос без вариантов
KeepOnSmiling ??
И с фотогопом тоже)
Artyom Nesterenko
Норм оговорочка. ??
KeepOnSmiling ??
Не всегда мощь гимпа помогает??
KeepOnSmiling ??
Хахах :))
KeepOnSmiling ??
Ещё железо у эппла - боль :)
KeepOnSmiling ??
батареи вздуваются через пол года, кнопки отваливаются, стираются и т.д.
Artyom Nesterenko
Какие-то мифы древней Греции.
Мумитроль
Если вы под веб писали, там иногда дарт процессы плодятся по какой-то причине.
KeepOnSmiling ??
Это при бережном использовании, но нагрузки выше, чем у калькулятора
Семён undefined
охрененно, вы из серьезного вопроса, от которого зависит жизнь проекта, создали тред про мощность компов
Семён undefined
я пишу под андроид
KeepOnSmiling ??
Так от мощности компа зависит жизнь проекта :)
Семён undefined
у меня всегда было всё замечательно
Семён undefined
причем тут мощность — не понимаю
Artyom Nesterenko
Ну перезагрузите комп.
KeepOnSmiling ??
Мб ребутнуться надо, чтобы высвободилась ОЗУ?
Семён undefined
у меня есть штука, которая чистит озу
Семён undefined
и я перезапускал компьютер
Семён undefined
несколько раз
Мумитроль
Не замечали, что память забивается именно после холодных сборок?
Семён undefined
вообще никогда она не забивалась
Семён undefined
вот только сейчас
Семён undefined
какая то прям утечка памяти
Семён undefined
я попробую переустановить дарт
KeepOnSmiling ??
можно попробовать повыключать всё, проверить что свободно много рэма и сбилдить
Мумитроль
Лучше попробовать писать не под виндой
Мумитроль
Ну типа без сарказма)
Семён undefined
мака нет, а линуксом не пользуюсь, ибо так же являюсь дизайнером, и мне нужны продукты адоба без всяких костылей
KeepOnSmiling ??
для дизайнеров даже костыли в линуксе не помогут :)
Anton Zheltov
Кстати заметил вчера-сегодня, при отладке несколько раз делаю быструю перезагрузку и проект крашится, ошибки не заскринил, но они на проект не ссылались. Делаю стоп, старт - работает ещё на несколько перезагрузок. Мак 2012, i7, 16 ram, ssd. Что-то и правда поменялось.
KeepOnSmiling ??
А когда вы обновлялись? Или оно автоматом?
Anton Zheltov
Каждое утро
Anton Zheltov
Сижу на бета ветке
Anton Zheltov
Пишу на флаттере почти год, начинал ещё на 0,4
Мумитроль
Ну типа две ОС ставиться нормально)
Мумитроль
Ну есть же Фигма
KDVMan
на бетке так часто обновления идут?
Slava Marchenko
У меня на Винде на планшете в дебаге крашится постоянно , а на телефоне работает. Кидает sigterm без описания
Anton Zheltov
Сейчас редко
Anton Zheltov
Да кстати, стал отлаживать на устройстве, вроде не крашился проект.
Anton Zheltov
До 1,0 почти каждый день были :)
KDVMan
:) ну они торопились :)
FatShibe
А хот релоад может происходить в конечном приложении?
FatShibe
Понял, спасибо )
Kanybek Mo
[
"Всем привет! Товарищи подскажите плз, почему flutter webApp так медленно работает?\nВот мой простой вариант: ",
{
"type": "link",
"text": "https://kanybekmomukeyev.github.io/#/"
},
""
]
Kanybek Mo
[
"А например тут, от других разрабов, все ок: ",
{
"type": "link",
"text": "https://flutter.github.io/samples/gallery/"
},
""
]
Олжас Сулеймен
может просто анимация прокрутки хромает а так все быстро
Kanybek Mo
[
"Здесь: ",
{
"type": "link",
"text": "https://flutter.github.io/samples/gallery/"
},
" -- как раз таки все быстро работает.\nМедленно работает, тот который сам собрал: ",
{
"type": "text_link",
"text": "https://kanybekmomukeyev.github.io/#",
"href": "https://kanybekmomukeyev.github.io/#/"
},
""
]
Олжас Сулеймен
я про него. не туда ответил
Kanybek Mo
Незнаю что на телефоне, что на компе, все очень тормозит. На dev ветке сижу
Kanybek Mo
До этого, месяц назад полет был отличным, может что-то тестят/внедряют
admin
Только что протестил с телефона
admin
Как твоё, так и в галерее
Yerassyl
Кто нибудь делал интеграцию flutter с 2gis
KeepOnSmiling ??
Кто знает, как работает такая штука? Она разово накладывает градиент на изображение и выводит результат или 60 раз в секунду проделывает эту операцию? (шейдер всё-таки :) )
KeepOnSmiling ??
Но с точки зрения оптимизации было бы логичнее кэшировать операцию в видео-памяти (первый вариант)
Yuriy
не знаю но думаю что работает так же как и все остальное: отрисовывает только во время билд метода, потом юзает отрисованые элементы. Причина: нет смысла только из за шейдера переделывать логику поведения всей платформы
Vadim Lukichev
На уровне фреймворка и dart, все штуки работают «разово», если только не используешь repaint или анимацию.
KeepOnSmiling ??
Спасибо, понял!
Farid
Доброе утро. Вопрос тем кто публиковал приложение в маркете. Сколько примерно занимал процесс у вас? У меня уже полсутки висит в ожидании, публиковал appbundle
XbIK
я только на бетах, и там полдня вполне нормально
XbIK
а иос на тестфлайте могут и несколько дней
Anton ?? ? ??
Полсутки это же очень мало, на айоси и несколько недель
Farid
просто я думал из-за какого-то пункта из списка: 1. 0+ возрастное ограничение 2. проект сделан на флаттере 3. For Family 4. лицензии на контент так как бывали случаи когда нативныы релизились за час-другой
KDVMan
пункт 2 вообще можешь выкинуть, он точно не при чем )
Farid
жду тогда релиза, ну или мейл с отказом)
DVS (Read The F.ng Manual) Studio (NoHello)
в гугл.маркет в последний раз за 5 минут влетел первый релиз
Sergey ?
вроде как контент For Family строже модерируется
DVS (Read The F.ng Manual) Studio (NoHello)
Ааа.. точно. недавно же появился доп обязательный пункт App Content с возрастными ограницениями
Илья Мурашко
Ребята, вчера помогли очень с bottomNavigationBar, а сегодня подскажите, можно ли как-нибудь изменять не всё дерево виджетов через Navigator.push/pushNamed, а только его часть, чтобы всё остальное оставалось неизменным?
Pavel Kozlovskiy
Посмотрел в истории все обсуждения, runtimeType, но так и не понял( Если я кладу куда-то runtimeType какого-то объекта, то как потом проверить что этот Type это определенный класс?
Pavel Kozlovskiy
Делать же type.toString() is 'SomeClassName' ну совсем некрасиво...
Scroollocker ST
if (variable is SomeClass) { }
Pavel Kozlovskiy
ДУмаете если бы это было так, я спрашивал)))
Pavel Kozlovskiy
[
"Вот ответ, \n",
{
"type": "link",
"text": "https://stackoverflow.com/a/12881477/3660035"
},
""
]
Pavel Kozlovskiy
if(myObject.runtimeType == MyClass){} вот так работает
Анатолий
а is не катит в твоей задаче?
Анатолий
тоесть просто проверить принадлежность к классу не получается?
Scroollocker ST
Поидее is как раз для этого и сделан
Анатолий
я тоже так думаю
Олжас Сулеймен
void main() { int a = 1; Type t = a.runtimeType; print(t == int); }
Олжас Сулеймен
ну или зеркала
Anton ?? ? ??
print(t == int);
Anton ?? ? ??
это же фича которая городит ужасный код)
Олжас Сулеймен
а как еще, is не работает с переменнои с типом а только литералом типа; objectNotType is TypeLiteral
Denis
Привет. При аутентифификации на фаербейз через СМС перестали приходить эти же смс - ктот сталкивался?
northelks
вчера у них был какой-то дауншит с фаербейзом
northelks
но может это совсем не связано с смс..
Denis
я только с фаербейзом работал, то сравнить не могу, хотя там и все просто(ну кроме того что пару дней назад приходили на дрон смс а сейчас нет)
Denis
По поводу проблемы нашел вот такое
Denis
PhoneVerificationComplete takes an AuthCredential as an argument and will be only executed in Android. It happens when the code is automatically retrieved from the SMS, without any user input. Below on the code, we're just passing _linkWithPhoneNumber to this parameter on verifyPhoneNumber.
Ilya Protasov
Всем привет, я новичёк в flutter, не подскажите, где можно почитать про архитектуру построения приложений на нем, то есть про bloc и проч
Pavel Kozlovskiy
Принадлежность к классу можно проверить у объекта, а мне наоборот надо установить соответствия типа определенному классу, чтобы правильно десерелизовать json в объект.
Анатолий
а тип берете у обьекта? получается что надо установить соответствия обьекта определенному классу?
KDVMan
народ, кто юзал стейт менеджменты bloc и provider что вы для себя выбрали и почему? я щас юзаю bloc все нравится, если не начинать тестировать ) с тестами там жопа т.к. я юзаю один класс State и в нем меняю состояния через переменные (т.к. у меня есть стетй глобальной ошибки и ее нельзя менять стейт классами) вот смотрю в сторону provider , на сколько он подходит для серьезных больших приложений, где есть глобальные состояния?
Aleksey
юзаю библиотеку flutter_bloc, все нормально, и тесты тоже. У каждого экрана свой bloc, переходы между экранами через стандартный навигатор
KDVMan
да это понятно, тесты тоже все ок, если нет глобального состояния
KDVMan
щас пример приведу
Aleksey
ну для каждого значения глобального состояния свой набор тестов)
KDVMan
ок щас тогда по тестам спрошу, может я просто не умею чего-то ) сек
KDVMan
у тебя состояние в виде классов? тиа StateInit, StateAuth, StateError, StateLoading ?
KDVMan
или в виде одного класса AppState и там уже переменные isLoading = true isLoaded = false hasError = false и т.д. ?
KDVMan
просто почему спрашиваю если юзаются классы для каждого состояния, то вопрос, как отловить выброс ошибки из ЛЮБОГО места приложения (у меня такие ошибки выкидывает интерсептор от dio) например нет интернета (оборвался интернет) и приложение может быть где угодно (авторизация, дашбоард, профиль, где угодно) и вот как отловить такое состояние не меняя стейта (ведь мы не должны никуда переходить, мы должны всего лишь выкинуть alert что произошла ошибка и остаться там же где и были)? как раз это решает вариант с одним классом состояния и изменение состояний внутри него через переменную например view типа AppState.update(view: AppView.HOME), AppState.update(view: AppView.AUTH) и т.д. но тут проблема с тестом тест банально не видит этого изменения, хз почему :)
Aleksey
состояния в виде классов
KDVMan
ну тут с тестами проблем нет), но вопрос с отловом глобальной ошибки из любого места остается открытым
Aleksey
у каждого экрана есть состояние ошибки, в тестах я проверяю переход в это состояние
Aleksey
и наборы тестов для каждого экрана разные
KDVMan
вот кусок кода сейчас: home: BlocListener( bloc: this._appBloc, listener: (context, AppState state) { if (state.hasError) { showDialog( context: context, builder: (BuildContext context) { return ErrorDialogWidget(message: state.errorMessage); }); } }, child: BlocBuilder ( bloc: this._appBloc, builder: (BuildContext context, AppState state) { if (state.view == AppView.INIT) return new AppInitScreen(); if (state.view == AppView.AUTH) return new AuthScreen(sessionService: this._sessionService); if (state.view == AppView.HOME) return new DashboardScreen(); }, ), ),
KDVMan
что значит у каждого экрана своя ошибка? есть понятие глобальной ошибки, она всего одна, но на все приложение, алерт например о том, что отвалился интернет
KDVMan
а ты получается на каждом экране копипаст делаешь отлова ошибки и обработки?
KDVMan
может несовсем понятно объяснил, тогда вот такой вопрос задам, что у тебя происходит в приложухе если возникает ошибка (отвалился интернет) ? выкидывает класс состояния и приложение что делает? показывает страницу ошибки или алерт и никуда не переходит (остается в том же состоянии, как и был до ошибки?)
Aleksey
показывается сообщение, и есть возможность вернуться назад
KDVMan
т.е. меняется все таки текущая страница? например я на авторизации и произошла ошибка, меня перекинуло на страницу ошибки (где например просто текст "произошла ошибка бла бла") и вверху (или где-то еще) кнопка (ссылка) вернуться назад?
Aleksey
при рендеринге страницы в зависимости от текущего состояния показываются разные контролы
KDVMan
да это понятно, я спросил про другое "т.е. меняется все таки текущая страница?" ?
Kanybek Mo
[
"Как в StreamBuilder-е можно установить фильтр?\n",
{
"type": "pre",
"text": "StreamBuilder(\n stream: bloc.outUpdateHeader,\n initialData: UpdateHeaderItem(),\n builder:\n (BuildContext context, AsyncSnapshot snapshot)",
"language": ""
},
""
]
Aleksey
страница остается та же, выбрасавается стейт страницы с ошибкой
Aleksey
в блоке вот так делаю } catch (error) { yield ProductFailure(error: error.toString()); }
KDVMan
гы :) как та же, если выбрасывается стейт и у тебя по сути выдается новый виджет со страницей ошибки
Олжас Сулеймен
stream.where
KDVMan
у тебя же в приложухе что-то типа: if (state as AuthPageState) return AuthScreen(); if (state as ErrorState) return ErrorScreen(); так?
Kanybek Mo
[
"??\n",
{
"type": "pre",
"text": "final StreamSubscription subscription = ctrl.stream\n .where((value) => (value % 2 == 0))\n .listen((value) => print('$value'));",
"language": ""
},
""
]
Aleksey
внутри каждого экрана так, ага
Aleksey
ну может я не правильно делаю, многовато текста получается, зато пока не возникало ситуаций, которые бы не укладывались в такую архитектуру
KDVMan
да не, все правильно, просто мне нужно выводить именно alert а для него нельзя менять состояние, т.е. мы должны оставаться там же где и находимся, просто поверху выводить алерт. Как раз в моем случае низя менять класс состояния при ошибке, что бы никуда не переходить
Sergey ?
то что надо использовать для шаринга кода
KDVMan
[
"вот: ",
{
"type": "link",
"text": "https://gist.github.com/kordenv/fe7c8bfb3c7224e6e15deb672a897c31"
},
""
]
Sergey ?
[
{
"type": "code",
"text": "gistfile1.txt -> gistfile1.dart"
}
]
Sergey ?
чтобы была подсветка синтаксиса
Aleksey
так и не переходи никуда, под переходом я подразумеваю переход на другой роут(экран) у MaterialApp. А когда у тебя меняется состояние на текущей странице, то просто показываешь нужные виджеты
KDVMan
ща я на 5 минут отойду, не уходи плиз :)
Олжас Сулеймен
А не проще сделать enum isLoading, isLoaded, hasError?
Олжас Сулеймен
Они же взаимоисключающие
Aleksey
[
"вот тут я тестовое задание делал в однну контору, тут проиллюстрирован подход, который я использую, правда там всего один экран\n",
{
"type": "link",
"text": "https://github.com/pretorean/tada_team_client"
},
""
]
Андрей Хливнюк
тоже хотел делать тестовое к ним, но забил)
Aleksey
ага, а я забил делать тестовое на vue.js
KDVMan
так в том то и дело что bloc подразумевает return виджета при разном стейте, и при стейте ошибки я не могу вернуть виджет алерт окна, иначе будет пустой экран на котором будет алерт окно, а мне надо что бы остался тот же экран что и был и на нем был алерт точнее не тоже окно, а тот же виджет (экраны не меняются)
KDVMan
угу как вариант, но сейчас не об этом :)
KDVMan
но за идею спасибо, полезно :)
Aleksey
а разве нельзя показать виджет и алерт одновременно?
KDVMan
а какой виджет показать? это же глобальная ошибка, я могу быть где угодно
KDVMan
а состояние будет уже типа AppErrorState и хз где я был на AuthState или DashBoardState или еще где-то
Aleksey
у меня алерты торчат из виджета Dismissible, посмотри в исходнике как они его показывают из события confirmDismiss
Aleksey
и алертам пофигу на текущие состояния
KDVMan
алертам пофигу, bloc не пофигу: if (state is AppStateInit) return AppInitScreen(); if (state is AppStateAuth) return AuthScreen(sessionService: this._sessionService); if (state is AppError) return ??????? что возвращать
Aleksey
посмотри как реализован показ алерта в классе Dismissible
KDVMan
ты имеешь ввиду в оф.исходниках?
Aleksey
ну да, а что? там просто кладезь интересного
KDVMan
ща гляну :) спасибо
KDVMan
возвращаясь к вопросу bloc или provider кто-нить юзал и то и то ?
KDVMan
щас вот смотрю provider вроде проще чем bloc и меньше файлов и писанины, но вот хз подойдет ли он для больших приложух (пока не вижу преград)
|