Программирование : Dart & Flutter по-русски
Анатолий
Работать сможешь точно, но может быть сложно
Victor
я не сильно понимаю что хочет гугл и какие у них планы на дарт
Victor
иногда ощещение что это топ цель, а иногда что они забили на него
Анатолий
Ангуляр хорош, флаттер хорош
Анатолий
У них очень много кода написаного на дарте, если его переписать на сях повысится производительность, вот этого момента я жду очень
Victor
почему им не сделать развитие языка открытым процессом? почему при том что на айо офигительно сделали дарт хайп тематику официальные твиттер акки ведут боты которые криво парсят реддит для сео?
Evgeny Kot
Ну я тут не соглашусь, очень много твиттер новостей от самих разработчиков или менеджеров
Анатолий
Я думаю это эксперимент, когда его выпускали хотели затмить жс, но не получилось ??
Анатолий
Если флаттер стрельнет, то дарт будет чуть быстрей развиваться как язык, но не факт что это отразится на беке
Victor
[
{
"type": "link",
"text": "https://twitter.com/FlutterWk?lang=en"
},
" 9 сентября последний пост)"
]
Анатолий
Мне нравится жс и не нравится его типизация, по этому нравится дарт
Victor
щас ботоакки не найду уже, там были типа новости флаттера и дарта
Victor
и недавно они сломались и стали криво репостить
Victor
почему им не нанять человека который работал бы с комбюнити и вел аккаунты хотя бы?
Анатолий
Зачем человек, если бот работает?
Анатолий
Заметят поправят и еще на пол года забыли
Victor
ну так репост рандомных постов с реддита такой себе контент)
Victor
или в том же жс ты можешь зайти в репу tc39 и почитать что за фичи ждут в будущем, а где посмотреть что будет в дарте?
Анатолий
У дарта меньше комьюнити, и значит они не успевают все делать. Когда-то и у жс такого не было
Victor
и ведь решение таких комьюнити ориентированных вопросов это мелочь для гугла по сравнению с самой разработкой дарта, я реально не знаю почему они это не делают
Анатолий
Ну сравни тут комьюнити с нодой и го, они раз в 5 больше
Анатолий
Нельзя людей просто собрать и сказать все, теперь вы комьюнити
Victor
на айо ж вышло все по высшему разряду)
Анатолий
На айо небось людей крутых пригласили?
Анатолий
Повседневно они работают ??
Evgeny Kot
Советую читать Tim Sneath, Wim Lerer, Filip Hracek
Анатолий
В твиттере или книги пищут?
Victor
Wim Lerer его не нашло чет
Victor
Filip Hracek крутой чувак)
Evgeny Kot
[
"а, он переименовался ",
{
"type": "link",
"text": "https://twitter.com/flutter_wm"
},
""
]
Анатолий
Паб обновили, теперь он показывает сколько очков добавится если исправить бока
???????
В мемориз просто)
Danny
Кто-то писал игры на флаттере?
Danny
Раньше этот чат назывался просто Dart, без Flutter. Теперь 2 флаттер чата и я хз куда писать
Анатолий
Тут обсуждали игры, все плохо с ними
Анатолий
Вернее не плохо а рано
Danny
ну простенькую же создать можно?
???????
Именно. Пока что можешь писать визуальные новелки или карточные игры
???????
Ну или тетрис со змейкой)
Danny
агарио можно написать без онлайна?
???????
Ребята на нативном 1с'е сетевые танчики пишут
???????
А в 1с'е даже слипов и таймаутов нет, если что)
Анатолий
А есть библиотеки для работы со спрайтами?
Danny
Та там всего две либы и вроде как одна может
Анатолий
Ну норм тогда ?? пиши
Danny
Я просто хотел спросить у тех, кто пытался писать игры на флаттере. Насколько быстрее я напишу простую игру на флаттере, чем на нативном андроиде, если никогда игры не писал?
Anton Kazakov
а что на нативном андроиде кто то игры пишет?
???????
А почему ты должен быстрее писать на дарте чем на котлине?)
Анатолий
Ну для тех же марио какая никакая а нужна физика
Анатолий
Как минимум взаимодействие
Анатолий
Думаю на андроиде шансов больше
Danny
ну если писать не игры, то флаттер в разы быстрее андроида. Мб в играх так же)
Анатолий
Кокос вообще супер, он есть под все
Anton Kazakov
в разы быстрее андроида?))
???????
На нем не быстрее писать. На нем быстрее исполняется и кроссплатформено.
Анатолий
Дело не в дарте, дело в библиотеках для задачи, для юи все супер, для игр слабо, сам видел
???????
принципиального различия дарта и котлина тут нет и там и там одни и теже потоки
Anton Kazakov
какие потоки)
Danny
написать экранчик, который отображает данные и красиво их показывает на флаттере реализуется в разы быстрее
???????
Или вы сели за флаттер и делаете синхронщину?
Danny
потому что кода меньше
Anton Kazakov
во первых причем тут какие то потоки если джвм и флаттер вм вообще ращзные вещи
Anton Kazakov
во вторызх в дарте не потоки а изоляты
Anton Kazakov
причем вообще тут потоки когда разговор про фпс
???????
[
{
"type": "link",
"text": "https://pub.dartlang.org/packages/rxdart"
},
"\nТак и запишем, изолента"
]
???????
Разговор не про fps
???????
а про скорость написания кода
???????
И разработки в целом
Anton Kazakov
а потоки тогда причем тут вообще
Anton Kazakov
если ты про скорость разработки
???????
При том, что цикл и синтаксис разработки идентичный
Anton Kazakov
идентичный с кем
???????
У вас уже вечер пятницы там?)
Anton Kazakov
Похоже у вас пятница) во первых что подразумевается под потоком? Реактивный стрим или концепция тредов в джаве
Анатолий
Горшочек, не вари
???????
О боже мой. Весь разговор у нас вырисовывается в духе: что лучше, "жаба или сисярп". Это все, практически идентично. Вот отличия есть между жабой, ассемблером и коболом.
Анатолий
Кстати а жаба вроде как быстрей сисярпа
???????
А сравнивать современные языки с сиподобным синтаксисом между собой это какаят специальная олимпиада) Ну да, гдето больше синтаксического сахара, где то меньше. Ну чтото компилится, чтото jit, чтото на виртуальной машине исполняется, чтото интерпретируется, вообще покс.
Анатолий
Вроде даже серьезно
???????
"На чем написать игру под ведро, если без фреймворков": на чем умеешь
???????
Вконтакля на php доисторической версии писалась. PHP доисторической версии сильно быстрее жабы?)
???????
Байтоебство не интересно конечному потребителю)
???????
Ему надо продукт)
Анатолий
Конечно нет, там компенсируют кешированием и количествлм серверов
???????
Ну вот, главное продукт и $$$ с него.
???????
Если стартап выстрелит - всегда сможешь выпустить вторую версию)
Анатолий
Или просто докупить серверов
???????
Или просто докупить серверов, если они выйдут дешевле разработки и миграции
Anton Kazakov
Лол так это не я сказал что на дарте быстрее что то исполняется
Artem Halas
[
"Всем привет.\nКак я понял в AngularDart чтобы отправить ",
{
"type": "code",
"text": "FormData"
},
" необходимо использовать ",
{
"type": "code",
"text": "HttpRequest.request"
},
", но вопрос заключается в том как мне получить ",
{
"type": "code",
"text": "response"
},
" с типом ",
{
"type": "code",
"text": "Response"
},
"?"
]
???????
А что возвращает, Future?
Artem Halas
[
"Вот кусочек кода, вызывает ошибку, так как ",
{
"type": "code",
"text": "extractData"
},
" ожидает ",
{
"type": "code",
"text": "Response"
},
" а получает ",
{
"type": "code",
"text": "String"
},
"\n\n",
{
"type": "link",
"text": "https://gist.github.com/artem-galas/6f1d4c4ac835cf518dacb15269277ac7"
},
""
]
Artem Halas
[
{
"type": "code",
"text": "String"
}
]
???????
Смотри, ты все правильно, вроде делаешь. Но response у тебя возвращает dynamic
???????
[
{
"type": "pre",
"text": "import 'package:http/http.dart';",
"language": ""
}
]
???????
Вот тут должно возвращать Future
???????
[
"Я не знаю зачем именно тебе понадобился Response, если ответ и так уже есть, но можно вызвать через конструктор\n",
{
"type": "pre",
"text": "new Response(body, statusCode);",
"language": ""
},
""
]
Artem Halas
[
"Ну он мне нужен, чтобы преборазовать ответ с сервера в нормалый объект класса\n\nсделал вот так\n",
{
"type": "pre",
"text": " return Observable\n .fromFuture(request)\n .map((request) {\n var resp = new Response(request.response, request.status);\n\n return PostModel.fromJson(httpUtil.extractData(resp));\n })\n .handleError((e) => throw httpUtil.handleError(e));",
"language": ""
},
"\n\nне уверен правильно ли, но во всяком случае работает"
]
???????
Ну если вам не принципиально, чтоб был именно Response из пакета package:http/http.dart То просто создайте собственный класс и сериализуйте в него.
Artem Halas
[
"Пока не понял что ты имеешь ввиду.\nНо все равно мне нужен Response именно из ",
{
"type": "code",
"text": "http/http"
},
""
]
???????
[
"А почему бы тогда и запрос не делать из пакета ",
{
"type": "code",
"text": "http/http"
},
" ?"
]
???????
Там в ответы на post и get возвращается именно Future
Artem Halas
[
"Отличный вопрос.\nДело в том что я не понял как отправить запрос с FormData используя ",
{
"type": "code",
"text": "http"
},
" (и не уверен возможно ли) в интернэтах все говорят использовать ",
{
"type": "code",
"text": "HttpRequest"
},
""
]
???????
Наверняка это более чем возможно, в 1с'ке я его руками собирал вообще)
???????
Если вкрации, то в FormData - вы посылаете параметры с разделителями и оно позволяет посылать в себе еще и файлы.
???????
Сейчас с вики пример копирну
???????
[
{
"type": "pre",
"text": "POST /send-message.html HTTP/1.1\nHost: webmail.example.com\nReferer: http://webmail.example.com/send-message.html\nUser-Agent: BrowserForDummies/4.67b\nContent-Type: multipart/form-data; boundary=Asrf456BGe4h\nContent-Length: (суммарный объём, включая дочерние заголовки)\nConnection: keep-alive\nKeep-Alive: 300\n(пустая строка)\n(отсутствующая преамбула)\n--Asrf456BGe4h\nContent-Disposition: form-data; name=\"DestAddress\"\n(пустая строка)\nbrutal-vasya@example.com\n--Asrf456BGe4h\nContent-Disposition: form-data; name=\"MessageTitle\"\n(пустая строка)\nЯ негодую\n--Asrf456BGe4h\nContent-Disposition: form-data; name=\"MessageText\"\n(пустая строка)\nПривет, Василий! Твой ручной лев, которого ты оставил\nу меня на прошлой неделе, разодрал весь мой диван.\nПожалуйста забери его скорее!\nВо вложении две фотки с последствиями.\n--Asrf456BGe4h\nContent-Disposition: form-data; name=\"AttachedFile1\"; filename=\"horror-photo-1.jpg\"\nContent-Type: image/jpeg\n(пустая строка)\n(двоичное содержимое первой фотографии)\n--Asrf456BGe4h\nContent-Disposition: form-data; name=\"AttachedFile2\"; filename=\"horror-photo-2.jpg\"\nContent-Type: image/jpeg\n(пустая строка)\n(двоичное содержимое второй фотографии)\n--Asrf456BGe4h--\n(отсутствующий эпилог - пустая строка)",
"language": ""
},
""
]
???????
Вот в данном примере параметры разделены разделителем "--Asrf456BGe4h"
???????
[
"Вот этот разделитель вы передаете в заголовке: \n",
{
"type": "pre",
"text": "Content-Type: multipart/form-data; boundary=Asrf456BGe4h",
"language": ""
},
""
]
???????
Он может быть абсолютно какой хотите, это просто набор букв
Анатолий
Вы слишком глубоко ушли
Artem Halas
[
"да все верно, вот просто попробуй отпрввить ",
{
"type": "code",
"text": "image"
},
" через FormData используя ",
{
"type": "code",
"text": "http"
},
""
]
???????
Ага, image надо конвертнуть в base64 строку
???????
[
"А вообще есть пример же:\n",
{
"type": "pre",
"text": "var uri = Uri.parse(\"http://pub.dartlang.org/packages/create\");\nvar request = new http.MultipartRequest(\"POST\", url);\nrequest.fields['user'] = 'nweiz@google.com';\nrequest.files.add(new http.MultipartFile.fromFile(\n 'package',\n new File('build/package.tar.gz'),\n contentType: new MediaType('application', 'x-tar'));\nrequest.send().then((response) {\n if (response.statusCode == 200) print(\"Uploaded!\");\n});",
"language": ""
},
""
]
???????
Яб попробывал, но я уже убегаю с работы домой)
Artem Halas
Суть FormData в том что можно передавать бинарные типы без преобразовывания в base64 это не есть решением.
???????
Я очень сомневаюсь, что нельзя с помощью http/http отправить multipart
???????
Ну значит надо глянуть как отправляется binary формат
Artem Halas
да возможно, но пока единственно что я нашел через HttpRequest он и отправляет binary формат
???????
Подождите-подождите)
???????
[
{
"type": "link",
"text": "https://pub.dartlang.org/documentation/http/latest/http/MultipartRequest-class.html"
},
"\nВот этот запрос"
]
???????
[
"Вот в нем можно передавать:\n",
{
"type": "link",
"text": "https://pub.dartlang.org/documentation/http/latest/http/MultipartFile-class.html"
},
""
]
???????
MultipartFile.fromBytes() - случайно не подходит?
Artem Halas
нет, так как у меня File а не масив байт. Сейчас попробую MultipartRequest
???????
Я на 99% уверен, что можно отправить файл в нужном вам формате с помощью одного только http/http. Даже если не подходит стандартный MultipartRequest - можно собрать тело ручками (что мне иногда и приходится делать). Также если у вас не получится и вы всеравно подключаете две библиотеки для работы с запросами, можете попробывать просто воспользоваться конструктором Response
Анатолий
Тут в самом начале пример с отправкой файла в форме
???????
Да, просто у него не выходит, почемут. Сам файл внутри формы может передаваться разными способами.
???????
Может как двоичные данные или как base64 строка
???????
Видимо у него бэкэнд прихотливый
Анатолий
У него файл уже готов
Анатолий
Просто надо его отдать
???????
Да, файл есть. Но как ты его будешь передавать?)
???????
Телепортировать?) Его сначало надо привести в какойто вид для передачи
???????
И отдавать либо строкой, либо набором байт.
Анатолий
new http.MultipartFile.fromFile
???????
И судя по всему, его бэкэнд кочевряжится.
Artem Halas
[
{
"type": "pre",
"text": "fd = new FormData\nfd.appendBlob('image', image);",
"language": ""
}
]
Artem Halas
та это и было написано. Сейчас пробую с MultipartRequest
???????
Давай, надеюсь получится) Я домой)
Artem Halas
[
"такого же метода не существует, или я не туда смотрю?\n",
{
"type": "link",
"text": "https://pub.dartlang.org/documentation/http/latest/http/MultipartFile-class.html"
},
""
]
???????
Обрати внимание, что файл там можно запихнуть с помощью разных фабрик и у получившегося объекта есть поле contentType - которое видимо значит каким образом он будет передаваться) Но это не точно)
???????
[
{
"type": "pre",
"text": "import 'package:http/http.dart' as http;\nhttp.MultipartRequest(...);",
"language": ""
}
]
???????
Какже не существует?)
???????
Вон, студия подсказывает даже
Artem Halas
[
"я говорю о\n",
{
"type": "code",
"text": "MultipartFile.fromFile"
},
""
]
???????
[
{
"type": "link",
"text": "https://pub.dartlang.org/documentation/http/latest/http/MultipartFile-class.html"
}
]
???????
Есть конструктор по умолчанию, с помощью потока. Есть с помощью массива байтов Есть из строки
Artem Halas
[
"и ниодного из ",
{
"type": "code",
"text": "File"
},
" :)"
]
???????
[
{
"type": "link",
"text": "https://pub.dartlang.org/documentation/http/latest/http/MultipartFile/fromPath.html"
}
]
???????
Есть по пути, вроде)
???????
[
{
"type": "pre",
"text": "http.MultipartFile.fromPath(field, filePath)",
"language": ""
}
]
???????
Все, я убежал, а то точно заночую в офисе)
Анатолий
Хороший вопрос, а в доке он был, там где форма ??
Artem Halas
[
"да есть такое, но\n\n",
{
"type": "code",
"text": "Throws an UnsupportedError if dart:io isn't supported in this environment."
},
""
]
Artem Halas
Вообщем все пока остается также как и на gist :) К Решения по лучше мы непришли
???????
Давай еще разок. Вот у тебя уже есть File
Artem Halas
Верно, юзер его выбрал
???????
Если попробуешь сделать так: List value = await file.readAsBytes ();
???????
А потом так: MultipartFile.fromBytes(value)
???????
А потом получившееся отправить.
Artem Halas
[
"я уже завтра попробую.\nНо все равно, в таком случае мне придется делать функцию async а я хочу возвращать ",
{
"type": "code",
"text": "Observable"
},
" а не ",
{
"type": "code",
"text": "Future"
},
""
]
???????
Я не большой знаток асинхронщины и потоков, но что если добавлять Future в один поток, ожидать это все и перекидывать в другой результат.
???????
Ну или сразу ожидать будующее прочтения файла и уже дальше делать как делали
Artem Halas
Ну да как вариант можно. Попробую завтра
Олжас Сулеймен
[
{
"type": "link",
"text": "https://github.com/yjbanov/butterfly"
}
]
Олжас Сулеймен
судя по логам автор вспомнил про него
Artem Halas
[
"такс, попробвал, и осознал то что File у меня то из ",
{
"type": "code",
"text": "html_dart2js"
},
" а не из ",
{
"type": "code",
"text": "dart:io"
},
" поэтому у него нет такого метода."
]
???????
Ну в любом случае его можно превратить в набор байт иди строку, уверяю)
First Last
[
{
"type": "mention",
"text": "@bunopus"
},
" топовый доклад)\n\nПасиба"
]
Ernest Stanbekov
Ребят, что это вообще? Future?
Ernest Stanbekov
Я думал это название переменной
???????
Это аналог Task в сишарпе
???????
или промайзов в жс
Ernest Stanbekov
Оок, буду гуглить)
???????
Я могу объяснить очень просто
???????
У тебя есть некая функция, она возвращает некое значение, но может работать долго
???????
Например тебе надо загрузить из интернета большой файл
???????
Естественно она вернет этот файл не моментально
???????
Вот в таком случае она сразу возвращает Futute
???????
А если подождать её завершения - то будет уже сам File (ну или ошибка получения :) )
|