Программирование : Dart & Flutter по-русски
Eldar
так то кубит это и есть блок ))
Oleg
он же разделил на кубит и блок просто
Pavel Erokhin
кубиком было палевно назвать, вот чтобы не догадались что это блок, назвал кубитом
Дмитрий Щербаков
ну я бы не сказал что кубит это блок
Дмитрий Щербаков
смысл блока - преобразовать событие в состояние
Дмитрий Щербаков
блок расширяет кубит, но не наоборот)
Andrew Vasilevskii
Кстати раз тут вопросы про кубит, кто может описать ситуацию при которой удобнее использовать его? (как я понимаю у него меньше функциональности)
Eldar
то есть кубит - это лайт версия блока ?
Дмитрий Щербаков
можно сказать так
Дмитрий Щербаков
ну вот возьми пример демо апки с каунтером
Дмитрий Щербаков
блок там излишен, кубит норм (хотя тоже излишен)
Дмитрий Щербаков
если какая то простая логика - кубит, если сложная - блок
Дмитрий Щербаков
те же тудушки можно делать вполне на кубите
Дмитрий Щербаков
просто когда приложение огромное, логики много - кубита не хватит. придется добавлять что то еще
Andrew Vasilevskii
Ну в целом я так и думал, но пока сильно применения кубита не вижу
Andrew Vasilevskii
спасибо
Дмитрий Щербаков
тем более что его репа слита с репой блока, проще юзать блок)
Yura Petrov
Я тоже думаю, что лучше сразу делать на bloc, задел на будущее. У меня уже такое было. Сделал на кубит, потом переделывал на блок
Ivan
блок очень очень хорош чтобы начать вкатываться в ооп дарта, так что крайне рекомендую =)
Andrey
[
"как можно найти размеры родительского виджета во время билда? \n",
{
"type": "code",
"text": "context?.findRenderObject() as RenderBox"
},
" не работает во время билда, а только после него"
]
Дмитрий Щербаков
Я начинал с dependence HELL ?? потом provider, потом уже пришел к блоку и все стало збс)
Yura Petrov
А я с provider). Тоже не плохой менеджер, но bloc лучше)
Andrey
я встряну: Get ещё лучше
Michael
[
"Привет всем! Кто-нибудь сталкивался с ",
{
"type": "code",
"text": "ffi"
},
"? \nПередаю в нативную библиотеку строку, в виде массива байт и при некоторых условиях получаю в ней добавочный мусор при аллокации :(\nВот выдранный кусок кода, где происходит сие безобразие:\n",
{
"type": "pre",
"text": " var content = new Uint8List.fromList(\"\".codeUnits);\n\n final pointer = allocate (count: content.length);\n\n for (int i = 0; i < content.length; i++) {\n pointer[i] = content[i];\n }\n",
"language": ""
},
"\nНиже пару скринов"
]
Дмитрий Щербаков
возможно) но переписывать существующие решения никто не оплатит
Michael
PS. если запускаю один тест -проходи, мусора нет, если были другие тесты - появляется муссор
Vadim Lukichev
[
"сам принцип работы фреймворка при билде не предполагает знание о размерах каких-либо виджетов, сам лэйаут и сайзинг производится после фазы билда. \nпоэтому делать или не в фазе билда\nили с помощью специального виджета, который с помощью делегата может «встрять» в фазу лэйаута\n",
{
"type": "link",
"text": "https://medium.com/@diegoveloper/flutter-widget-size-and-position-b0a9ffed9407"
},
"\n",
{
"type": "link",
"text": "https://api.flutter.dev/flutter/widgets/CustomSingleChildLayout-class.html"
},
""
]
Andrey
спасибо за наводку, буду смотреть, первая ссылку ни о чём)
Никита
[
"кто-нибудь делал подобное или подскажите в какую сторону смотреть\n",
{
"type": "link",
"text": "https://stackoverflow.com/questions/58941074/how-to-create-tree-view-layout-in-flutter"
},
"\n\nСпасибо"
]
Денис
[
"Народ врубил поддержку web, теперь не билдится android, либы не менял, но пишет ",
{
"type": "pre",
"text": "../.pub-cache/hosted/pub.dartlang.org/firebase-7.3.0/lib/src/top_level.dart:1:8: Error: Not found: 'dart:html'",
"language": ""
},
""
]
Денис
такое ощущение что он пытается сбилдить веб либы
Alexandr Borisovich
код на с++?
Alexandr Borisovich
подожите, но провайдер же типа лучше bloc как бы заявлялось чуть ли не разрабами или я путаю с чем?
Alexandr Borisovich
генератор ffgen не применял?
Michael
на rust, через "C совместимый интерфейс" не уверен на сколько правильный термин
Michael
нет, гляну, спасибо
Alexandr Borisovich
[
{
"type": "link",
"text": "https://pub.dev/packages/ffigen"
},
"\nруками биндинги очень сложно сделать без ошибок, лучше робот пусть делает. Но на раст не знаю, есть ли генератор бинлингов. Я свои экспериментты отложил, что-то не завелось но это было на первых версиях либы."
]
Michael
должно нормально быть, ведь я предоставляю .h хедер
Alexandr Borisovich
у меня была проблема, что на стейбл версии флатера библиотеке ffgen не было нужных зависимостей, а на экспериментальной - че то другое отвалилось))
Alexandr Borisovich
[
"медуза вот, не согласна была\n",
{
"type": "link",
"text": "https://habr.com/ru/company/meduza/blog/501786/"
},
", я не лучший сварщик, поэтому лучше вы мне опровергайте)))"
]
tdesc
ни то ни то не стейт менеджмент
Pavel Erokhin
кто она? что загорается? что за студио плей?
NewBalanceM5
мне кажется тут про эмулятор, но это не точно)
Danil Shvets
Народ, как думаете, подойдёт ли старый макбук про или эир для разработки приложений? Пишут что желательно 8гб оперативы, но у бу маков почти везде 2гб.
Roman Vasiliev
вообще нет
Daniil S
есть кто использует пермишен на камеры в IOS 14?
Daniil S
permisson handler использую
Anton Zheltov
прошка 2012 год и новее нужна, иначе флаттер и xcode не ставятся последние
Anton Zheltov
память в них прекрасно 16 втыкается и ssd
Daniil S
Это какой год 15?
Andrey Tsvetkov
у меня эйрик 17-го года и на нём 8 гб оперативы, полёт нормальный
Anton Zheltov
в 11 тоже можно, но уже не будет обновляться
Anton Zheltov
есть такие в работе )
Anton Zheltov
на 8 гб можно работать, а вот год важен
Илья Максименко
у меня 4 гб оперативы
Илья Максименко
полёт не очень
Anton Zheltov
На прошку можно добавить
Art
Здравствуйте как изменить етот голубой
Roman Vasiliev
Информативно
Илья Максименко
Ctrl пробел в этом
Art
Етот информация некак не помогло
Дмитрий Щербаков
Где там голубой ? )
Илья Максименко
Я не помню как это называется но видимо у списка свайп
Roman Vasiliev
Overscroll glow
Илья Максименко
Атрибут не так называется
Daniil S
человек спросил как цвет убрать, а вы ему физику скрола на Ios посоветовали =))))
Roman Vasiliev
Это я помогал илье угадать атрибут
Art
[
"manifest.json \"background_color\": \"",
{
"type": "hashtag",
"text": "#F4511E"
},
"\",\n \"theme_color\": \"",
{
"type": "hashtag",
"text": "#F4511E"
},
"\","
]
Art
theme: ThemeData( accentColor: Colors.deepOrange, ),
Andrey Novatovski
можете помочь, почему у меня Build Bundle горит серым? не могу приложение выпустить
Yaroslav
попробуй лучше через консоль собрать
Andrey Novatovski
у меня как-то получалось нажать эту кнопку) а вот в новом не работает
Yaroslav
могу дать только один совет) flutter build appbundle
Andrey Novatovski
ща ща, попробую
Andrey Novatovski
и это сразу можно будет грузить в google play?
Yaroslav
ну если у тебя настроена подпись, то да
Yaroslav
Вот это почитай, думаю достаточно хорошо все расписано
Yaroslav
[
{
"type": "link",
"text": "https://flutter.dev/docs/deployment/android"
}
]
Andrey Novatovski
по гайду всё сделал
Yaroslav
а где лежит у тебя keystore?
Yaroslav
точно по этому пути?
Andrey Novatovski
в проекте
Andrey Novatovski
тут ведь релиз должен быть?
Andrey Novatovski
чото я не знаю
Andrey Novatovski
щас уже такое пишет
Andrey Novatovski
чем ему местоположение не понравилось
Roman Vasiliev
инглиш гут
Roman Vasiliev
он на ключ жалуется
Andrey Novatovski
а когда лежал прямо в проекте не жаловался
Andrey Novatovski
по этому ключу только что собрал нативное, всё работает, а flutter какую-то муть делает
Геннадий Музыкантов
VSCode или Android Studio? У кого как?
Геннадий Музыкантов
Можно голосовалку впилить как-то?
Mitai
было уже вска победила
Yura Petrov
Android Studio
Геннадий Музыкантов
Пасиб )
Геннадий Музыкантов
Нашел
Squirrel
Студия установлена, пушто без нее доктор ругается, а писать удобнее в вс коде.
Vladimir
[
"привет всем, работаю с Flutter web и столкнулся с тем что надо подключить JS капчу(что вроде как успешно сделал) но не могу понять как ее вывести между виджетами. Чтобы было понятнее\n",
{
"type": "pre",
"text": "TextField\nCaptcha\nSubmitButton",
"language": ""
},
"\nрезультат всегда один капча висит в левом верхнем углу страницы"
]
Roman Vasiliev
Необязательно, чтобы по всем пунктам не ругалось)
Roman Vasiliev
Если Intellij IDEA стоит он тоже матерится на нее
Вадим Резниченко
у меня на убунте стоят и idea и студия, ему норм
Roman ??
Хочу вкатиться во флатер/дарт Какой у вас стак технологий, что оптимально учить? Какие ресурсы юзать? Буду рад любому совету
Вадим Резниченко
здесь 4к людей. в статье, где дата стояла 13 августа, писалось, цитирую: "по ключевому слову «Flutter» — около 160 резюме на всё СНГ". откуда тогда здесь столько народу?)
vasilich
Думаешь все пишут на флаттере коммерчески?
Artemiy Levy
Ну может люди просто следят и интересуются
Roman Vasiliev
сочувствующие
Maks Andrienko
[
"добрый вечер всем\nПодскажите\nя тут в список добавил ScrollNotification\nэто типо для пагинации\nи вот я хочу начинать делать пагинацию в середине списка, а не когда пользователь докручивает до конца\nвот так я узнаю что надо обновить ",
{
"type": "code",
"text": "notification.metrics.pixels == notification.metrics.maxScrollExtent"
},
"\nно это срабатывает только в самом конце списка, а как мне сделать что бы сработало в середине ?"
]
Roman Vasiliev
Айтемы константного размера?
vasilich
Ну от макс скролла нужно что-то же и отнять?) Тогда на отнятой высоте и будет догрузка
Maks Andrienko
я отнимал не срабатывает тогда вообще
Maks Andrienko
я это понимаю я брал и отнимал 1000.0 и нихера извините
Павел
максскрол наверное увеличивается после каждой странички?
Павел
а что если его пополам?
vasilich
А ты уверен что у тебя было 1000 пикселей по высоте?
Павел
хотя не) это только для первой страницы
vasilich
В дебаггер вставал? Значения смотрел?
Roman Vasiliev
[
"это не середина, но заюзай что-то такое\n\n",
{
"type": "pre",
"text": "const threshold = 200;\n if (resultController.position.extentAfter < threshold)\n onScrollEnd();",
"language": ""
},
"\n\nЭто в листенере скроллконтроллера"
]
Павел
To drive layout based on the scroll position, consider listening to the ScrollPosition directly (or indirectly via a ScrollController).
vasilich
Мне в лом со скролл контроллером возиться, я у листвью билдера смотрю на текущий елемент и за Х элементов до конца списка делаю фетчМор
Roman Vasiliev
элементы списка могут быть разными в высоту
Павел
неужели не работает простое отнимание от scrollInfo.metrics.maxScrollExtent?
Павел
проверка то идет на него
Павел
отнять от него полэкрана
Павел
завтра попробую) у меня есть пагинация как раз
Roman Vasiliev
ну если допустить что когда-то вместо 5 элементов на экране будет помещаться 20 (несложно представить если поменять устройство отладки), то может грозить сайдэффектами, если прогрузка не идет сильно заранее конечно)
Maks Andrienko
и он не сработал
vasilich
Работает конечно. Только нужно в дебаггер глянуть. Где-то матемаюкматика не та
Maks Andrienko
ладно, видимо я тупой код написал
Roman Vasiliev
окей, дикостей прямо не будет, просто прогружаться начнет позже чем хотелось бы
Павел
onNotification: (ScrollNotification scrollInfo) { if (scrollInfo.metrics.pixels == scrollInfo.metrics.maxScrollExtent - 400)
Павел
scrollinfo это же динамические величины
Michael Bazilique
Посмотри по логам
vasilich
Вроде ж ничего не будет особенного. ЛистВью рендерит по мере прокрутки. Хоть 100 на экран. Я за 5 елементов до конца дергаю фетч. Другое дело что можешь лоадер в конце списка узреть. Ну то не большая проблема. Так как инет может быть слабый и сколько не отступай один хрен будет шанс увидеть лоадер
vasilich
Конкретнее про сайд эффекты?
Roman Vasiliev
maxScrollExtent это максимальный экстент готовый нарисоваться на экране без подготовки вью. Если список не был пролистан до конца, это значение не будет полной длинной списка, теперь думай что у тебя не так в логике) и строгое равенство тебя тоже подставит
Roman Vasiliev
в любом случае
Павел
строгое равенство думаю основа проблемы. у меня тоже с минусом не работает. Вообще отключилось
Павел
потому что докручивая до конца экрана пиксель в пиксель попадает
Павел
scrollInfo.metrics.pixels == scrollInfo.metrics.maxScrollExtent
Павел
а иначе нужно скролить четко пиксель в пиксель
Павел
получается надо задать коридор
Roman Vasiliev
да и пролистывание из кода тоже никто не отменял, тогда прогрузки тоже не получишь (если этого нет сейчас, это не значит что не вылезет потом)
Roman Vasiliev
скипнешь до конца, строгое условие не выполнится и будешь ждать вечно)
Павел
I/flutter ( 5367): [D] Scroll 0.0 with max 544.7272727272727 I/flutter ( 5367): [D] Scroll 0.0 with max 544.7272727272727 I/flutter ( 5367): [D] Scroll 1.083984375 with max 544.7272727272727 I/flutter ( 5367): [D] Scroll 2.192604758522748 with max 544.7272727272727 I/flutter ( 5367): [D] Scroll 3.276589133522748 with max 544.7272727272727 I/flutter ( 5367): [D] Scroll 4.360573508522748 with max 544.7272727272727 I/flutter ( 5367): [D] Scroll 5.444557883522748 with max 544.7272727272727 I/flutter ( 5367): [D] Scroll 8.006702769886374 with max 544.7272727272727
Maks Andrienko
ну это и так было понятно что дабл
Павел
ну и как ты попадешь пальцем в double ==
Павел
и то сразу блокировать слушателя
Павел
после первого срабатывания
Павел
никакого асинхронного кода
Michael Bazilique
Я раньше так же сталкивался с такой проблемой
Michael Bazilique
Отлавливал пиксель и пропускал только раз
Michael Bazilique
К ивенту
Павел
scrollInfo.metrics.pixels > scrollInfo.metrics.maxScrollExtent - 400
Maks Andrienko
круто Спасибо большое
Павел
но не в стейте, иначе бует перерисовываться а это потеря времени
Павел
хотя наверное пусть перерисовывается) скролл то на каждый кадр будет
Maks Andrienko
спасибо большое очень помогли
vasilich
А у тебя скролл вью или листвью?
Maks Andrienko
обернутый NotificationListener
vasilich
Я писал выше - можешь без этой епли с контроллером. В листвью билдере отлавливать какой по счету елемент сейчас рендерится и за Х элементов до конца запускать фетч
vasilich
Мы вышли из бухты)
Maks Andrienko
перед отрисовкой смотреть какой по счету и тогда фетчить правильно ?
vasilich
Ну у тебя билдер вызывается каждый раз с новым индексом. Сколько елементов всего ты знаешь. Внутри билдера пишешь проверку что индекс равно АйтемКаунт - Х и вызываешь догрузку
Maks Andrienko
а разве билдер не отрисовывает все сразу? он ведь проходит не только по тем что мы видим, а сразу по всем объектам. то есть когда будет дан билдеру список из 100 элементов от сразу будет отрисовывать их всех
vasilich
А вот с этим разобраться - будет домашним заданием ;-)
Roman Vasiliev
не проходит по всем
Michael Bazilique
Он лейзи
Roman Vasiliev
он идет с запасом
vasilich
Рендерит каждый следующий по ходу скрола
vasilich
Там есть параметр?
Павел
это же андроидный элемент для экономии памяти
Michael Bazilique
Это лейзи, когда рендерит по мере скролла
Maks Andrienko
те кто писал С
Павел
запас например на полэкрана
|