Статья :: Dart & Flutter по-русски |
Программирование : Dart & Flutter по-русски
Andreu
у меня вот Row с Text и Icon в заголовке. Если я жму в пустое место межлу ними, то он не ловит нажатие
Roman Kaygororodcsev
Думаю этот вариант лучше, спасибо)
Валерий
[
"behavior ",
{
"type": "code",
"text": "opaque"
},
", если не изменяет память"
]
Andreu
Спасибо, сработало
Cat-Wizard Ashere
Добрый день, чатик. Могу задать пару вопросов по асинхронности?
Mikl Night
[
"у меня как у любителя пхп есть вопрос...\nесть у меня \n",
{
"type": "code",
"text": "String varname = string2;`\nString string2 = \"Two\""
},
",\n\n в пыхе можно было сделать ",
{
"type": "code",
"text": "echo $$varname"
},
" и получить \"Two\", Dart так может?))"
]
Adel Gilyazeev
[
"да, олько вместо ",
{
"type": "code",
"text": "echo"
},
" тспользуй ",
{
"type": "code",
"text": "print(varname);\n\n"
},
" только порядок объявления соблюдай"
]
Mikl Night
у меня немного сложнее, у меня в переменной лежит постфикс искомой перменной, А есть ещё и префикс String str2 = "String Number Two" int var_num = 2; как сделать print(str*$varnum*) или гавно задача делай по другому?)))
Adel Gilyazeev
нет, так нельзя, если только через mirror, но это уже читы и работает только в VM
Cat-Wizard Ashere
Код учебный, но... В чем все таки разница между асинхронным выполнением и синхронным. А то есть, что вижу лично я: Сначала вычисляется первая функция. Потом вторая. И лишь затем вычисляются значения переменных. Понимаю, что инициализация проходит сверху вниз, но все же, разве при асинхронных запросах, они не должны выполняться параллельно друг от друга? Или я что-то неправильно понимаю в асинхронности?
Adel Gilyazeev
выход хранить в Map , ключи как названия переменных
Adel Gilyazeev
паралельно не выполняются, они выполняются друг за другом, но не в установленном порядке
Adel Gilyazeev
типа если мы скажем считать два файла асинхронно, а потом на каждый результат повесим коллбек через then, то сначала будет исполнятся тот колбэк, файл которой будет первее прочитан, и он будет исполнятся до тех пор, пока он не кончится или не начнёт ждать чего либо другого. И лишь потом начнётся исполнение друггого колбека, даже если данные для него были получены мгновенно после первого
Andrew Vasilevskii
почему первее
Andrew Vasilevskii
точнее, что щначит который первее прочитан
Andrew Vasilevskii
первее будет прочитан тот, который вызван раньше
Andrew Vasilevskii
все выполняется в 1 изоляте
Andrew Vasilevskii
в 1 потоке
Adel Gilyazeev
ну типа асинхронный запрос на чтение, там дёргаются системные вызовы, они считывают файл и передают данные в очередь на исполнение
Andrey Unger
Господа, посоветуйте orm пакет для работы с постгрисом на бэке. желательно чтобы скульмиграции поддерживал
Cat-Wizard Ashere
Окей, я могу понять зачем нужен async await, когда мы не знаем когда нам прилетят данные, но разве до выполнения кода в потоке весь наш остальной код не будет стопорится до исполнения асинхронного? В чем преимущество асинхронных запросов тогда в целом?
Павел Середа
не работайте с дартом на беке
Andrey Unger
суровая необходимость переписать с ноды на дарт (
Adel Gilyazeev
жто при синхронном чтении... Поток будет ждать пока файл прочтётся системой. А при асинхронном он даст команду, но не станет ждать, а будет дальше исполнять твой код. Когда система оповестит что файл прочитан и данные скинуты в память, то если твоя программа будет ждать эти данные то она на них сразу же среагирует,а если нрет, то данные так и останутся висеть в очереди на исполнение
Евгений
зачем, если не секрет?
Павел Середа
переписывайте на go
Andrey Unger
чтобы не нарушать nda
Евгений
оч интересный случай
Andrew Vasilevskii
ну нет же, асинхронный запрос по идее просто кидается в очередь евентов
Adel Gilyazeev
async говорит что функция может прервать своё исполнение, await говорит прервать исполнение функции до получение результат правого фьюбчерса
Andrey Unger
ага. мысль в том, что код написаный на разных языках - разный код. А стало быть может принадлежать разным субъектам
Adel Gilyazeev
чтение файла происходит через системный вызов, и система сама потом твоему потоку подкидыввает ивент об успешном прочтении
Евгений
да ну это дичь какая-то
Andrew Vasilevskii
под капотом там compute?
Adel Gilyazeev
с WinApi работал? про message Loop слышал?
Евгений
а если на бэке java, то на ios тоже на java писать надо?)
Евгений
или под андроид на свифте)
Adel Gilyazeev
по сути да, только уже с готовыми прочитанными данными от оси
Евгений
а на одном языке не может принадлежать разным субъектам? ??
Andrey Unger
тут разговор только про бэковский код. Если написанный алгоритм на Typescript+NodeJs+sequelize/postgres принадлежит конторе, то переписанный на другом стеке но тот же алгоритм уже не будет ей принадлежать
Евгений
а, ты о том, чтобы вывести из-под nda?
Евгений
понял, я думал наоборот, чтобы всё оставалось в рамках
Евгений
тогда почему именно дарт?
Andrey Unger
так собственно что с нормальным ОРМ для постгриса в дарте?
Евгений
он же для бэка такое себе
Andrey Unger
нравиться он мне) да и производительность по сравнению с нодой примерно такаяже
Евгений
имхо, логичнее выбрать go)
Евгений
да просто не общепринято, соответственно натыкаешься на проблемы отстутствия нужных либ
Sergey
кто знаете группу где могут помочь с написанием платформенного кода для Windows(в контекста flutter) ?
Andrey Unger
так еще и фронт к этому бэку переписывать с реакта на флаттер. так что логичние все на одном языке сразу запилить)
Andrey Unger
да либ хватает, просто их слишком много и хз какая лучше)
Adel Gilyazeev
[
"Попробуй поиграть с кодом\n\n",
{
"type": "pre",
"text": "import 'dart:io';\n\nconst count = 100;\n\nvoid main(List args) async {\n /// Создаём все файлы синхронно\n for (var i = 0; i < count; i++) {\n File('$i.txt').writeAsStringSync('Hello from $i');\n }\n\n final f = [];\n\n for (var i = 0; i < count; i++) {\n /// Говорим ему, чтоб после считывания он печатал содержимое файла\n f.add(File('$i.txt').readAsString().then(print));\n }\n /// До этого места эта функция ниразу не прерывалась, соотвественно другие функции не могли перехватить управление\n /// Если здесь сделать какие то огромные вычесление на много времени без перерыва, то данные файлов не будут распечатаны, пока эти вычесления не закончатся\n\n /// Ждём пока все файлы распечатаются\n /// Вот полсе этой строки функция прерывается и начинает ждать пока всефьючерсы закончатся\n /// А каждый фьючерс будет закончен только после распечатки содержимого файла, который будет получен только после прочтения\n /// Так как мы вызывали уже выше File().readAsString(), то чтение уже началось и обрабатывается системой\n /// Но print для них начнёт выполняться только сейчас\n await Future.wait(f);\n print('Its end!');\n}",
"language": ""
},
""
]
Cat-Wizard Ashere
Окей, я тут попробовал и понял, что если перенести синхронный код выше асинхронного сначала выполнится синхронный, а после него начнется выполнение асинхронного. Спасибо за ответы. Было весьма информативно
Руслан абу Ахмад "Маджхуль Халь" Халиков
если алгоритм нестандартный ... в лицензии на код четко прописывается что можно а что нельзя. Переписывать код НДА тоже может запретить и обычно запрещает
Andrey Unger
нет лицензии на код. просто стандартный нда для наемного сотрудника который решает ежедневно рабочие задачи. Т.е нет продуктовой разработки. Только потоковая.
Руслан абу Ахмад "Маджхуль Халь" Халиков
LICENSE = public?
Руслан абу Ахмад "Маджхуль Халь" Халиков
COPYRIGHT файла нет?
Adel Gilyazeev
у тебя тут по сути синхронный код, потому что никаких других задач во время ожидания нет
Cat-Wizard Ashere
Ну я вот так переписал потестить. Увидел разинцу
Adel Gilyazeev
а ещё никогда не вызывайте в геттера асинхронные функции
Adel Gilyazeev
я не мог понять почему после паузы отладчика, программа заверашлся с исключением, а без пауз нормально отрабатывала
Cat-Wizard Ashere
Геттер плохо дружит с асинхронными вызывами?
Adel Gilyazeev
отладчик их автоматически вызывает, тем самым наводит суету в твою асинхронность
Adel Gilyazeev
ну при остановке/паузе
Олжас Сулеймен
кто то же "должен" их написать, и кто то писал для ноды
Adel Gilyazeev
хотя с этим можно жить, но отлаживать такое трудновато
Олжас Сулеймен
вот и первенцы
Олжас Сулеймен
я вот jinja2 на беке толкаю, хотя сейчас замедлился
Олжас Сулеймен
ташю плюшки с питона
Double Cat. ????
[
"Подскажите можно ли в дарте сделать примерно так:\n\nType type = if(условие) {\ntype = Type.SELL;\n} else {\ntype = ",
{
"type": "link",
"text": "Type.BUY"
},
";\n}\n\nНе вынося отдельно if и type, скажем так в oneline сделать"
]
Adel Gilyazeev
[
{
"type": "code",
"text": "Type type = (условие) ? Type.SELL : Type.BUE;"
},
""
]
Double Cat. ????
не, if else может быть несколько
Double Cat. ????
сорян, не уточнил)
Adel Gilyazeev
вкладывай тернарные условия
Adel Gilyazeev
я порой делаю, когда 2-3 условия всего
Double Cat. ????
или может можно как-то через switch в «oneline» сделать? В котлине можно и через if и через when сразу присвоить…вот и интересно стало, можно ли в дарте такое провернуть?
d
В Дарте такого нет вроде
Adel Gilyazeev
[
"Тогда если тебе нравятся if, тогда делай так\n",
{
"type": "pre",
"text": "var f = (){\n if(i<0) return 0;\n if(i<10) return 10;\n if(i> 20) return 30;\n return 20;\n}();",
"language": ""
},
""
]
Adel Gilyazeev
ну или вот как я в примере выше сделал замени свитчём, но свитч не может в условия, он строго сравнивает
Adel Gilyazeev
я тоже так иногда делал
Adel Gilyazeev
оборачивал кусок кода в функцию и её же вызывал, удобно для стрелочных функций
Double Cat. ????
оо вроде выглядит интересно, спасибо)
Double Cat. ????
да, знаю
d
Ну effective dart на такое ругаться будет вроде)
Double Cat. ????
Есть какие-то подводные камни? лучше такое не юзать?
Adel Gilyazeev
спору нет... Ибо функция получается динамической с замыканием, правильнее будет в отдельную статическую функцию вынести
Adel Gilyazeev
лучше не юзать
Adel Gilyazeev
я юзаю лишь когда не хочется разворачивать однострочку в блок, а мне над как то в строке переменную новую создать и её обработать и лишь потом результаты вернуть
Double Cat. ????
вот одна еще из причин почему искал такое решение
Double Cat. ????
понял, спасибо
Oleg
Есть ли адекватная альтернатива multi_image_picker? Автор забросил проект
Урусай
Всем ещё раз привет! Кто нибудь знает как уменьшить элементы во flutter inspector? У меня там элементы будто экран 640х480 )))
ManBearPig
Странно у меня было что то подобное когда шрифты из пакета грузились, а не аз assets
Bobby
Text виджет оберните в Material
Николай
Добрый день. Подскажите. В своем приложении хочу использовать 2 библиотеки. Но - одна из них (А) использует зависимость от xml 5.0.0, а другая (Б), которую хочу установить, xml 4.1.0. И похоже, что Б заброшена. Есть ли выход?
Juko
Как можна остановить скачку flutter pub get?
ManBearPig
В виджет сархнего уровня? Зачем поясните , интересно и мне стало .
ManBearPig
Закрыть студию или консоль )
Juko
Так она в следующем запуске возабновлается
Урусай
Убей процессы dart.exe
ManBearPig
Так без пакетов того же intl как? )
Bobby
Просто текст виджет в Material Например: Material(child: Text(“hi”))
Bobby
Это я на курсе видел На skillbox Такая же проблема была
ManBearPig
Ну тут только материал или купертино виджеты. Как это поможет с темой, если её в первом классе указывают , после входа
ManBearPig
Ок тогда просто запомню ) интересно однако ,
ManBearPig
У меня слетела тема (шрифты ) когда использовал пакет google fonts
ManBearPig
Особенно, когда условный текст анимируется , когда выкачать нужные шрифты и добавил ссылку в assets асе норм стало )
Bobby
Я вам не могу подсказать по этому вопросу. Просто я увидел вопрос по Hero анимации и вспомнил, что таклй же баг видел при просмотре курсов. ?????>?
ManBearPig
Ок , в любом случае интересный кейс ) запомню)
ManBearPig
И в material вы сторой раз свойство theme не указывали , верно? Оно у вас было прописано в первом классе ?
Bobby
Ничего не указывал)
ManBearPig
Ок все просто баг)все записали на будущее себе )
Bobby
Надеюсь, кому-то поможет)
Павел Бабинцев
Всем привет
Павел Бабинцев
[
"Друзья, кто делал бэк на Яндекс Клауд (",
{
"type": "link",
"text": "cloud.yandex"
},
")? Поделитесь опытом, стоит ли, удобно ли?"
]
ManBearPig
Я всю анимацию через amimation builder делаю , проблем таких не было замечено )
ManBearPig
Привет , мы не юзали их сервисы. Совсем)
Павел Бабинцев
Такое ощущение, что заявлена вполне себе хорошая штука: и функции (логика), и СУБД - и это всё без инстансов, в облаках
Павел Бабинцев
Вот интересен опыт, если есть
Kit Khilobok
Хостили один из сервисов там, вещь мощная и удобная, особенно если настроить всё по красоте
Kit Khilobok
Ну тут каждый сам смотрит, на норм было, вообще я цены не сравнивал
Andrew Vasilevskii
Можно попробовать через dependency_overrides в pubspec
Radomir Epur
работать можно, но мне лично больше зашел AWS
Daniil Razbitskiy
Добрый вечер, подскажите, нужно вывести кнопу в Appbar для возврата на предыдущую страницу, как лучше это сделать?
Andrew Vasilevskii
ну первое, есть дефолтная там флаг showLeading или что-то такое, ну и можно свой кастомный виджет запихнуть в leading
Eugene
настройки-> languages and frameworks -> flutter -> снимаешь нижнюю галочку в поле эксперименты. Перезапускаешь. Должно помочь
Николай
Это сработало. Но на всякий случай спрошу, можно ли вообще скопировать в проект эту проблемную библиотеку? А потом в лицензи пейдж добавить информацию о ней?
Misha
[
"Привет, друзья! Допустим в одном месте функция вызывается как ",
{
"type": "pre",
"text": "myFunc() {}",
"language": ""
},
" , а в другом, как: ",
{
"type": "pre",
"text": "myFunc(name){}",
"language": ""
},
" . ",
{
"type": "pre",
"text": "name",
"language": ""
},
" я могу проверить на пустоту, а там где вызывается myFunc() {} ошибка. Как сделать проверку на наличие аргумента в функции?"
]
ManBearPig
Var r; r:!null?r+1:r
ManBearPig
":" во второй строчке лишние )
ManBearPig
Второй вариант короче и тоже самое)
Adel Gilyazeev
null+1 вызовет исключение
Radomir Epur
Стабильностью и работой с консолью. У Yandex постоянные ошибки вылетали, консоль была на порядок медленнее по сравнению с AWS, да и в целом AWS удобнее мне показалась.
Denis
Подскажите пожалуйста, мне нужно преобразовать такое в json, как можно это сделать? Map
Adel Gilyazeev
увы, ключами в JSON могут выступать лишь строковые объекты... Можешь ключ раскрыть, т.е преобразовать Map в |
|
|