Dmitry
а еще лучше checkUpdate
?
точно, спасибо) буду пробовать
Dmitry
snake case только в именах файлов используй
Dmitry
а в коде camel case
Oleg Davydson
а ну и у тебя не void, а тип того, что ты хочешь вернуть
Oleg Davydson
Future
ch...
Oleg Davydson
respose.body на json.decode(response.body)
Oleg Davydson
или jsonDecode(response.body)
Dmitry
здесь у тебя вернется Future, поэтому надо перед вызовом метода написать await
но я так понимаю это у тебя в build, так что точно не получится, ибо build не может быть async
Oleg Davydson
а еще лучше сделать это в стейтфулл виджете при initState
?
точно. А как тогда вообще грамотно это делать?
Oleg Davydson
грамотно по архитектурным патернам
Dmitry
[
{
"type": "link",
"text": "https://www.youtube.com/watch?v=SmTCmDMi4BY"
},
"\n\nрыжий дядька хорошо рассказывает про async/await\n(если инглиш вери велл)"
]
?
а где можно посмотреть пример? Может что то порекомендуете?)
Oleg Davydson
BLoC, Provider
Dmitry
там и дока на русском есть
Oleg Davydson
я на Provider сижу мне по кайфу, большие проекты просто разворачивать
Oleg Davydson
но да, все хотят bloc
Dmitry
я тоже на провайдерах сидел, с блоком чот не получалось
потом когда проект на провайдере превратился в спагетти, я решил что-то поменять в своей жизни и разобрался с блоком
Dmitry
и все
теперь только блок
он супер удобный
Oleg Davydson
а я просто на модули разбил (MultiProvider) и стало здорово
Oleg Davydson
Презентор только не самый ООПшный
Dmitry
а я через get_it делал
синглтоны
d
А в чем спагетти выражаются?
Oleg Davydson
If(){}else{If(){}else{If(){}else{If(){}else{If(){}else{}}}}}
Oleg Davydson
и то, что у тебя много инфы в одном классе хранится
d
Я конкретно про провайдер
Dmitry
тонна кода в одном change notifier выполняющего разные задачи
+ мильярд зависимостей
Dmitry
ну может я дебил просто и можно было сделать лучше
Oleg Davydson
можно создавать несколько ChangeNotifire
Dmitry
но я в то время только познавал флаттер
давно это было
Dmitry
да понятное дело)
у меня он и не один был
Oleg Davydson
можно даже создавать переменную такого класса*
Oleg Davydson
Тоже прикольная штука
Oleg Davydson
BLoC по итогу выходит более громоздким, но тут уже может я дурак
Isfun
Нужна помощь с этой ошибкой, не могу понять чем вызвана и как исправить, предложенные варианты решения в интернете попробовал, пока ничего не помогло, может кто встречался и знает как решить?
Maksus
Что такое спагетти?
Dmitry
да чо вы докопались до этого слова??
Oleg Davydson
это терминология!
Maksus
Ну слово же должно иметь смысл, вот я и хочу понять что это)
Maksus
И что означает этот термин
Oleg Davydson
много кода в одном классе/функции
Dmitry
спагетти длинные, код такой же
Oleg Davydson
пошло от If(){}else{If(){}else{If(){}else{If(){}else{If(){}else{}}}}}, если автокеректнуть можно увидеть форму спагетти
Maksus
О, спасибо, интересная инфа
Maksus
Вот как появился Switch case
Double Cat. ????
Только в дарте от нормально не работает, полностью заменить ифы не получится..в отличии от того же котлина
Maksus
Почему не получится? В чем проблема?
Oleg Davydson
опля, кажется это байт
Dmitry
боб мартин советует вообще не использовать switch case
Oleg Davydson
лично у меня они сожрали немного перформанса
Dmitry
if else if удобнее читается
Maksus
Удобнее читается чем свитч кейс с большим количеством кейсов?!
Oleg Davydson
свитч свитча медлене ифа и в ифе
Dmitry
у тебя на каждом ветвлении есть полноценное условие
а в случае со свитчем, тебе приходится смотреть наверх, потом на кейс, потом наверх потом на кейс
Dmitry
да это одно и то же
просто синтаксический сахар на if else if
?
как то много всего, и мне как то кажется не освоить всё это с лёту. Может есть что то попроще? Я просто с самим флаттером не особо далёк, а если сейчас каждую деталь буду изучать, быстро желание угаснет(
Eugene Alitz
Не согласен, switch намного читаемей
Maksus
Посмотрите на своего мужчину, а теперь на меня, на мужчину, на меня, да, я на Свитч кейсе
Oleg Davydson
разные задачи, разные решения
Дмитрий Щербаков
Всю жизнь юзали свитч когда много условий а тут вон оно чо ??
Dmitry
дружище, лучше сначала просто с флаттером разберись, а потом уже лезь в архитектуру
если конечно сейчас нет боевого проекта
Oleg Davydson
лайфсайкл)))
?
как тогда можно сделать в текущем варианте? Можно как то вынести метод например в отдельный класс, и что бы просто можно было его вызвать и получить ответ от сервера, асинхронно, после которого продолжать выполнять другие проверки в приложении?
?
боевой проект как раз таки нужно реализовать, но я быстро в архитектуру и влезу. Мне как раз таки и нужно понять некоторые детали, без наворотов)
Maksus
Если тут есть уже хороший знатоки Флаттера, расскажите пожалуйста, на какие моменты стоит обращать внимание, какие кейсы нужно знать
Dmitry
ну провайдер (ИМХО) будет проще для начала
Dmitry
ща поищу статейку интересную про провайдер
только она на английском
смогешь?
?
понял. Тогда его для начала читану)Мне нужна какая то простая архитектура, пока не для перспектив.. Нужно просто быстро сделать приложение и понять базово как оно всё работает, что бы потом последовательно перестраивать логику. Просто у меня ещё бэка много, и всё это параллельно не "разлетучить"
Double Cat. ????
Потому что он очень ограничен..нельзя например делать сравнение типов..без использования хаков/костылей с функциями...что тоже влияет на перформанс
Dmitry
[
{
"type": "link",
"text": "https://www.filledstacks.com/post/flutter-architecture-my-provider-implementation-guide/"
}
]
d
А в чем проблема сделать switch (something.runtimeType)?
?
имеешь в виду делать как stateful виджет, сделать переменную что то вроде is_checked_update, и как только меняется у неё состояние, что бы приложение дальше прогружалось?
Dmitry
а в какой момент ты ее будешь проверять?
тебе надо как-то уведомить о том, что она изменилась
Eugene Alitz
По моему если нет проблем с перформансом, не стоит делать пред-оптимизацию.
С такими вещами имеет смысл заморачиваться только, когда это становится узким местом
Double Cat. ????
Мне кажется проще сразу об этом думать, а не потом искать почему и что повлекло ухудшение
Есть ещё минус что через свитч нельзя сразу присваивать значения переменных (без костылей с функциями)
Dmitry
а еще break писать надо, если return не делаешь
Eugene Alitz
а мне кажется, что в больших проектах важен баланс между читаемостью кода и оптимизацией.
Double Cat. ????
:D
Мелочь, но да
Dmitry
для меня читаемость превыше всего
оптимизация уже потом
ну в пределах разумного, конечно
Double Cat. ????
Ну вот для меня оч не хватает сразу присвоения через свитч..чтобы было возможно сделать это в "oneline"
Eugene Alitz
Мы так или иначе используем абстракции для удоваримости, а абстракции ведут к понижению производительности
Но мы же не пишем сразу на машинном коде - для максимальной производительности
Eugene Alitz
такая запись не отличается удобочитаемостью
Eugene Alitz
Это как с иммутабельностью - это ведет к потере производительности, но при этом, является рекомендуемым подходом
Амандос
ребята почему когда поворачиваю экран - не меняется скроллинг , а когда просто меняешь значение в условии, меняется. а мне нужно именно когда поворачиваешь экарн
Dmitry
иммутабельность ведет к потере производительности?? почему это?
Double Cat. ????
Как раз таки намного удобнеe, в одной строке записать, чем перед этим объявить переменную, а потом ее установить где-то позже
Eugene Alitz
Потому что системе для каждого изменения в обьекте нужно создавать новый обьект
Dmitry
зато нет проблем с ссылками)
Roman Kulshin
[
"Добрый день, была ли у кого то подобная история?\n\n Unhandled Exception: MissingPluginException(No implementation found for method getApplicationDocumentsDirectory on channel ",
{
"type": "link",
"text": "plugins.flutter.io/path_provider"
},
")"
]
Eugene Alitz
Вот такие компромиссы я и имею в виду
?
Ну в момент запуска приложения. Там несколько проверок будет
Миша
самое сложное с «перемещать», с помощью чего это можно сделать?
Миша
Понял, спасибо, посмотрю сейчас
Ponao Eqv
А вообще в дебаге лагает из за того что активны всякие инструменты отладки, отслеживания ошибок и тд?
Семён undefined
почему вообще анимации могут лагать в релизе? главное в web skia на компе всё летает, а на телефоне в релизе лагает (только если я не буду долго пользоваться аппсом)
даже с flutter gallery такая херня
мб мой redmi note 5 просто не вывозит флаттер?
Isfun
Кто-нибудь? Уже второй день мучаюсь, ничего не помогает
Andrey Raih
[
{
"type": "link",
"text": "https://g.zeos.in/?q=Flutter%2FFlutter.h%20error%20ios%20xcode"
}
]
Isfun
Пробовал до 6 решений с разных статьей Github и StackOverflow
Паша
Товарищ, пройди курсы, ты задаёшь слишком глупые вопросы..
Тебе всё равно придётся их пройти.
Более эффективного способа изучить основы не существует.
Isfun
Если бы было действенно, сюда бы и не обращался)
Isfun
Ничего из этого не помогло
Maksus
Документация хорошая у Флаттера, но учусь все равно по английскому курсу ахаха
Ivan
удалил хкод, обновил до бигсур, поставил хкод - помогло
Ivan
но немного другая была
Isfun
Можно пожалуйста подробнее, что такое бигсур?
Паша
Курс это выжимка необходимого минимума из всей документации, с примерами.
А дока уже в процессе практики в закрепленной вкладке висит ??
Michael Bazilique
можно как-то дефолт BottomNavigationBar сделать статическим? без активной вкладки
Maksus
Ну Максимилиан хорошо рассказывает, лучший
Ivan
да Big Sur - последняя версия macOS
Isfun
Скопировал в другую папку
Isfun
Удалил в проекте, набрал команду flutter create .
Isfun
Вернул Runner в новую ios папку из старой и через Xcode Google services для firebase переместил в Runner
Isfun
[
{
"type": "mention",
"text": "@thegunseller"
}
]
Ivan
не помню деталей к сожалению
Isfun
Ну хоть что-то новое, спасибо, попробую, мало ли сработает
Isfun
Переходов между версиями не было с тех пор как я получил проект
Isfun
Пробовал менять каналы уже потом, как прочёл одну статью на гитхаб, что после двух трех переходов с ветки на ветку заработало, попробовал на master перейти и запустить, результат тот же, вернулся обратно на stabel, вроде при каждом переходе flutter upgrade должен восстанавливать, если вдруг потерялась привязка
prz
[
"bool _isButtonDisabled;\n\n ",
{
"type": "mention",
"text": "@override"
},
"\n initState() {\n super.initState();\n _isButtonDisabled = false;\n......\n\n\n Function _counterButtonPress() {\n if (_isButtonDisabled) {\n return null;\n } else {\n return () {\n _handleAccept();\n setState(() {\n _answered = (\"Соединение...\");\n });\n };\n }\n }\n\n\nbasicActions.add(ActionButton(\n title: \"Ответить\",\n icon: ",
{
"type": "link",
"text": "Icons.phone"
},
",\n fillColor: ",
{
"type": "link",
"text": "Colors.green"
},
",\n onPressed: _isButtonDisabled ? null : _counterButtonPress()));\n\n\n\nПытаюсь сделать так,что бы после нажатия на кнопку - кнопка стала не активна,но если быстро дрюкать кнопку,то судя по всему такая защита выглядит как калитка в поле. Какие есть еще варианты? ))"
]
prz
на ios инициализация видеоконтроллера может внезапно инициализировать енсколько раз его и будет висеть 2 5 10 потоко видео.
при диспозе контроллера - убивается только последний.
что в этом случае можно сделать?
prz
[
"ну вот у меня подобная проблема сейчас.\n\nпри запуске скрина сразу инициализируется контроллер в:\n\n ",
{
"type": "mention",
"text": "@override"
},
"\n initState() {\n super.initState();\n _answered = (\"Входящий звонок\");\n _isButtonDisabled = false;\n played = true;\n getSipCam(uu).then((presipcam) async {\n setState(() {\n _cam_data = jsonDecode(presipcam)[0];\n _cam_url = _cam_data['cam_url'];\n _videoPlayerController1 = ",
{
"type": "link",
"text": "VideoPlayerController.network"
},
"(_cam_url);\n });\n });"
]
prz
но если 20 раз нажать быстро клавишу ответа - ios инициализирует ынцать раз видео и создать ынцать потоков )
prz
на андроид такой проблемы нет.
он каждый раз убивает предыдущий сам и создает новый,а при изменении состояния приложения и вовсе просто перестает трафик жрать,но сессия tcp остается
Vitalii Ishkevych
Можно как-то поменять дату и продлить строк теста?
Kirill Bubochkin
задать нужные правила вручную
Vitalii Ishkevych
Я меняю это число, а база не продливается
Kirill Bubochkin
что значит “не продлевается”?
Vitalii Ishkevych
Вот такое мне гугл шлёт, я нажал Edit Rule меня перебросило в окно которое на пред скрине. И я поменял число это а гугл дальше шлёт эти письма
Kirill Bubochkin
[
"попробуйте поменять просто на ",
{
"type": "code",
"text": "”.read”: true, “.write”: true"
},
""
]
Isfun
Попробовал, не сработало
Isfun
Те же ошибки, но в Xcode показывает три проблемных пакета
Vitalii Ishkevych
Окей а здесь?
Kirill Bubochkin
[
"емнип, как-то так: ",
{
"type": "code",
"text": "allow read, write: if true"
},
""
]
Kirill Aparin
Тут в вилке нули потерялись??? ??
Kirill Aparin
[
"Routeam - компания, которая занимается разработкой мобильных приложений и сложных web-сервисов. В срочном порядке ищем Flutter-разработчика на проект.\n \n",
{
"type": "bold",
"text": "Обязанности:\n"
},
"— Разработка нового раздела в мобильном приложении;\n— Выполнение доработок в приложении;\n\n",
{
"type": "bold",
"text": "Требования:\n"
},
"— Опыт разработки мобильных приложений на Flutter\n— Умение оценивать сроки выполнения задачи\n— Понимание принципов разработки для iOs и Андроид\n\n",
{
"type": "bold",
"text": "Условия:\n"
},
"— Удалённая работа\n— Если вы находитесь в городе Ставрополь, то работа в комфортном офисе\n— Гибкий рабочий график\n— Зп вилка: 23.000 - 45.000, но все зависит от проекта\n— Заработная плата обговаривается по итогу собеседования\n\n",
{
"type": "bold",
"text": "Контакты:\n"
},
"Для связи с представителем нашей компании и уточнения деталей, пожалуйста, напишите в телеграмм: ",
{
"type": "mention",
"text": "@O_o_Love_is"
},
" или на почту ",
{
"type": "email",
"text": "manager@routeam.ru"
},
"\n\nЕсли вы имеете опыт и знания Flutter, мы будем рады сотрудничать!"
]
Kirill Bubochkin
главное, потом не забыть нормально сделать ??
Andreu
Всем добрый, было у кого в vs code отвалился analyzer. Не позволяет перейти к реализации класса, импорты не показывает, suggstions тоже отвалились
Jessi
Ребята есть проблемка, пробовал использовать Audio recorder и speech to text но есть проблема в том что не возможно запустить и запись и распознавание голоса одновременно, а google cloud speech recognition использовать не вариант потому что слишком дорого, если ли какие-нибудь готовые решения или можно как-нибудь это обойти?
Moon
подскажите что это за М в конце названия файла