Программирование : Dart & Flutter по-русски
AdamantinumBalls
Вот мне, кстати, было бы интересно какое-то исследование на тему на сколько сложнее найти хорошего рубиста vs питониста например
AdamantinumBalls
Т.е. мнение то расхожее и логичное и тем не менее интересны цифры, пруфы
Max
Для бэкэнда Flutter-приложения я бы в 2020 выбирал между C#, Kotlin и Go, в зависимости от задач и технологического стека в наличии. Ну, и Dart, как вариант сокращения технологического стека)
Max
Я не HR, но можно просто сравнить количество результатов на HH
AdamantinumBalls
Не это не то. Вот пхп много, но и там много того, что тебе не надо. Выбирая питон или руби ты сразу много лишнего отсеиваешь. Банально меньше резюме надо просмотреть надо будет и они будут качественнее, возможно очень сильно
Max
Я специально написал, что не стал бы рассматривать ни PHP, ни Python.
AdamantinumBalls
Ну c# частично пересекается с моим примером, там далеко не все веб как я понимаю. Для 99% руби=рельсы=веб. Go нишевой: микросервисы и где производительность нужна. Там скорее всего нет такой классной обвязки под веб как в лаварел, джанго, рельса. Про котлин для веб ничего не знаю кроме того что это java и Android
Max
Ещё раз поясню, что преимущества статической типизации на фронте сводятся на нет динамически типизированным бэкэндом. Мощные веб-фреймворки разумеется, есть на всех языках, которые я предложил.
AdamantinumBalls
???> у меня динамическая типизация проблем не вызывает никаких. Валидации в моделях или формобъектах + грамотные констрейны в бд защищают от очень многого. Да и в graphql есть типизация. Логические ошибки самые каверзные, а от них типизация не спасает
AdamantinumBalls
Самые глупые ошибки новичков самоучек, которые прям бесят, это вообще не ставить такую вещь как уникальный индекс там где это нужно. И где-то на 3 месяц работы приложения в проде обнаруживается что в какую-то таблицу писались повторные данные и там куча дубликатов и всё оказывается не правильно считается/обрабатывается. А всего то надо было правильно бд создать. Про динамическую типизацию ничего столь же эпичного не припомню
Max
Мне кажется, в исходном вопросе не шла речь о новичках-самоучках...
Flow
Мужчина с 2 железными эллипсоидами вращения, на фотографии профиля, пытается навязать своё мнение. Он прокомментировал это так: - Я торговал риг, фтр и чиз. Результаты очевидны.
admin
Я генерирую элементы drawer у Scaffold в функции. Как из этой воспомогательной функции вызвать сет-стейт родительского виджета?
admin
Генерирую массив виджетов при нажатии на который должен вызываться setState
admin
Я попробую сделать функцию методом класса родительского виджета
Max
Функцию можно передать в виджет в качестве параметра.
Danil Hodger
Всем привет, направьте на путь истинный), коротко, push уведомления, когда приложение не активно, куда капать, алгоритм действия?
Max
Firebase messaging service
Max
[
{
"type": "link",
"text": "https://pub.dev/packages/firebase_messaging"
}
]
admin
[
"У меня есть стейт, в нём в билде завязка существует на некоторые атрибуты этого стейта, но по дефолту они null. В ",
{
"type": "code",
"text": "initState()"
},
" я заполняю это свойства, но походу билд вызывается раньше и возникают ошибки связанные с отсутствием данных"
]
admin
Добавил через ?? дефолтное значение, надеюсь это правильно
admin
[
"После перехода по роуту через ",
{
"type": "code",
"text": "pushNamedAndRemoveUntil"
},
" у виджета не вызывается ",
{
"type": "code",
"text": "initState()"
},
", как правильно сделать перерисовки при роутинге?"
]
admin
У меня стейт обновляет только когда я Ctrl+S жму
admin
До этого тупо не отрисовывает изменения
admin
Я ебло, нужно было просто внутри initState вызвать setState и всё заработало. Очень сложно понимать работу с состояниями новичку (особенно как там навигатор вызывает его)
admin
[
"Ахах, я такое говно пишу просто шок, через ",
{
"type": "code",
"text": "shared_preferences"
},
" в каждом файле виджета, даже не понимаю как правильно прокинуть между виджетами данные господи прости"
]
admin
никогда не пускайте бекендеров на фронт
Max
Просто нужно привыкнуть к асинхронщине и стейт-менеджменту. Приходит с опытом
admin
Но вообще очень нравится, понимаю что много чего есть выучить, но и уверенность в том что много всего сделать можно. Прямо крутой язык и фреймворк
admin
(под мобилки пробовал на питон kiwi писать, так там ваще кал собаки, по сравнению с флаттером)
Max
[
"Чтобы не писать в shared preferences всё, рекомендую посмотреть ",
{
"type": "link",
"text": "https://pub.dev/packages/provider"
},
".\n\nЭто самый базовый вариант, но по крайней мере можно будет понять - хватит его или нужно что-то более мощное."
]
Amigo 177
Кто нибудь может объяснить почему внутри контейнера нужно завернуть виджет?? Часто вижу в туториалах такое
Andreu
Ну в твоём случае он имеет фиксированные размеры. А по жизни это просто виджет, у которого быстро можно менять цвет,границу, тени и прочие декорации
Serge Matveenko
Сначала, надо чтобы все зависимости были null safe, в том числе dev. Поэтому у меня на очереди chrome_driver_protocol, после Flame.
?? ??????????????????????????
Dart + grpc
Oleg Pchelkin
Когда есть просто заранее известные размеры - то лучше юзать sizedbox вместо контейнера. И сделать его const
Ekaterina
всем привет, подскажите пожалуйста почему некоторые методы в Dart можно вызывать без объекта или без класса(если метод статический), а вот так?
Andrew Shalaev
В контексте самого класса можно вызывать методы этого класса без указания класса
Vyacheslav
[
"простыми словами, этот конкретный метод содержится в библиотеке material ",
{
"type": "link",
"text": "https://api.flutter.dev/flutter/material/material-library.html"
},
""
]
Ekaterina
так вот этот метод не из этого класса
Timur Karimov
это просто функция без класса
Andrew Shalaev
Тогда это просто глобальная (пакета) функция
Vyacheslav
народ, подскажите, где можно посмотреть во время дебага, сколько конкретных инстансов блока или другого объекта в памяти болтается?
Ekaterina
спасибо, теперь понятно
Kathy Ti
Подскажите как в TextField узнать позицию курсора? Например я тапнула и курсор установился между 4 и 5 символами. Как мне это значение получить?
Flow
TextEditingController
Yerassyl Maikhanov
Как сохранить документ pdf в папку загрузки?
Ilia
Всем привет. Пакет Geolocator, рисую маршрут пользователя. Когда телефон выходит из блокировки, то первая полученная координата ”скачет” от остальных. Кто нибудь сталкивался?
Kathy Ti
Да, я использую его, но не пойму как позицию курсора получить.
Andreu
TextEditingController().selection.base.offset не?
Kathy Ti
Оно. Спасибочки??.
Rishat Zakirov
Есть возможность оставлять клавиатуру открытой при смене фокуса на другой виджет? Когда фокусна TextField - клавиатура открывается. Когда нажимаю на дропдаун, клавиатура закрывается и все едет:
Mitai
по flutter web есть интересные видосы?
Randoom
Note: Flutter has early support for running web applications, but you need to be running the beta channel of Flutter at present. If you experience a problem that hasn’t yet been reported, please file an issue and make sure that “web” appears in the title. Он еще в бете…
Kit Khilobok
Работает уже сейчас приемлимо
Дмитрий
ни укого такой ошибки не возникало при сборке в android studio на mac/ios: Fingerprint write error: FileSystemException: Cannot open file, path = 'build/ios/pod_inputs.fingerprint' (OS Error: No such file or directory, errno = 2)
Mitai
дак я же для себя просто видосики посмотреть)) не выкатывать в прод)
Andrey Unger
по Flame не уверен что примут, там сейчас активно переделывают базовые компоненты, и на сколько я понял пока его не закончат смысла нет на нулл-сэйфити переводить (((. Сам жду что у них получится, а то очень уж неудобно с событиями работать в наследуемых компонентах
Юджин Баладжахе
Кто ж в видосиках будет рассказывать ньюансы, что изолятов нет и половины плагинов. А остальное не отличается вообще )
Mitai
та ну просто посмотреть, делать не чего((
admin
[
"Как мне закодировать ",
{
"type": "code",
"text": "List x = [254, 255]"
},
" в String, чтобы оно не пыталось в утф конвертировать? Мне нужно получить тупо ",
{
"type": "code",
"text": "\"\\xfe\\xff\""
},
" чтобы отправить по сети"
]
admin
[
{
"type": "code",
"text": "http.MultipartRequest"
},
" в поля ",
{
"type": "code",
"text": "fields"
},
" просит стринг"
]
Andrey Unger
[
{
"type": "code",
"text": "int.toRadixString(16)"
}
]
Andrey Unger
[254, 255].fold ('',(prev, el)=>prev+'\\x'+el.toRadixString(16)) - вот так например)
admin
[
"XD, нет, вы не так поняли. ",
{
"type": "code",
"text": "\\xff"
},
" это один байт должен быть, а оно шлёт четыре тупо"
]
Andrey Unger
ну 255 это же ff не?
admin
[
"Да, но по факту из 255 образуется строка из 4 символов - ",
{
"type": "code",
"text": "\\\\"
},
", ",
{
"type": "code",
"text": "x"
},
", ",
{
"type": "code",
"text": "f"
},
", ",
{
"type": "code",
"text": "f"
},
" (не считая \\0 в конце)"
]
Pavel Erokhin
не понятно, а чего ты ожидал?)
Andrey Unger
ну да. я просто не понимаю что вам надо. Вы сами сказали что нужна строка. А строка по умолчанию длиннее в байтах чем число
Andrey Unger
можете сделать вот так [254, 255].fold ('',(prev, el)=>prev+el.toRadixString(16)) - тогда он вам будет слать без \x
admin
Да, но мне нужно нестандартно закодировать текст, не в утф-8, тобишь чтобы любой символ строки всегда мог быть больше 127 и оно не конвертило ничего в утф
admin
[
"Вы всё ещё не поняли, я хочу чтобы вместо ",
{
"type": "code",
"text": "\\xff"
},
" слался один байт"
]
Pavel Erokhin
это невозможно, ты строку шлешь, каким образом ты вообще это представляешь себе
Дмитрий Щербаков
255 строка не может быть 1 байтом
admin
[
"Ну вот на си например:\n\n",
{
"type": "pre",
"text": "unsigned char text[] = {254, 255, '\\0'};\nsendText(text);",
"language": ""
},
""
]
admin
Но 255 это крайнее значение одного октета
Evgenii Orlov
Всем привет, как называется gesture который может обработать скользящий жест по NavigationBar. Нужно переключаться по бару не отрывая пальца.
Andrey Unger
[
{
"type": "code",
"text": "GestureDetector"
},
" же)"
]
Andrey Unger
[
{
"type": "code",
"text": "onPanUpdate"
}
]
admin
[
"Ну самым прямым, в дарте нет кодировки CP1251, я пытаюсь добавить свой энкодер, энкодер возвращает ",
{
"type": "code",
"text": "List "
},
" который мне надо в мультипарт хттп реквест засунуть"
]
admin
И послать эти несчастные байты, но я не могу
admin
[
"В питоне я бы сделал ",
{
"type": "code",
"text": "text.encode(\"cp1251\")"
},
" и оно бы сразу мне вернуло список байт которые можно в любой транспорт всунуть"
]
Andrey Unger
[
{
"type": "link",
"text": "https://github.com/Hecatoncheir/mini.parser/blob/master/lib/cp1251.dart"
},
" - чем не устраивает?"
]
admin
Тем что это декодер
Дмитрий Щербаков
[
{
"type": "link",
"text": "https://gist.github.com/PlugFox/4c3886456790e74b3da94c69ca7b28cc"
}
]
Evgenii Orlov
Пробовал, но он отрабатывает если лизнуть конкретную иконку, а по всему бару не отрабатывает. Хотя GestureDetector стоит на весь бар
Evgenii Orlov
ощущение что что-то перебивает
Fasater Alexander
Всё не как не могу поставить qr сканер в свой проект, есть тот кто может помочь? Может есть какие то библиотеки или исходники? Помогите пожалуйста
admin
[
"Вот у меня есть в дарте строка в утф-8, стандартная. Приложение куда я шлю строку поддерживает только CP1251. Мне надо сконвертировать строку и послать через ",
{
"type": "code",
"text": "http.MultipartRequest"
},
" и я никак не могу"
]
Andrey Unger
так вы его куда повесили то?
admin
Меня язык форсит использовать утф
Дмитрий Щербаков
и правильно делает
admin
Вот из реализации мультипарт риквеста
Дмитрий Щербаков
а что за приложение такое которое не понимает utf если не секрет?
admin
И в интерналы стринга я влезть не могу, там походу код пониже уровня вызывается, да и нарушает инкапсуляцию
admin
Просто ни в одном из языков такой проблемы не возникает, раст, голанг, питон, джава, шарп, с/с++
admin
А тут прямо минут 30-60 об такую незначительную проблему бьюсь головой
Pavel Erokhin
потому что фигней страдаешь какой-то
Pavel Erokhin
у тебя нигде не получится сделать то, что ты пытаешься
Anatoliy Razumov
[
{
"type": "link",
"text": "https://pub.dev/packages/barcode_scanner"
}
]
Pavel Erokhin
технически невозможно это сделать
Pavel Erokhin
передать строку с данными в другой кодировке, чтобы ее контент вышел меньше размером байт чем оригинальные данные в цифрах
Andrey Unger
[
"недавно ставил вот это ",
{
"type": "code",
"text": "qr_code_scanner"
},
" - работает без проблем)"
]
admin
ПФФФФФФФФФФФФФФФФФФФФФФФФФФФФФФФФФФФФФФФФФФ
admin
Это стандартная задача программиста лол
Pavel Erokhin
Которую ты решаешь заведомо неправильно, на" других языках"ты бы байты гонял, а тут строку гоняешь
Дмитрий Щербаков
строка не может быть в байтах меньше чем число которое она представляет
admin
Число 255, строка "\xff", что равно одному байту
admin
Вы учились в вузе вообще?
Дмитрий Щербаков
в какой кодировке?
Pavel Erokhin
ты не много не понимаешь, что ты делаешь и пытаешься сделать
Pavel Erokhin
ты это неправильно делаешь)
Дмитрий Щербаков
в вузе учились, у нас бэк на utf-8 )
admin
Всмысле в какой кодировке? Это сейчас без контекста строк, это про данные
admin
Число 255 это 1 байт
Дмитрий Щербаков
ты передаешь String
Дмитрий Щербаков
это не байт
Дмитрий Щербаков
у тебя не бинарный протокол а http
admin
Почему я не могу уйти от принудительного utf-8 в стринге
Pavel Erokhin
это невозможно
Дмитрий Щербаков
неважно что там будет эт овсе равно будет String со всеми вытекающими
admin
Ясно, веб работал раньше на десятках кодировок лет 30 и тут вы пришли и сказали что хттп текстовый и всё должно быть в утф, ага
Alexey Z
А в чем суть вопроса? Байтов поменьше слать?
admin
Нет, перекодировать UTF-8 строку в CP1251, и послать в ней
admin
И конкретно CP1251 использует строго 1 байт на символ
admin
???? Откуда вообще такие вопросы возникают
admin
Приложение поддерживает только CP1251, на которое шлётся эта строка
Pavel Erokhin
потому что ты страдаешь фигней
Alexey Z
Этот вопрос всегда надо задавать )
Alexey Z
ну так конверти и отсылай. Ну а почему нельзя сделать UTF?
admin
Потому что приложение существует больше десяти лет. Ну так я конверчу в List или ByteData, но отправить не получается. Отправляю через пост запрос http.MultipartRequest.
Дмитрий Щербаков
encode('cp1251') в дарт конверт не работает чтоли?
admin
Там просто жестокое ограничение внутри http.MultipartRequest, а именно вот тут
admin
[
{
"type": "link",
"text": "https://api.dart.dev/stable/2.10.4/dart-convert/dart-convert-library.html"
},
"\n\nТут только вот эти конвертеры/энкодеры/декодеры"
]
Dmitry Zhiharev
попробуй StreamedRequest
Daniil Kolyasnikov
[
"Была похожая проблема но с заголовками. можно сделать url encode. Перевести строку в другую форму. \n",
{
"type": "link",
"text": "https://api.dart.dev/stable/2.10.4/dart-core/Uri/encodeComponent.html"
},
""
]
Daniil Kolyasnikov
Хз, поддержит ли сервер такое
admin
Окей, мне наверное придётся переписать эту логику для билда мультипарт реквеста через стримед реквест, только энкоды эти гадские убрать
Daniil Kolyasnikov
с 1с что-ли интегрируешь ?
admin
Да толку, оно просто закодирует утф8 в такую репрезентацию. Единственный вариант который я вижу с изменениями на сервере, так это в б64 передавать CP1251, но это такая куча гемора
Matvey S
А разве с NDA можно посылать куски кода? На юр. уровне.. технически понятно что это ничего не даёт...
Daniil Kolyasnikov
да, чаще всего
admin
Куски кода http библиотеки дарта?))
admin
Ну короче я шокирован, походу тенденции поменялись и современные хипстеры решили дипрекейтнуть/забить на старые стандарты
admin
Я понимаю что флаттер+дарт решает свои проблемы, но мне больше нравится питон, в котором если что можно прямо глубоко залезть и что-то там поменять, при этом язык даже проще дарта
Daniil Kolyasnikov
А при чем тут старые стандарты ?
Daniil Kolyasnikov
Они все по спеке http делают
admin
По спеке хттп есть поддержка самых разных чарсетов, а тут на уровне языка стринг это жёсткий утф-8
admin
И в библиотеке тоже он указан как значение полей мультипарт запроса (как минимум)
Andrey Unger
ну да. Вам два раза ссылку давали на декодер cp1251 - переписать под себя и сделать из декодера энкодер так сложно? Только вот в вашем случае оно всеравно не будет работать если вы пытаетесь послать строку как байты в меньшем размере)
Pavel Erokhin
строка в дарте вообще UTF-16
admin
[
{
"type": "code",
"text": "http.MultipartRequest('POST', uri)..fields['x'] = bytes"
},
" вы никак не пошлёте, потому что fields это "
]
admin
У вас у двоих парни подкаты видно, зимой можно ноги отморозить
Pavel Erokhin
да, и там utf-16, а че ты хотел?)
admin
Я хотел язык программирования где тебе не надо переписывать билтин тип стринга))
Pavel Erokhin
ну сделай тоже самое на шарпе, джаве, котлине, и других современных языках, где строка это utf-16
Pavel Erokhin
чего ты хотел добиться передавая туда строку, воообще не понятно
Pavel Erokhin
на любом другом языке, передав строку которая представляет байты какого-то объекта, эта строка будет весить больше чем тот объект в байтах
admin
Не сериализированная его форма
admin
В памяти пусть хоть мегабайты весит, мне то что
admin
А сериализирует оно 101010100101010101010101010010 в транспорт
Pavel Erokhin
Ну не сериализованная, а тут передаешь строку, тебе же написал Дмитрий)
admin
Кто сказал что у меня чарсет не 1251, где один символ кодируется 1 байтом?
Andrey Unger
вообще не понимаю, нахрена туда вместо String пихать байты? это еще додуматься надо)
admin
Да, всего 255 символов (-32 служебных)
Pavel Erokhin
сказал тип String у дарта, который хранит строку в UTF-16
admin
Мы из разных миров похоже
admin
Ребят, а у вас у двоих есть макбуки?
Andrey Unger
в utf8 или utf16 или cp1251 - это String
Pavel Erokhin
как этот вопрос относится к тому, что ты страдаешь фигней)
Pavel Erokhin
и до сих пор веришь, что это нормально
admin
Нет, в cp1251 это кастомный тип, блоб. Потому что ваш язык не умеет в другие кодировки
admin
Эта фигня держит инфру которой все россияне пользуются)
Pavel Erokhin
пипец конечно
Pavel Erokhin
фигня не кодировка, а то что ты пытаешься сделать
Andrey Unger
это стринг - открой в браузере сайт в не той кодировке и увидишь именно String а не набор байтиков
Дмитрий Мезенцев
При использовании получаю Instance в чем ошибка может быть?
admin
Этот диалог бесполезен, вы просто меня хотите насмешить или это троллинг такой?
Andrey Unger
еще один… как строка может быть асинхронной функциейу вас?
Sergey Barbirosha
гугли что такое Future
Дмитрий Мезенцев
Ну мне нужно получить строку от двух параметров через гет и во future
Pavel Erokhin
наглость так и прет, у тебя не получается сделать то что ты хочешь, заведомо фигней страдаешь, тебе об этом пишут, и ты пишешь нам[ему], что насмешить пытаемся или троллинг
Pavel Erokhin
в чем логика?
admin
Да нет, вы просто похоже забыли/не изучали основы Computer Science
Pavel Erokhin
ладно бы ты так писал, если у тебя бы получилось
admin
По моему это сейчас в 7 классе изучают
Andrey Unger
у человека явно пик завышеной самооценки)
admin
Разрешите личный вопрос, Андрей, у вас профильное образование?
|