Программирование : Dart & Flutter по-русски
Павел
а чему там не работать)))
Evgenii Elchev
после swift енамы в дарт это грусть
Олжас Сулеймен
абстрактный класс с static const String полями
Павел
функция нормальная, подключить недолго, просто реально я допускаю, что часто нужная и toString можно было бы внутрь дарта внедрить
Павел
Что лучше, сгенерить индекс ассетов (дарт файл) по статье через bash скрипт или все-таки через бандл пытаться вытянуть их?
Павел
[
{
"type": "link",
"text": "https://medium.com/@iqbalmineraltown/generate-static-assets-references-for-flutter-513005df6649"
}
]
Compote
[
{
"type": "link",
"text": "https://pub.dev/packages/freezed"
},
"\nИ энум, и то стринг, и equatable"
]
Compote
От создателя provider
Олжас Сулеймен
отличный костыл ))
Tuum Daemonia
делал кто мобильную аппку с скринами экрана в фоновом процессе? Это вообще будет работать? нагуглить не смог Никакой слежки, просто аппка для тестеров)
Кирилл Матросов
просто делаешь скриншоты на какие-то действия --Никакой слежки конечно
A1ex Petrov (К)
Мужики, как отследить из-за чего крашится приложение? сразу после запуска падает на андроиде
Cmndwn
Если падает не только на продакшн сборке, то можно попробовать запустить на этом девайсе через андроидстудио мб что-то выведет
Artem Fedotov
logcat смотришь?
A1ex Petrov (К)
падает на этае установки и запуска. и ничего не пишет
A1ex Petrov (К)
сейчас думаю с эмулятора посмотреть, что случилось
CrazyAlarmClock
ребят, а как можно пересобрать виджеты? просто данные не успевают подгузится и везде ноль возращаеться, а если перейти на другой экран и обратно, то все подгружается. проблема только при первом открытии экранов возникает
A1ex Petrov (К)
Поставь загрузку на то время, пока загрузятся виджеты
CrazyAlarmClock
придется похоже))
CrazyAlarmClock
попробую все запихнуть пораньше, спасибо за идею ??
Konstantin Zhogolev
FutureBuilder
Cmndwn
А то что там no connected devices это ок?
Олжас Сулеймен
в initState http.get then setState а в build if done show else loading
Макар
Может быть проблема с зависимостями. При обновлении flutter и андроидстудиа
Макар
Мужики, как отследить из-за чего крашится приложение? сразу после запуска падает на андроиде
CrazyAlarmClock
Попробую, спасибо ??
Павел
применил for in при заполнении списка. Отругалось на высокий уровень версии дарта. Можно увеличивать? Все либы уже подтянулись?
Fearless Cry
Не хочешь просто попробовать?
Павел
и через месяц понадобится либа сильно, которой не будет на 2.3 )
Павел
поднять цифру не сложно
Fearless Cry
Да такое возможно
Павел
вот интересуюсь основные уже подтянулись?
Павел
понятно что не мелкие и неподдерживаемые
Fearless Cry
откуда мы знаем какие вы использует и какие из них подтянулись?
Павел
хорошо, перефразирую) на каком минимуме вы сидите? sdk: ">=2.1.0 <3.0.0"
Олжас Сулеймен
Видимо со след версией поднимут минимум
Олжас Сулеймен
Сейчас основной минимум это 2.6 extensions
Павел
мне казалось, я новый проект в АС создал
Павел
надо проверить, я там не трогал до 2.1
Олжас Сулеймен
Со следующей уже ждём ffi stable и non-nullable
Павел
Не покидает ощущение, хоть и в статьях расхваливают Bloc типа кода меньше. Что в Bloc боольше кода относительно Редакса. Если писать по плагину-генератору блоков, то создание кучи классов как-то не укладывается, что меньше чем в редакс. Хотя пока нет времени проверять, переделывая проект)
Evgenii Elchev
Смотря как как его реализовывать. Ты можешь обойтись без либы, и без эвентов. Тогда немного меньше станет.
Alex Mac
Подскажите как можно сверстать такую штуку. Фишка в том что это ячейка для ListView. Нужно что бы первая иконка, текст и вторая иконка были на одном уровне, и line3 и text1 тоже. Проблема усугубляется тем что вся вьюшка должна динамически тянутся по вертикали в зависимости от строк текста в Line 1..3. Сейчас реализованно через row, но последнюю ячейку(Icon и text1) не получается динамически растянуть.
Evgenii Elchev
Было бы лучше, будь тут классы с алгебраическим умножением и паттерн матчинг
Fearless Cry
классы с алгебраическим умножением?
Alex Mac
А таблицей не получиться ли так что из-за первой иконки быдет тянуться ячейка с текстом line1, и там появиться слишком большой отступ. Или в таблицах есть возможность объядинять ячейки?
Павел
Ага и на стримах вообще сделать все)))
Evgenii Elchev
Я честно забыл как их по человечки назвать, сейчас поищу. Это подтип АТД
Evgenii Elchev
Вроде норм должно быть
Evgenii Elchev
Сумма типов. Это это вот enum например. Но он данные с собой не может тянуть.
Evgenii Elchev
В котлине, Swift, Scala есть прямо классы с данными, которые можно суммировать.
Fearless Cry
так есть же миксины
Evgenii Elchev
Миксин подмешивает реализацию
Evgenii Elchev
А тут тип, который может быть одним из нескольких типов
Evgenii Elchev
enum State { case error(Error) case loading case loaded(Users) }
Evgenii Elchev
И ты можешь типо так сделать final state = State.loader(User())
Evgenii Elchev
И потом паттерн матчингом развернуть
neikist
Эх, и тут дарт котлину уступает
Fearless Cry
а в котлине такое есть?
Evgenii Elchev
switch state { case loaded(let user): что то там с user case error(let error): Попап с error case loading: Крутим спинер
Evgenii Elchev
Да, силд классы что ли называется, но могу ошибаться с названием
neikist
[
{
"type": "pre",
"text": "sealed class State {\n class Error(Error) : State()\n object Loading: State()\n class Loaded(Users): State()\n}",
"language": ""
}
]
Evgenii Elchev
Может добавят
neikist
Хорошо бы, фича удобная.
Evgenii Elchev
Очень, я уже хз как без этого жить)
neikist
Разве что в котлине в when проверяется что обработаны все варианты только если when - expression. Хотя могу косячить с терминологией. В общем когда значение возвращает
Evgenii Elchev
У нас паттерн матчинг никогда не бывает expression, что не всегда удобно. Но за то явно можно выбирать, проверить все или нет
Evgenii Elchev
У нас можно только одно сопоставление сделать через if case или родное через switch
Artyom Nesterenko
Можно написать extension fun в одну строчку, которая будет заставлять всегда проверять. ??
neikist
Как то не представляю как это может выглядеть
Fearless Cry
Это оффтоп, ребят
Artyom Nesterenko
[
{
"type": "link",
"text": "https://github.com/android/plaid/blob/master/core/src/main/java/io/plaidapp/core/util/Extensions.kt"
}
]
Evgenii Elchev
Про возможности языков же говорим)
Fearless Cry
Ну прочитай название беседы
Evgenii Elchev
Мы расстраиваемся что этого нет в дарте, все норм)
Artyom Nesterenko
[
"Пишешь потом\n",
{
"type": "pre",
"text": "when(state) {\n is Loading -> doSomething()\n}.exhaustive\n\n// => compilation error",
"language": ""
},
""
]
Igor
[
"Привет! Подскажите куда копать.\n\nЕсть класс StatefullWidget.\n\nв нем вывод статей с автозагрузкой.\nПосле того как достигаем низа, вызываем метод _loadData в нём: \n\n void _loadData() {\n setState(() {\n isLoading = true;\n });\n _postBloc.add(FetchPost());\n }\n\nТак как мне после того как данные подгрузились сделать \n\nsetState(() {\n isLoading = false;\n}\n\n\n\n",
{
"type": "mention",
"text": "@override"
},
"\n Widget build(BuildContext context) {\n return BlocBuilder (\n builder: (context, state) {\n if (state is PostEmpty) {\n return Center(\n child: CircularProgressIndicator(),\n );\n }\n if (state is PostError) {\n return Center(\n child: Text('failed to fetch quote'),\n );\n }\n if (state is PostLoaded) {\n // тут если вызываешь метод с setState() то ругается"
]
Igor
setState() or markNeedsBuild() called during build.
Павел
Насколько я понял архитектуру Bloc ты уходишь от StateFull виджетов
Павел
все цепляешь на провайдеров bloc
Compote
loading должен быть частью _postBloc - одним из стейтов
Igor
тоесть не нужно совмещать setState с bloc?
Fearless Cry
и анимацию проводишь через блок?)
Fearless Cry
setState не стоит, конечно
Fearless Cry
но это не значит что ты исключаешь использование Stful
Павел
Вот это интересный вопрос) Я так понимаю простые виджеты сами в себе можно писать стейтфул
Павел
если нет связи с стейтом
Fearless Cry
не только сами в себе
Fearless Cry
есть вещи которые не нужно отдавать блоку
Fearless Cry
это всякие виджеты с контроллерами
Павел
ну это я и назвал сами в себе
Igor
блин. ну а никак нельзя поймать изменения в классе стейтфул и проставить sateState()
Igor
просто нах одно значение для одной вьюхи хранить глобально?
Fearless Cry
есть StreamBuilder, ChangeNotifier и прочее
Павел
Глобально только провайдер подключаешь
Evgenii Elchev
А почему не использовать setState в таких случаях?
Павел
а пользуешь пониже возле виджета потребителя
Fearless Cry
AnimationController вы никак не сможете без Stful использовать
Fearless Cry
Поздравляю. Никому только не советуй это
Evgenii Elchev
Ну ты пишешь, нельзя setState и блок. А если мой маленький виджет своё внутренне состояние использует, почему не сделать его через setState ?
Fearless Cry
а, это делай без проблем. Речь о состояниях экрана
Павел
я еще не волшебник)
Evgenii Elchev
А, это понятно
Fearless Cry
Конечно свитчер условный внутри может использовать сетстейт для себя
Igor
я так и хочу. но мне нужно после изменения bloc сказать своему виджету, "ей, измени переменную"
Igor
void _setLoadingComplete() { setState(() { isLoading = false; }); }
Fearless Cry
BlocListener
Fearless Cry
но вообще херь полная написана
Fearless Cry
зачем тебе сетСтейт
Fearless Cry
если вот у тебя стейт в руках
Fearless Cry
и ты уже отрисовываешь
Igor
что бы после достижения скрола не вызывалась подзагрузка постоянно
Fearless Cry
пересобираешь, точнее
Fearless Cry
а зачем сетСтейт-то?
Fearless Cry
от этой переменной что-то зависит?
Fearless Cry
просто делаешь присвоение переменной
Fearless Cry
без сетСтейт
Igor
я с vue 2 два года работал. привык ко всем этим реактивным данным
Павел
вью так же пререрисовывает
Fearless Cry
setState вызывает build
Fearless Cry
тебе нужно вызывать билд?
Fearless Cry
Ставлю что нет
Fearless Cry
более того не стоит дёргать setState во время билда
Павел
сейчас пересмотрел, Контроллер анимации у меня все-таки не в блоке а в initState )
Fearless Cry
что правильно
Fearless Cry
анимация не часть бизнес логики
Fearless Cry
это часть юая
Павел
а в блоке я его дергаю на forward reverse
Fearless Cry
ну а это плохо
Fearless Cry
если вам нужно что-то сделать в зависимости от стейта то юзайте BlocListener
Павел
у меня SlideTransition
Павел
[
{
"type": "link",
"text": "https://i.imgur.com/UCffa1e.png"
}
]
Павел
две шторки , надо задать кучу всего, чтобы выехала из разных сторон
Igor
конечно нужно было просто переменную
Павел
есть смысл оптимизировать построение анимации и шторок через консьюмер
Павел
в listener дернуть контроллер а в билдере шторку отрисовать
Павел
и кто первый отрабатывает? listener или builder ?
Fearless Cry
никаких гарантий
Fearless Cry
они подписаны на один стрим
Fearless Cry
на этом нельзя строить логику
Liza Polishchuk
Всем привет, поделитесь опытом, кто что использует для локальной базы данных (помимо чистого sqlite), возможно есть хорошие либы? Спасибо
Evgenii Elchev
[
{
"type": "link",
"text": "https://github.com/BirjuVachhani/spider"
},
" недавно искал и вот оно нашлось)"
]
Evgenii Elchev
Зря тот баш скрипт правил только)
Павел
Ахаха. Я тоже только сегодня правил под себя
Павел
Только я себе все равно поправил, так как меня массовый импорт и я List сделал
Павел
и как к ним стучаться? это ж надо знать что они есть. А если все члены нужны? Рефлекшн подключать?
Evgenii Elchev
У тебя ассетыьс данными видимо
Павел
[
{
"type": "link",
"text": "https://i.imgur.com/B3SNRbc.png"
}
]
Evgenii Elchev
А тут для интерфейса
Evgenii Elchev
Неточен. Понятно
Evgenii Elchev
Они же разные, нет?
Evgenii Elchev
Короче ладно, не ясен кейс, копать лень)
Артём Ефименко
Всем добрый вечер. Есть два Bloc класса, различаются они лишь одним методом который вызывают для подтягивания данных через апи. Можно ли их как то собрать воедино?
Evgenii Elchev
Собери один
Evgenii Elchev
Или сделай прокси
Mikle Alpha
Забавно, я пару месяцев назад искал что-то подобное, но так и не найдя решил сделать свой плагин
Артём Ефименко
Понял, спасибо. Тогда ещё вопрос. Как в bloc отловить ошибку во время get запроса, чтобы вместо подтянутой информации отобразился виджет с ошибкой к доступу к интернету?
Evgenii Elchev
Делаешь запрос, ждёшь результат, если ошибка (как ты ее там определишь не столь важно) ставишь стейт ошибки, в ui реагируешь на этот стейт
Ruslan Kim
Привет. Вопрос по настройке vs code. Кто знает где отключить ксевдокомментарий после закрывающей скобки и как изменить отображение кода для dart (хочу запретить использовать наклонный шрифт)?
Павел
видимо ищи в настройках dart плагина
Ruslan Kim
Да уж искал, не нашел :(
Павел
[
{
"type": "link",
"text": "https://i.imgur.com/aqfAZhU.png"
}
]
Ruslan Kim
О, большое спасибо.
Ruslan Kim
А на счет настроек шрифта для выделения слов не подскажите?
John Smith
[
"какой правильный способ поставить dart на убунту? надо внешние репозитории добавлять? ",
{
"type": "link",
"text": "https://dartsim.github.io/install_dart_on_ubuntu.html"
},
"\n\nили просто можно то что в дистрибутиве уже"
]
Павел
я просто открыл настройки и пробежался . их всего 77
Павел
[
{
"type": "link",
"text": "https://dart.dev/get-dart"
}
]
John Smith
спасибо добрый человек!
Павел
выступил в роли КЭПа )
Ruslan Kim
Кто то сталкивался с тем, что vs code не видит девайс, хотя flutter doctor из терминала его видит прекрасно?
Павел
начни с эмулятора и АС
|