Программирование : Dart & Flutter по-русски
Newbie Developer
Да, понятное дело. Мне нужно прокинуить апи в репу, репу в юзкейсы, юзкейсы получается в блок. Кстати, а не посоветуете на счёт навигации что-то? У вас в ставках самописное что-то или стандартными средствами пользуетесь?
tdesc
сейчас обычная навигация 1.0
tdesc
для веба и диплинков отлично
Newbie Developer
Первую не пробовал, сейчас вот читаю разницу, но как-то стрёмно прям из виджетов переключение делать. Думаю может аналог чичерони какой нить есть
?? ??????????????????????????
Я просто хочу стерильную атмосферу, а с di я не уверен что после изменений вне теста все будет идентично
tdesc
из виджетов ничего не нада делать
tdesc
виджет слой презентейшн его лучше сразу в mvi
tdesc
в навигаторе 2.0 меняется урл и дальше его парсят все заинтересованные
tdesc
и кто то рендерит себя
Эмиль
Помогите со сплеш скрином, пжлст, не могу его настроить. Что я не так делаю? Ни на что не ругается, но при этом ни цвет не меняется, ни картина не подгружается. Кроме lb.xml нигде больше ничего изменять же не нужно?
Newbie Developer
Ох, т.е. архитектура блочная, а презентейшн на mvi state переделывать? Но все таки не понятно какая сущность делает переключения в итоге
tdesc
вью только кидает экшны
tdesc
блок все делает с сервисами и готовит состояние для вьюхи
Ivan Nazarov
было слишком тупое решение....
Andrey
Подкиньте библиотеку для разной стилизации одного текста
Валерий
а простой RichText не подходит?
Andrey
Он то мне и нужен, спасибо, не мог вспомнить как называется
Никита Васин
[
{
"type": "link",
"text": "https://pub.dev/packages/styled_text"
}
]
Jamshed Rakhmonov
[
"Здравствуйте,у меня возникает проблема при чтении с cache \n",
{
"type": "pre",
"text": "NoSuchMethodError (NoSuchMethodError: Class 'List ' has no instance getter 'body'.\nReceiver: Instance(length:151) of '_GrowableList'\nTried calling: body)\n",
"language": ""
},
" .Если я меня ",
{
"type": "pre",
"text": " return postsFromJson(res.body) ",
"language": ""
},
" на ",
{
"type": "pre",
"text": " return print(res.body) ",
"language": ""
},
" отображается в консоли все посты."
]
Никита Васин
Можно целую портянку текста застилизовать
Александр Кузнецов
Ребята, пожалуйста подскажите, как решить проблему поддержки нулевой безопасности в package Firebase?
Сергей
Там же ссылка есть, по ней написано решение
Mikhail Smetannikov
[
"либо preview ",
{
"type": "link",
"text": "https://firebase.flutter.dev/docs/null-safety/"
},
""
]
Александр Кузнецов
По ссылке описано как подключить нулевую безопасность, она у включена, но библиотеки firebase их не поддерживают
Александр Кузнецов
Спасибо, сейчас попробую
Пашка
все же поддерживает
Александр Кузнецов
Нет, в документации 1.0.1 написано что в бета работает, у меня стояла ранняя версия библиотеки, потому были проблемы, обновил до 1.0.1 все запустилось
Пашка
мб мы с вами о разном
Пашка
но у fb есть уже поддержка null
Dmitry
через devtools как-то можно посмотреть что жрет батарею? запустил приложение на айфоне и охренел за 40 минут экрана -22%
Mikhail Smetannikov
[
{
"type": "link",
"text": "https://flutter.dev/docs/development/tools/devtools/cpu-profiler"
},
" либо, через xcode можно предположить, что модет быть"
]
Dmitry
спасибо большое, гляну
Andrey
Как можно BottomSheet сверху сделать
Kirill Aparin
Переверни телефон
Fedor
Парни, подключил самсунг через кабель и к компу с андройд студио, запустил дебагинг, все норм, но в телефоне почему то лагает дико, с чем связано не знаете ?
Nurassyl Nuridin
Как удалять слово в List, если она повторяется? Чтобы два одинаковых слова не встречались
Валерий
.toSet().toList() по идее должно сработать
M_SM
привет есть знаюший flutter_bloc ?
ManBearPig
Если режим отладки в размере для разработчиков включили. - то только один вариант - ?? код .=/
ManBearPig
При старте ? Sqllite есть ?а может ещё и одновременно с select какие то сетевые запросы? В логах что у Вас??
ManBearPig
В чем суть вы опишите , а там Вам ответят, возможно )
Валерий
стоит уточнить что за самсунг? есть такие самсунги что не приведи господь на них что то запускать.
M_SM
мне нужен этот state в переделах blocbuilder
M_SM
пример state != null ? Expanded : SizedBox();
ManBearPig
[
"Может поможет ? ",
{
"type": "link",
"text": "https://api.flutter.dev/flutter/material/TabBar-class.html"
},
""
]
Kirill Aparin
В чём вопрос
Mykola Shevchenko
Я правильно понимаю, в виджете подгружаются все заказы, а потом они фильтруются по userId?
Andrey
Это немного нет то
Mykola Shevchenko
Не самый понятный вопрос
Mykola Shevchenko
Б - безопасность)
Mykola Shevchenko
Его подкинули, да я понял
Mykola Shevchenko
Просто суть блока в том, чтобы даже такую логику выносить не в виджеты, а в блоки
M_SM
я понял это и хотелось переписать проект ??
Валерий
этим и стоит заняться)
M_SM
но не работаль с блоком работал getx и provider
Mykola Shevchenko
Так в доках примерно ваш случай и описан. Там есть пример с подгрузкой списка и как это все отображать
ManBearPig
Вообще то null не должен быть , Вам нужно первоначальное состояние определить в конструкторе , для этого создаёте условный InitStateSmthn extends MyStateClass А в блоке в его конструкторе ...super (InitStateSmthn());...
Валерий
я знаю о чем говорю. в итоге к этому и придете. только потратите лишнее время на попытки напихать костылей в существующий код.
Mykola Shevchenko
Это можно быстро нагуглить
M_SM
да я согласень с этим но сроки (
ManBearPig
ВЫ хотите навигацию осуществить ? Посмотрите свойства Scaffold. Этот бар может быть только снизу, если это не Ваш вариант - можно в условный Row кнопки /любые другие виджеты по вашему вкусу , и обрабатывать нажатия == менять экраны
Andrey
Мне нужно так же показать этот бар только сверху, чтобы свайпом так же его закрывать, только вверх, не понял про Row
Andrey
Понимаю что нельзя, но надо)
Andrey
Самому писать слишком долго
Валерий
[
"когда сильно лень писать самому можно сходить на ",
{
"type": "link",
"text": "pub.dev"
},
" и найти все что душе угодно) ",
{
"type": "link",
"text": "https://pub.dev/packages/snapping_sheet"
},
""
]
Andrey
Эта штука отвечает за направление?
Валерий
без понятия) это первая либа которая попалась в поиске.
ManBearPig
Какой то монстр) Если условный TabbarV решает вопрос со сменой экрана и общим баром сверху. Но его нельзя совсем убирать свайпом. Row тоже геморрой ещё тот , хотя , его легко свайпом убирать влево/вправо , но тут есть проблема о которой сразу не подумал - один бар для всех экранов на которые есть ссылки
Semchenko
Всем привет, можете помочь с реализацией приложения, знакомый попросил сделать, а я сам еще не могу такой функционал сделать. Сколько будет стоить и кто может помочь? Напишите пожалуйста. 1. Запуск приложения 2. Экран на 100% яркости врубаем 3. Отключение автофокуса передней камеры 4. Белая полоска на 25% верхней части экрана 5. Нижняя часть экрана 75% площади - изображение с передней камеры 6. Бегунок ручной фокусировки фронтальной камеры - работа с зумом 7. Сканер QR-кода (опционально) на этом этапе
Валерий
ему вроде как ботомшит нужен а не таббар??
ManBearPig
Я поясню, оба вмджета меняют экраны и их навигация - один виждет для КАЖДОГО items
Владимир
Добрейшего всем, подскажите, как избавиться от подобного(при открытии клавиатуры child текст кнопки пропадает)
Andrey
BottomSheet и Row и TabBar вообще разные вещи
ManBearPig
Ай блин я навидотомбар
Andrey
кек, не использовать кнопки
Andrey
Используй контейнеры и GestureDetector/InkWell
Andrey
И не будешь знать проблем
Владимир
Благодарю, сейчас попробую
ManBearPig
Подумал что Вы хотите BottomNavigationBar сверху и свайпом прятать ....??????
Andrey
Бывает, жаль что проблема актуальна
tdesc
это что магия? скорее баг
ManBearPig
Все равно вам нужен катомный виждет, давайте посмотрим на обычный BottomSheet, если разложить на части то это контейнер, тут можно идти 2 путями - смотреть в сторону Draggable как оболочки для контейнера в котором весь контент и декорации... Проще - тот же контейнер + анимация по нажатию на кнопку в нижней части экрана ==костыль
Владимир
слева используется Container + gesture detection, однако наследник в виде текста всё равно скрывается, можно ли как-то выставить параметр скрытия принудительного или же по детекту открытия клавы размер адаптивно менять?
Andrey
Думаю проще саму библиотеку поковырять и поменять ориентацию, чем самому пилить и чекать баги, я уже делал подобное, тот еще гемор
ManBearPig
Да, я молчу уже о эффективность заземления, который всегда в андроиде появляется для остального контента
ManBearPig
На эту фичу можно и день убить =/ с перерывом на перекур ))
Anton Kowalski
Кто-то использует Chrome OS для разработки?
Newbie Developer
Ребят, а как переключить из БЛоК`а экраны? уже несколько часов гуглю и что-то не могу никак ниайти. Везде переключение через виджеты происходит
Владимир
тебе при билде экранов нужно просто стейт проверять, а чтобы изменить из самого блока, можешь вызвать эвент внутри самого блока через this.event()
Newbie Developer
не понял. ВОт у меня есть сплэш экран. На нем нужно проверить авторзиирован юзер или нет. Я в классе splash_bloc проверил - не авторизирован. Нужно отправить на авторизацию. ГДе в итоге переключать экран?)
Newbie Developer
все равно кидать стейт и из виджета переключать?
Newbie Developer
слушателем в виджете?
tdesc
у тебя какой навигатор?
Владимир
ты можешь кинуть стейт и из самого блока
tdesc
первый сам пушишь как хочешь ) если все переходы через action сделать то несложно
Newbie Developer
пушить все таки из виджета после того как кинули стейт в классе, например splash_bloc, так?
tdesc
нужна реализация любая event_bus
tdesc
я предпочитаю просто сразу редакс использовать
tdesc
тогда кто-то подпишется на event / изменение в сторе и сможет сделать навигацию
tdesc
в 1 навигаторе нужен контекст или именованные роуты
tdesc
во 2 навигаторе от просто парсит урл и рендерит нужную страницу
Newbie Developer
понял, спасибо похоже я немного плаваю в теме. Пойду курить доку.
Александр Котков
Можно и без контекста через NavigatorKey
tdesc
язык на то и язык, пиши себе что вздумается
ManBearPig
Ну не совсем так ) а рамках правил фреймворка))
tdesc
фреймворк рендерит, ты пиши код которому все равно как его рендерят
Combot
Total messages: 337381
Nurassyl Nuridin
variable == null и variable.isEmpty вот эти два выражения идентичны или нет?
Nurassyl Nuridin
Получается при variable.isEmpty у меня будет ошибка если variable будет null?!
ManBearPig
Но эта переменная существует =>инициализированна
Nurassyl Nuridin
Понял спасибо
ManBearPig
Null ==ее ещё не создали/не инициализировали
Миша
Всем добрый вечер! Не подскажете, в чем соль?
Миша
мало ли кому поможет в будущем:)
.
сейчас он просто увеличивается по высоте с 200 до 600
.
[
"Код ",
{
"type": "link",
"text": "https://pastebin.com/NPh7Z1nJ"
},
""
]
Ibragim Abbasov
Expand какой-нибудь
Ibragim Abbasov
Он сам надуется
Andrey
Костылем через key можно сделать
Константин Бобров
Прошу помощи. Вечером все норм было
Константин Бобров
все, решил. помогло обновление onesignal_flutter до последней версии
Алексей
Доброе утро коллеги. Недавно начал изучать Flutter. Пытаюсь на странице вывести картинку, а под ней текст, но никак это сделать не получается. Текст выводится только поверх картинки.
Oleg Yakovlev
Если вкратце, то в данном коде ты выходишь все в одном контейнере. Сначала сделай column, а уже туда пихай картинку и текст отдельно Column (children:[Image(), Text()])
ManBearPig
Текст без подложки в виде картинки ? Тогда колонка, это самый простой вариант
ManBearPig
Можно ещё stack но там больше танцев, с бубном
?iriu?
Здравствуйте все. Ребята кто реализовал чат. Как лучше сохранить сообщения на стороне клиента ?
Алексей
нет, как обычный текст
Алексей
спасибо, коллеги) ??
Джамиль Хаметов
Самое простое файрбейз
Миша
притом давольно таки недешёвый
Джамиль Хаметов
если поиграться - то тебе хватит, если для клиентов - то они же будут платить) Ну а так на любой бд делай
?? ??????????????????????????
Перечитал доку, не нашел ничего что могло бы ускорить генератор
?? ??????????????????????????
[
{
"type": "mention",
"text": "@tdesc"
},
" какой был посыл к build.yaml? На что нужно обратить внимание?"
]
Илья Маненков
Ребят какой посоветуете способ реализовать платежи в приложении, flutter + firebase , с возможностью оплаты через google pay и apple pay
?? ??????????????????????????
[
"Начать можно с того что при холодном старте примерно 15-30 секунд он вообще не делает ни одного действия\n\n",
{
"type": "pre",
"text": "\n[INFO] 13.7s elapsed, 0/16 actions completed.\n",
"language": ""
},
"\n\nХолодный билд занимает на быстрой машине 3-4 минуты\n\n",
{
"type": "pre",
"text": "\n[INFO] Succeeded after 3m 44s with 265 outputs (8057 actions)\n",
"language": ""
},
"\n\nгорячий даже при незначительных изменениях 2-3 мингуты, без проверки и удаления конфликтов чуть меньше 1.5-2 минуты. \n\n",
{
"type": "pre",
"text": "\n[INFO] 2m 28s elapsed, 1390/1390 actions completed.\n",
"language": ""
},
"\n\nВ режиме вотчка те самые 1.5-2 минуты, тригериться на каждый пчих и после последнего сохранения надо дождаться последний вотч билд + подождать 1.5-2 минуты. С такими таймингами вотч использовать бесполезно.\n\nВ ci/cd эти тайминги можно множить на 2.5, на маленьких проектах действительно работает кодоген шустро секунд по 15-30, но с каждой новой моделью/зависимостью время билда растет в нелинейной прогрессии"
]
?? ??????????????????????????
я грешил на auto_route генератор, но практика показывает что время билда примерно одинаково распределено между билдерами. Единственный кто работает дольше всех остальных это freezed, но там просто моделей больше
Amantur Berkinbayev
Ок ли делать два независимых друг от друга bloc использующие один и тот же репозиторий. один блок чисто для загрузки и отображения, а второй с операциями круд. Или лучше связать это все в один блок. Независимые bloc-и увеличивают связность?
Эмиль
Ребят, направьте, пожалуйста Делаю сканер штрихкода, считываю штрихкод и присваиваю его значение переменной. И у меня есть база с данными, где есть штрихкод, наименование и цена. Как мне правильно реализовать, чтобы при получении штрихкода, переменная пробегалась по всем данным и выводила то что мне надо?
Дмитрий Щербаков
лучше сделать 2 блока. и при операции круд из второго блока отправлять евент в 1й (ну типа добавили сущность в бд и в случае успеха кинуле реквест евент в 1й)
Amantur Berkinbayev
Т.е со второго блока дергать ивенты первого это нормальная практика?
Дмитрий Щербаков
почему нет?
Дмитрий Щербаков
неважно откуда ты создаешь евент из ui или другого блока
Amantur Berkinbayev
Ок, спасибо
ManBearPig
Имхо лучше свой бэк , даже на mysql а в телефоне noSql hive удобно и быстро )
Дмитрий Щербаков
база локальная (на устройстве) или внешняя?
Vadim Lukichev
судя по логам, обработано было 8057 файлов, а реальный билд прошел только для 265 файлов, т.е. потенциально можно на порядок время билда уменьшить, если в build.yaml прописать конкретные папки/файлы для генератора где ему смотреть.
?? ??????????????????????????
не верно, совершено 8057 действий, файлов в проекте около 1.2k, в ранере 6 пакетов с ранерами (freezed/injectable/json_serialization/moor/autoroute)
?? ??????????????????????????
я не могу в билд yaml перечислить в каких файлах аннотации injectable или part ‘.g.dart’
Vadim Lukichev
[
"про экшены и количество все здесь есть\n",
{
"type": "link",
"text": "https://github.com/dart-lang/build/blob/62895be6c2e6db408fe0a9aa598ab51935b1be11/build_runner_core/lib/src/generate/build_impl.dart#L470"
},
"\nвообще я про реальный кейс, когда у нас вместо 2 минут, за 40 сек стало билдится, просто папки конкретизировали, а не типа \"хочу все и хз что где находится\""
]
?? ??????????????????????????
каким образом вы конкретизировали?
Vadim Lukichev
просто билд, обрабатывает все файлы, просто лишняя работа, особенно если в проекте на тысячу файлов только в десятке модельки, можно посмотреть как пакеты с билд_раннер делают, там чуть ли не каждый файл прописывают
?? ??????????????????????????
можно конечно чуть архитектуру поправить и нейминг, тогда да, хорошая идея спасибо
?? ??????????????????????????
попробую
Vadim Lukichev
можно вообще конкретные файлы указывать, если их десяток и билды быстро проходят, для пакетов такой подход норм
ManBearPig
В чем проблема то? Обычный select к локальной или через сетевой запрос
#elvin
Добрый день как можно закруглить края нижнего навбара?
ManBearPig
Это не так просто=/ В голову приходит только customPaint
ManBearPig
Для эффекта левитации/для тени его в physicalModel
#elvin
Спосибо посмотрю. Спосибо что направили ??
1 1
Добрый день, есть проблема, я не могу запустить Ios эмулятор в android studio, на Windows. Есть решение проблемы? Может как то на телефон можно, либо сторонние программы, не поможете?
DeniskaAb
Здравствуйте, а есть ли какой нибудь проект с хорошей реализацией структуры проекта или бойлерплейт?
Valentin Nechay
Виртувлизацию в бисе включи если интел у тебя проц
1 1
именно ios эмулятора нет... а Androi работает
Max
[
"есть ли смысл использовать ",
{
"type": "italic",
"text": "noSuchMethod"
},
"? Я так понимаю, что метод вызывается в случае, если ошибка возникает не во время компиляции, а такое бывает вообще?"
]
DeniskaAb
Оно без мака работает?
1 1
у меня такой же вопрос. Есть ли аналоги может.
ManBearPig
Параллель + xcode или покупка мака=/
1 1
Неужели у пользователей Windows, нет возможности пользоваться ios эмулятором/
ManBearPig
[
"Только так или вот ещё вариант \n",
{
"type": "link",
"text": "https://aws.amazon.com/ru/device-farm/"
},
""
]
1 1
ок. спасибо большое добрый люди)
DeniskaAb
У меня хакинтош для этого
Timur
возможно ли как-нибудь задать фиксированное значение для ширины VideoPlayer?
Timur
он занимает всю ширину экрана вне зависимости от того меняю ли я ширину родительского виджета
Radomir Epur
Попробуй обернуть его в FittedBox. Пример: SizedBox(с фиксированной шириной) -> FittedBox -> VideoPlayer
Дмитрий Щербаков
[
"Container(\n decoration: BoxDecoration(\n borderRadius: BorderRadius.only(\n topRight: Radius.circular(30), topLeft: Radius.circular(30)),\n boxShadow: [\n BoxShadow(color: Colors.black38, spreadRadius: 0, blurRadius: 10),\n ],\n ),\n child: ClipRRect(\n borderRadius: BorderRadius.only(\n topLeft: Radius.circular(30.0),\n topRight: Radius.circular(30.0),\n ),\n child: BottomNavigationBar(\n backgroundColor: ",
{
"type": "link",
"text": "Colors.black"
},
",\n items: [\n BottomNavigationBarItem(\n icon: Icon(Icons.favorite), label: 'Favourite'),\n BottomNavigationBarItem(\n icon: Icon(Icons.favorite), label: 'Favourite')\n ],\n ),\n ),\n );"
]
Yerassyl Maikhanov
У input field можно ли убрать текст об ошибке если делаешь по по-другому
Дмитрий Щербаков
FormField с валидатором сделать?
Artem Kalachyan
кто-то пользуется modular для di? там можно организовать что-то похожее на named из dagger? надо 2 инстанса одного класса инжектить
#elvin
Спосибо я делал cliprrect без container наверно по этой причине не работало
Fedor
Парни, есть какой нибудь сайт на русском где можно почитать про flutter, поизучать и т.д скиньте ссылки пожалуйста
Юрий
[
{
"type": "link",
"text": "https://metanit.com/dart/flutter/"
}
]
|