Программирование : Dart & Flutter по-русски
Vladislav Rudenua
Как сохранять стейт приложения ?
Vladislav Rudenua
у меня провайдер стоит
Vladislav Rudenua
и уже приличное количество функционала на нём если так можно сказать
Tosuj
все привет, можете подсказать из-за чего возникает ошибка? я могу использовать Cubit вместе с BlockListener? или там есть какие-то особенности
Vladislav Rudenua
Я примерно понимаю как такое сделать Сохранять все значение в json в shared preference а потом при запуске приложения его читать но почему-то не работает
Renat Ganiev
[
"Кто то сталкивался с тем что MediaQuery.of(context).",
{
"type": "link",
"text": "padding.top"
},
" возвращает 0 ?"
]
Maksim
Как сделать, чтобы при клике по любой области скрывалась клавиатура?
Yakov K.
Я тут опять с ума схожу со стейт менеджментами – как вам такой API? :)
Дмитрий Щербаков
SafeArea есть?
Yakov K.
Атомарный стейт + точечные ребилды без селекторов :)
Дмитрий Щербаков
Опять каунтер ??
Yakov K.
Ну а на чем тестировать идеи-то :))
Kazbek Beteev
Дай угадаю, ты пришёл из фронта (веб)? :)
Yakov K.
Нет, я пришел с iOS :)
Yakov K.
А на iOS с питона :)
Konstantin Zhernosenko
народ, в дарте же нет преобразования классов? Т.е. абстрактный класс в конкретный только через новую переменную выйдет преобразовать?
Dmitry Demchenko
[
"Да, только через проверку ",
{
"type": "code",
"text": "variable is B"
},
", и то если это не поле класса"
]
Konstantin Zhernosenko
т.е. сначала проверяем, потом новую переменную задаем и только потом пользуемся?
Dmitry Demchenko
лучше сначала выделить в переменную и затем её проверять
Konstantin Zhernosenko
Abstract a; if (a is Concrete) { Concrete c = a; if (c.value == 10) { .... } }
Konstantin Zhernosenko
вот это как-то проще можно сделать?
Dmitry Demchenko
[
"после первого ифа уже будет ",
{
"type": "code",
"text": "Concrete a"
},
""
]
Konstantin Zhernosenko
[
"ну чот не выходит, \n",
{
"type": "pre",
"text": "a.value = 5;",
"language": ""
},
"\nне напишешь"
]
Konstantin Zhernosenko
даже после проверки
Michael Lazebny
неправильно сделал значит
Konstantin Zhernosenko
[
{
"type": "pre",
"text": "if (state.send is Failed) {\n print(state.send.error);\n}",
"language": ""
}
]
Konstantin Zhernosenko
что тут неправильно можно сделать? У Failed есть поле error
Michael Lazebny
что такое state.send?
Dmitry Demchenko
Как раз писал же) "Если это не поле класса"
Dmitry Demchenko
Тут тогда нужна доп переменная именно этого поля
Konstantin Zhernosenko
нде, конфуз, сори
Konstantin Zhernosenko
[
{
"type": "pre",
"text": "(state.send as Failed).error",
"language": ""
},
"\nво, нашел приведение типа нормальное"
]
Vitalii Ishkevych
У меня есть async функция (Например название: Hello()) Я её вызываю в обычной функции (Например: World() { Hello(); ... } После вызова Hello() есть ещё код. Как дождаться выполнение async функции а потом выполнить остальной код?
Владислав
Hello().then((){ ... });
Roman Diachenko
Ребята, кто- то настаивал соеденение с беком с селф сайнед сертификатом?
Vitalii Ishkevych
await к чему? К вызову Hello()?
Vitalii Ishkevych
Я вроде бы иак пробовал и не получалось. Попробую ещё раз сейчас.
Dmitrij Kuznetsov
Так чтобы потом синхронно выполнилась цепочка действий никак , разве что в then засунуть тот кусок кода который должен выполнится после, но если вызывать такую функцию ещё откуда-то и ждать от нее синхронных результатов то не выйдет
Vitalii Ishkevych
Вот у меня функция которая загружает фото в Firebase и я её вызываю во второй функции где уже загруженое фото должно вернуть мне url и я хочу дождаться возвращения url а потом добавить инфу про товар в Firestore
Dmitrij Kuznetsov
Вызывающая функция тоже должна быть асинхронной тогда в нее можно будет вставить await
Vitalii Ishkevych
Она и есть асинхронная
Dmitrij Kuznetsov
И вообще воспринимайте точку await как разрезания процедуры на куски и эти независимые куски будут исполнятся при завершении ожидания
Vitalii Ishkevych
Не получаеться так
Vitalii Ishkevych
Они всёравно вместе исполняються
Dmitriy
Скажите плз, использую bloc и решил для небольших задач примешать Getx в мобилу, нужно ли как то закрывать getcontroller если bloc уже поменял основное состояние ?
Семён undefined
зачем ты используешь сразу два стейт менеджера
d
скорее всего Вы делаете что-то не так
Семён undefined
если тебе блок кажется слишком сложным для данной задачи, то можешь использовать кубит
Dmitriy
Основные состояния сделаны на bloc а уже внутри небольшие на getx controller
Dmitrij Kuznetsov
кстати у меня иногда лезли ошибки когда в одном виджете смешивал getx и provider
Michael Lazebny
подписываюсь под каждым словом, два ст. менеджера это глупость, тим паче таких
Семён undefined
это хорошо или плохо
Пашка
а как же провайдер + блок?)
Michael Lazebny
провайдер это тулза
?????>?
Ни у кого не было проблемы с подключением эмулятора через андроид студио к флаттеру на vs code
prosto paren'
Заметил, что в релизной и дебажной сброке шрифты отличаются. Хотя просто юзаю пакет google_fonts. С чем это может быть связано? Подскажите плиз
Роман Аблаев
Полным полно, я не пользуюсь яблочной продукцией, но здесь довольно таки часто поднимают эту тему
Vitalii Ishkevych
Вот так делаю
Vitalii Ishkevych
_uploadImage мне нужно что-бы полностью закончилась, а потом остальной код
El
Шрифт не скачался может?
prosto paren'
Реально, спасибо
?????>?
а при работе с эмуляторами на андройд и айос сильно код различается?
Владислав
засунь код после аплоада в then()
Vitalii Ishkevych
Пробовал, тоже не работает.
Vitalii Ishkevych
Потом скину как я сделал, уже не за ноутом.
e2 e4
С какой версии у Флаттера появилась возможность ручного подключения к свифту?
Владимир Калашников
Всем привет. У меня есть базовый класс, который обрабатывает ивенты. Каждый ивент относится к какой-то группе. И вот я создаю наследников базового класса, каждый из которых отвечает за определенную группу ивентов. И вот при поступлении нового ивента я хочу передать ивент в базовый класс, который сам найдет своего наследника, который обработает этот ивент. Как это сделать? Как я понял, базовый класс не должен знать о своих наследниках.
Семён undefined
ты про мосты?
d
Почти не будет отличаться, если конечно не различаются дизайны для платформ
?????>?
прсото андройдовский не пашет вообще
d
Это не в коде проблема, скорее всего, а в эмуляторе )
?????>?
он изначально не коннектится к флаттеру
d
Разве что если плагины какие-то супер специфичные
Пашка
которые прям заставят написать 10 строк
Пашка
насчёт юи оставим, там уже в принципе подразделение на разные системы
d
[
"Приходит в голову что-то такое\n\nНо это больше конечно про различия в самих платформах\n\n",
{
"type": "link",
"text": "https://pub.dev/packages/workmanager"
},
""
]
Пашка
тут ничего с этим не сделать
Vitalii Ishkevych
Вот так?
d
а как вы понимаете в данном случае что какой-то код выполняется раньше?
d
потому что await тут подавно должен решать проблему
Vitalii Ishkevych
В функции _uploadImage() в конце _imageUrl = downloadUrl; А потом в _addProduct() я хочу этот _imageUrl использовать и отправить в Firestore; И вот вместо _imageUrl отправляется Null, что значит -uploadImage() не успел выполниться до конца
Vitalii Ishkevych
Не работает Я вот тут подумал, а может это быть из-за того что _uploadImage() не имеет return?
d
так может он всегда null приходит?
Vitalii Ishkevych
Нет, если подождать 5 секунд, и ещё раз нажать на кнопку то вместо null ссылка записываеться
El
putFile тоже await нужно делать
Vitalii Ishkevych
именно за эти 5 секунд фото до конца загрузится и возвращаеться url
Vitalii Ishkevych
Это как? IDE ругаеться
Vitalii Ishkevych
Шо то не получаеться у меня
Konstantin Zhernosenko
а есть какой-то способ во флаттере вручную отобразить поле формы как невалидное?
Пашка
[
{
"type": "link",
"text": "https://flutter.dev/docs/cookbook/forms/validation"
}
]
Konstantin Zhernosenko
как пользоваться валидаторами известно, но если мне при невалидности одного поля, нужно еще и другое также отобразить?
Konstantin Zhernosenko
видимо это как-то через setState стоит делать
Oleg
доброго дня, коллеги. кто-то пытался запускать скачивание файла по http ссылке с помощью url_launcher? хочу чтоб ссылка открывалась в браузере и браузер юзеру предлагал скачать файл (обычное скачивание), но при запуске через url_launcher браузер будто загружает страницу и сразу же закрывает ее без старта скачивания файла или диалога о скачивании. что с этим делать?)
?
Делаю Navigator.push() по разным деревьям, и у меня "переход назад" отлетает в appBar() (работает некорректно). Как правильно делать push() / pushReplacement() , что бы не ломался "переход назад"?
Oleg
автоматическая кнопка возврата по стеку навигатора имеется когда в стеке под текущим роутом есть еще хоть один
e2 e4
Я про возможность в swift view подключить flutter
?
а есть возможность как то перестроить всё дерево? Просто у меня есть страница, и к ней могут весть другие страницы (с разных мест)
Oleg
Ты пытаешься держать все страницы в памяти чтоль?
Oleg
Есть вроде popUntil метод. Позволяет вернуться назад на сколько надо слоев
MiT
Это уже давно появилось
Michael Lazebny
Вы заметили, CircularProgressIndicator обновился
Sergey Riabinin
Ребят, а как поменять имя у файла? Вроде как await file.rename(finalPath). Но что-то не срабатывает.
Yerbolat
Всем привет! Как скопировать файл в корневую папку приложения?
Yerbolat
[
"File.copy(«",
{
"type": "bot_command",
"text": "/uploads"
},
"») ?"
]
Yerbolat
я так попробывал не может файл найти
ManBearPig
[
{
"type": "link",
"text": "https://flutter.dev/docs/cookbook/persistence/reading-writing-files"
}
]
MiT
Вроде в 1.17 уже было, точно не помню когда появилось
ManBearPig
Доьро дня, коллеги, хелл... Как узнать статус push в APNS???
Serik
[
"Всем доброго вечера!)\nДелал проект на ",
{
"type": "link",
"text": "https://pub.dev/packages/esc_pos_bluetooth"
},
"\nтеперь перевожу на nullsafety что мне сделать форкать его , или есть альтернативы ???"
]
ManBearPig
Мигрировать .....)
Serik
весело конечно, но мож есть best practice для printing bluetooth?
Serik
Задам вопрос по другому, тут как в гуле)
Serik
Какие либы вы иcп по Bluetooth?
ManBearPig
[
"Да... \nВот как дальше -тут подробно все \n",
{
"type": "link",
"text": "https://dart.dev/null-safety/migration-guide"
},
"\n2.е Bluetooth не испольщовал для flutter)"
]
Dmitry Demchenko
Постоянно рекламирую Flutter_reactive_ble, но там нельзя более чем к одному устройству одновременно подключиться, в случае принтеров может быть неудобно
Serik
Спасибо, и поклон!)
Serik
серьезная либа, благодарю !
ManBearPig
Может , вы подскажите...
Dmitry Demchenko
[
"Короткий ответ - нет\nЧуть более развёрнутый\n",
{
"type": "link",
"text": "https://developer.apple.com/forums/thread/71315"
},
""
]
Serik
по бизнесу обычно одно устройство, типа принтер, а далее будет другой либой коннектить\
Serik
Всем добра!0 спасиб!)))))
Serik
нам разрабам, лиж бы разглагоствовать !)
Serik
Озарения ко мне пришло, за счет вас спасиб!))) Как обычно!)))))
?
да не знаю вот. Просто навигация туда-сюда. Скорее я всю логику до конца не понимаю, как работает переход между страницами и что такое context(
Oleg
[
{
"type": "link",
"text": "https://habr.com/ru/post/512072/"
}
]
ManBearPig
Как узнать статус push в APNS???
ManBearPig
Сколько смотрел , ни чего кроме как переходить на aws не нашёл...=(
ManBearPig
Спасибо) читал уже....была надежда ....) Теперь придётся или клиенту отказаться от изменений в тз... Ну или ещё доплатить )
47 Миллионов
как открыть Drawer с помощью кнопки
ManBearPig
Он внутри Scafold?
ManBearPig
Или как отдельный класс?
ManBearPig
Scaffold.of(context).openDrawer() если внутри прописан
ManBearPig
Где drawler пишите функцию для открытия его, Да и если Statefull то класс со State нужно сделать "публичным"
ManBearPig
Тогда через global key получаете доступ к классу и методу
ManBearPig
Ну и это все в onPress
ManBearPig
Помните , что в Scafold для key нужно )
Daniil Razbitskiy
Подскажите пожалуйста, можно ли как-то ограничить lisview? что б он вывел только 1 раз то, что идёт в нём.
ManBearPig
Не понятно мне Ваш вопрос , какое выделение вы имеете в виду ? Ink()?
Daniil Razbitskiy
он выводит вертикально, но я использую виджет CarouselSlider, те надо что б выводил в горизонт, это вроде настройки list view?
ManBearPig
Padding...для каждого или если у вас listview builder для контейнера
ManBearPig
Вы разделить их хотите, так?
Daniil Razbitskiy
в горизонте вывести надо, чтоб слайдер нормальный был, как разделить понимаю вроде...
ManBearPig
Так ну а тут , настройки просто поменяйте если listview. Builder asx horizontal
ManBearPig
Ну и его в Expanded, а последний в row
Daniil Razbitskiy
ну это тоже был ранее как варинт, но он сделал так
Daniil Razbitskiy
а, логично, благодарю)
ManBearPig
Посмотрите, пожалуйста, документациб/Codebook
ManBearPig
Не за что, почитайте, пожалуйста) там все так хорошо описано ) если курсы, тут есть много уважаемый всеми нами Евгений , он, записал целый курс
Serge Kozlov
Ребят, обновил flutter, запускаю проект и тут такая ошибка. Подскажите что надо сделать? Спасибо
Пашка
flutter clean удали pubspeck.lock flutter pub cache repair flutter pub get
?????>?
как в vs code отключить функцию, которая переносит текст обратно на одну строку, после того как ты сделал абзац
?????>?
когда переключаешься на другую вкладку он переносит текст обратно
Serge Kozlov
Сейчас попробую
ManBearPig
Так в настройках длинна строки .....
Rizz
Как поставить функцию из кубит в автозапуск ? Чтоб при старте приложения она запускалась
Hamdam ?
У меня тоже раньше появлялась такая фигня. Решение создать новый проект и переместить все коды и файлы
Timur M.
Делаешь Билд кубита при запуске приложения и в инициализации кубита ставишь нужный код
Timur M.
Там все просто )
denis denis
Добрый вечер..а есть мануал у кого-нибудь, как работать с obb
Rizz
Мне нужно передать состояние в кубит, но перед этим получить бул из sharedpreferences. Подскажите как это сделать
Serge Kozlov
Блин, а изящней нет варианта?
Alexandr Drobyshev
а в самом манифесте смотрели, нет этой тсроки с ошибкой?
Alexandr Drobyshev
final val = prefs.get(...); cubit.add(val) ?
Alexandr Drobyshev
[
"тут нет решения вашего?\n",
{
"type": "link",
"text": "https://stackoverflow.com/questions/62969917/how-to-fix-unexpected-element-queries-found-in-manifest-error"
},
""
]
PTLam
[
"ребята, вопрос по блоку\n\nУ меня вижет показывается через ",
{
"type": "code",
"text": "showModalBottomSheet"
},
". В вижете есть TextFormField. Проблема в том, что когда я открываю клавиатуру у меня виджет ребилдиться сам и клавиатура опять пропадает. Подскажите плиз как пофиксить этот баг?"
]
|