Программирование : Dart & Flutter по-русски
Анатолий
[
{
"type": "pre",
"text": "class A {\n B b = new B();\n String prop = this.b.b;\n}\n\nclass B {\n public String b = \"qwe\";\n}",
"language": ""
},
"\n\nТак можно делать в джаве? на свойства А смотри"
]
uri
чтобы не раздувать дерево есть 2 пути - выносить его части в отдельный виджет наследованный от StatelessWidget/StatefulWidget. или выносить в том же классе куски дерева в методы buildButtons() / buildUserCard() ... Column( children: [ buildUserCard(), buildButtons(), ]
Dmitry Lvov
нет, думаю нет, только если статик
uri
buildXXX() { return Container( ....); }
Dmitry Lvov
[
{
"type": "mention_name",
"text": "0xff00ff",
"user_id": 49566130
},
" ну я уже сравнил и сказал что можно уйти в билд. Ок."
]
Dmitry Lvov
или можно сделать статик метод.
Dmitry Lvov
что тоже не гут
Dmitry Lvov
Вы же сами написали что это не очень
Анатолий
[
{
"type": "link",
"text": "https://flutter.dev/docs/codelabs"
}
]
Анатолий
Почитай эти уроки
Анатолий
Многое встанет на места
uri
нет, то что не меняется в дереве из кадра в кадр - оно кешируется и не пересоздается
uri
поэтому нету смысла явно это создавать и держать как переменную - флаттер это уже делает за Вас
Dmitry Lvov
ок хорошо, всем спасибо. На этом отстану на сегодня )
Анатолий
точно кешируется?
Анатолий
60 раз в секунду он создает 60 классов
Анатолий
а рисует уже не все
uri
виджет ничего не весит, у него за спиной element/renderobject который смотрит на новый инстанс виджета и его параметры и решает надо ли более тяжелому рендер объекту пересоздаваться
Анатолий
По этому стейт и вынесли в отдельный класс, сам виджет постоянно дохнет и пересоздается а стейт остается
Анатолий
весит не весит а когда у тебя оч большое дерево то пару тысяч обьектов надо создавать ежесекундно
Анатолий
так что тут тоже надо быть осторожным
uri
осторожным чтобы дисплей не треснул от 2к элементов)
uri
в билде ваще что-то кроме виджетов создавать не стоит
Dmitry Lvov
вот это нормальный такой ответ Андроиду )
Анатолий
2к это всего то 50 виджетов будут генерить созданий классов в секунду
Анатолий
просто бесхозных созданий экземпляров
uri
у меня есть пиксель арт прилка, на картинке в 100х100 в каждом кадре есть как минимум 10к объектов только для границ пикселей, столько же для цифр, и еще + для закрашеных+ слой с миникартой и партиклы, 3-6 мс кадр
uri
что-что а чистить мусор он умеет
First Last
[
{
"type": "mention",
"text": "@bunopus"
}
]
First Last
Можешь повторять :D
First Last
Теперь твою шутку будет проще понять)
IB Akhrorov
какие браузеры поддерживают дарт
Ihar Yanchuk
Ребята, всем привет. Есть библиотека drag_and_drop_list, которая позволяет в списке притягивать элементы, тем самым менять их позиции. Может есть подобная библиотека, чтобы можно было также перетаскивать, только не ограничиватся одним списком, т е мы можем из первого списка перетаскивать во второй и также в нем внутри перетаскивать тоже можем. Может кто-нибудь знает такую библиотеку или может подсказать как написать такое?
Sergey ?
Никакие, для веба дарт в js транспайлится насколько мне известно
IB Akhrorov
тогда для сервер сайда исползование dart не будет проблем?
IB Akhrorov
в гугле поискал про private members in classes , там написали что _ underscore означает private member of a class но в методе main я имею доступ к private members без set get methods
First Last
[
"Почитай в доке как именно работает ",
{
"type": "code",
"text": "private"
},
" в dart"
]
First Last
Он не распространяется на один класс
IB Akhrorov
Unlike Java, Dart doesn’t have the keywords public, protected, and private. If an identifier starts with an underscore (_), it’s private to its library. Без protected member не будет проблем?
First Last
Ни у кого нету
First Last
Я ж тебе говорю
Roman
кто-нибудь встречал адекватный пример offline first без firebase?
Maria
dartium. Правда, сам дартиум, уже вроде не поддерживают
Alexander Chudesnov
Дарт для веба компилируется в JS, вопрос немного неактуален. (Dartium не в счёт, эта штука, по большому счету, только для дебага использовалась)
First Last
В хроме дарт умел воспроизводится
Evgeny Kot
[
"Вопрос нормальный\n",
{
"type": "link",
"text": "https://webdev.dartlang.org/faq#q-what-browsers-do-you-support-as-javascript-compilation-targets"
},
""
]
Evgeny Kot
Dart2js не поддерживает IE10
Evgeny Kot
В скором времени поддержка IE11 тоже будет только под флагом, потому что будет компилироваться в ES6
Max??
Кто-то делал lock screen? Ну чтобы во время загрузки не было возможность нажимать на какие либо кнопки и показывать просто loader. На нативе это просто делается обычным FrameLayout с лоадером а тут не совсем понятно
Karen
сделать виджет с лоудером на весь экран
Max??
и захпинуть его в Stack, да, я так уже думал сделать
northelks
оберни виджет в стек, первый виджет обычный, второй лоэдер с прозрачностью
Dmi Sb
[
"я вот такой вариант встречал\n",
{
"type": "link",
"text": "https://pub.dartlang.org/packages/modal_progress_hud"
},
""
]
Daniil Kolyasnikov
[
"Или можно сделать showDialog. В него положить material прозрачный. При начале загрузке показывать модалку. При окончании загрузки делать navigator.pop()\n1) ",
{
"type": "link",
"text": "https://docs.flutter.io/flutter/material/showDialog.html"
},
"\n2) Как обработать кнопку назад ",
{
"type": "link",
"text": "https://stackoverflow.com/questions/49356664/how-to-override-the-back-button-in-flutter"
},
""
]
Max??
а если это всё делается в блок билдере? Там 2 эвента, loading и loaded, если loaded то отображается скрин а если loading то лоадер+скрин...не отрисовывать же мне в loading и loader всегда один и тот же виджет но только в одном случае с лоадером и во втором без...хотел сделать так чтобы просто лоадер показывался и пропадал без перерисовки всего скрина
northelks
он у тебя всё равно будет перерисовываться, чтобы пропасть
northelks
даже через обычный setState
Max??
не сильно ли это затратно? Ну чтобы отобразить лоадер перерисовывать полностью виджет...
northelks
не затратно) это происходит постоянно и часто, перерисовка
tdesc
вам в доки, читать как работает рендер и что такое декларативная верстка
Max??
Схожу почитаю а то звучит как-то страшно...перерисовывать виджет при каждом чихе
Vadim Lukichev
Ага 60 раз в секунду)) Только, будет возможность почитай про widgets, elements и renderObjects - не все так страшно в итоге.
Pavel Kozlovskiy
Добрый день, помогите разобраться, пожалуйста, изучаю в bloc архитектуру, и не могу понять, как лучше поступать когда датапровайдер представлен вэбсокетом и респонсы могут сыпаться асинхронно без реквестов, как в таком случае лучше оповещать bloc?
Анатолий
блок как бы тоже асинхронный
Анатолий
пришло тебе сообщение, кидай в блок
Анатолий
дальше кому надо подхватит
Анатолий
там же стримы, данные не всегда надо просить
Анатолий
можно просто подписаться
Pavel Kozlovskiy
[
{
"type": "link",
"text": "https://felangel.github.io/bloc/#/flutterlogintutorial"
},
"\n\nА как тут чем не подходит?"
]
Pavel Kozlovskiy
[
{
"type": "mention_name",
"text": "0xff00ff",
"user_id": 49566130
},
" ничего не понял ("
]
Анатолий
Блок использует стрим, на стрим можно подписаться чтоб получать результаты без запроса
Pavel Kozlovskiy
Вопрос был не про блок-виджет часть, а про блок-датапровайдер.
uri
один блок может контролить когда подписаться/отписаться на сокет и кормить прилетевшие ивенты в инпут блоку который будет конвертить их в стейт
Max??
в этом случае при загрузке пропадает экран и мы отображаем только лоадер и после загрузки уже отображается наш экран
Kirill Valyavin
Можно ли как-нибудь автоматизированно сделать локальную сеть между телефоном и пк, который подсоединён по usb или вайфаю?
Kirill Valyavin
Я пробовал сделать hotspot/tethering, но ни по каким адресам не подсоединяется
Kirill Valyavin
Гугл предлагает делать какие-то странные вещи через гуёвый интерфейс на винде, а у меня не винда даже
Анатолий
Через вифи есть сеть локальная по айпи
Анатолий
Собственно ваш вифи и есть локальная сеть между всеми подключенными к ней устроцствами
Kirill Valyavin
А почему, когда я делаю броадкаст-пинг по локальному айпишнику, телефон не отвечает?
Kirill Valyavin
Мне же надо ещё как-то адрес телефона получить
Анатолий
А по какому ты айпишнику делаешь пинг раз не знаешь адреса?
Анатолий
Да и с другой стороны, а должен ли телефон отвечать на пинг?
Kirill Valyavin
Беру локальный ip компьютера и заменяю последнее число на 255, чтобы был броадкаст
Kirill Valyavin
Ну если он - устройство в локальной сети, то да
Kirill Valyavin
Забыл сказать, на телефоне сервер запущен
Анатолий
Если устройство хочет/может, то оно отвечает на пинг
Анатолий
Короче узнай айпи телефона и делай именно то что телефон готов принять
Kirill Valyavin
[
"Говорят, что ip телефона постоянный (",
{
"type": "link",
"text": "192.168.43.1"
},
"), но соединение не устанавливается"
]
Kirill Valyavin
Ну, тут, конечно, много где ещё можно накосячить
Kirill Valyavin
[
{
"type": "link",
"text": "https://stackoverflow.com/questions/17302220/android-get-ip-address-of-a-hotspot-providing-device"
},
"\nНапример"
]
Анатолий
Ты серьезно? В роутер загляни, он айпи выдает
Kirill Valyavin
Какой роутер???
Анатолий
Либо если ты вайфай на компе расшарил то тужа
Kirill Valyavin
Но ведь хотспот без роутера работает
Анатолий
Тот кто раздает вифи тот и контролирует айпи, просто глянь кто подключился и кауой у него ацпи, чтоб не гадать
Анатолий
Так ты 100% будешь знать
Kirill Valyavin
Телефон раздаёт. Надо на него найти приложуху специальную тогда
Анатолий
А можешь сделать наоборот? Чтоб комп раздавал?
Kirill Valyavin
Не очень удобно. Это для презентации, я не буду компьютер контролировать. Да и нередко так делают, на телефоне включается сервер, с компьютера открывается веб-страничка и что-то делается
Dimon ??
почему бы не задеплоить на какой-нибудь бесплатный хероку?
Kirill Valyavin
Ну, если это путь наименьшого сопротивления
Анатолий
Давай зайдем с обратной стороны, зачем тебе внутренняя сеть?
Kirill Valyavin
Мне необязательно внутреннюю, просто я думал, что так проще. Мне нужно с незнакомого компьютера минимальными усилиями наладить связь с телефоном. Чтобы телефон выдал веб-страничку и предоставил веб-сокет соединение
Kirill Valyavin
Ну либо посередине надо ставить сервер и оба девайса подключать к нему, если не выйдет
Kirill Valyavin
Минимальные усилия - это в смысле для пользователя компьютера. Со стороны телефона какие угодно
Анатолий
Тогда да, нужно начинать с телефона
Kirill Valyavin
Так сделал. А к серверу не подключается почему-то. Я не понимаю, в чём проблема
Kirill Valyavin
В смысле? Телефон пишет в отладочную консоль, что сервер запущен
Kirill Valyavin
Ну debug console. То, что через logcat видно. Сервер на телефоне
Kirill Valyavin
Ну пинг не доходит
Kirill Valyavin
А не. Пинг как раз есть
Kirill Valyavin
А вебсокетов нет
Kirill Valyavin
Ну... сервер должен запуститься. Могу код показать
Анатолий
А какой порт занимаете?
Анатолий
Забавное конечно решение
Kirill Valyavin
Firefox can’t establish a connection to the server at ws://192.168.43.1:8080/.
Kirill Valyavin
VLC и другие плееры на iOS так делают, например. Очень удобно, чтобы файлы скидывать на телефон. На андроиде посмотрел, там нет такого почему-то
Kirill Valyavin
Connection refused Т. е. устройство есть, оно видится, и явно обрывает соединение
Oleg Dubrovin
А ни у кого нет Dart in action в электронном виде?
Kirill Valyavin
В обоих случаях connection refused
Kirill Valyavin
Motorola Moto E4+
Kirill Valyavin
Порт нужный закрыт, увы
Оганнес Асатрян
Где-то видел
Оганнес Асатрян
Хотя мб только обложка
Kirill Valyavin
Это да. Порт надо открыть, а это вряд ли можно без рута
uri
а другие кроме 8080 пробовал?
Kirill Valyavin
Пробую сейчас
uri
без рута можно юзать 1024+ порты, 8080 мб чем-то зарезервирован
Kirill Valyavin
На 80 кидает exception, на 8080 не кидает. Должно кидать, если закрыто или занято?
Kirill Valyavin
Ну в общем да. Занятые порты и с sudo-доступом дают исключение, остальные ничего не пишут, но и не открываются
Kirill Valyavin
А вот если запустить приложение с ftp-сервером, оно работает прекрасно. Что-то всё-таки я неправильно делаю
Kirill Valyavin
ws поверх http же работает
Kirill Valyavin
Нет, дело не в этом. Сканирование портов в случае ftp показывает нужные порты, а для моего сервера не показывает ничего
Kirill Valyavin
Код сервера я скопипастил из документации. Может ли так быть, что это просто не предусмотрено для мобильной платформы?
Kirill Valyavin
ftp на 12345 работал. Попробовал, результат тот же
Kirill Valyavin
[
"Ыы. Оказывается, у сервера надо было писать айпишник ",
{
"type": "link",
"text": "0.0.0.0"
},
", а не loopback, как это написано в документации. Чисто случайно нашёл кусок код на гитхабе, теперь всё работает. Извините, что потратил ваше время на такую чепуху"
]
DVS (Read The F.ng Manual) Studio (NoHello)
Много где вижу нули в серверах. Надо чтоб не жёстко на локалхост биндиться, но и во внешний мир
Kirill Valyavin
Ну на самом деле надо просто внимательнее читать, а не копипастить
uri
вспомнил с parse-server-ом в контейнере такой же прикол был
Kirill Valyavin
Хотя, конечно, было бы нелишним для таких как я писать сразу так в примерах. Совсем на дурачков не рассчитано
uri
запушь изменения в доку там где это можно заметить, если опенсорс)
uri
да ну в худшем случае спасибку от мейнтейнера словишь
uri
столько раз встречал пробелы в доках за которыми можно ночь просидеть... боль
Kirill Valyavin
Это не пробел, там прямо дальше в тексте про это написано
Kirill Valyavin
А я не читал. Я скопипастил и не подумол.
uri
когда там уже нейроинтерфейс для загрузки доки в мозг, есть инфа?
admin
сильно ли возрастает приложение с использованием его?
Eugene
нет, там svg тобишь вектор
admin
А доступны только фри иконки?
admin
я просто раньше никогда не использовал сам, только знал, что в вебе юзают
Eugene
[
"там инфа есть в принципе-то, а так и цена за полный комплект более чем доступня. но в принципе рекомедую так же ознакомится в целом \n",
{
"type": "link",
"text": "https://www.google.com/search?q=web+font+icons&oq=web+font+icons&aqs=chrome..69i57j0l5.3110j0j7&sourceid=chrome&ie=UTF-8"
},
" \nи выбрать на свой вкус. Так же не стоит забывать\n",
{
"type": "link",
"text": "https://material.io/tools/icons/?style=baseline"
},
""
]
Eugene
дык логично это же самый простой способ распространения и внедрения
admin
и еще я так понимаю нельзя юзать шрифты, которые предустановлены в айоси/андроиде и придется в ресурсы приложения кидать его .ttf?
admin
ну в смысле, они же предустановлены, знач их можно юзать
Eugene
приложить да, все завсит от того как юзать
Eugene
конечно, но тут никаких секретов нет они их всегда публикуют на видном месте
Eugene
не про версия фри, про 60 баксов в год это ващениачем
Eugene
ну а те же гуголвские(ссылка выше) вообще юзай сколь хош
Eugene
а там набор на все случаи жизни
Оганнес Асатрян
Зачем патент на бизнес логику?
Eugene
видимо верить в уникальность идеи которую нужно защитить и получать пассивный доход
Оганнес Асатрян
Это возможно??
Eugene
конкуренция это движитель, и так не защитить бгг
Eugene
да и смысла в этом нет
Eugene
нет ну если есть деньги и время которые готовы потратить в пустую то почему бы и нет
Оганнес Асатрян
А ты каким боком? Ты ж разраб
Александр Котков
это не возможно
Александр Котков
берут вашу логиу вносят пару изменений все,
Александр Котков
расскажите это крч яндексу
Александр Котков
они все у гугла скомуниздили
Eugene
вспомни про шторку на ифоне бгг
Eugene
или про кнопку хом с отпечатком пальца бгггг
Александр Котков
максимум что можете сделать это патент на идею это уже куда существенне
Александр Котков
так то свайп или что-то такое под панетном какой то компании ) но все хер на них положили
Александр Котков
ну сказал бизнес логика) а тут все программисты это обычно реализация кодом, а идея это абстракная вещь
Eugene
там все еще интереснее, например компания моторола которую купил гугол ради патентов и потом избавился за ненужностью — бывают прецеденты
Александр Котков
да да ) тоже тема
Александр Котков
крч извернутся найдут способ
Eugene
эм уже давно есть, но на уровне одного банка + есть через посредника аля google play
Eugene
у альфы и у тинькофф через мобильное приложение я свою карту могу перетащить на любой из счетов и юзать его с нее
Eugene
в чем именно при текущем распространении мобильных устройств и среднем количестве активных счетов менее одного на человека(да, у большинства людей нет счетов банке не считая зарплатного)
Eugene
как и в сша, что нам и продемонстрировалии "инновации" на последней презе ёбанного эппл
Eugene
но глянь в сторону виртуальных банков которые сейчас набираю популярность
admin
а какие еще банки остались?
|