Комментарии 12
Отличная статья. Как вы правильно заметили, без компетенций android/ios в таком случае не обойтись. Есть ли желание опубликовать на pub.dev? Такие платформенные магии могут собрать определённую группу поддержки :)
Такое пишется в одно лицо за 1-2 месяца если в начале пути не знать флаттер, swift и немного дружить с гайдами. Говорю как человек написавший именно такое именно так и при этом в начале только слышал о флаттере. По итогу в продакшне - и flutter гно, и MLKit тоже)
Спасибо! К сожалению, поддержку ТСД в такой пакет не поместить из-за того, что моделей ТСД великое множество, а библиотеки к ним распространяются не по MIT/BSD лицензии. А если речь только про сканер через камеру, то уже есть пакеты, реализующие это (как верно заметил @nikita_dolниже)
Почему отказались использовать готовые пакеты?
Например, эти пакеты (первые которые попались) умеют сканить не по одному коду за раз:
https://pub.dev/packages/barcode_scan2
https://pub.dev/packages/flutter_barcode_scanner
Вы для начала проверьте их работу в реальных условиях с реальными этикетками, освещением, углами и тп, вопросы снимутся.
Большинство посетителей этого сайта считают что если нечто работает на их Iphone 10-14 с 1 штрих кодом в хорошо освещённом офисе, когда последние 8 часов юзернейм только умственно работал, а смартфон в ходе теста в руке не трясется от банальной усталости, постоянно теряя фокус, то вопрос выбора компонента для сканирования закрыт, можно в продакшн. Но есть один момент)))
Привет! По двум причинам:
1. Нужна поддержка ТСД, редкий поставщик ТСД предоставляет плагин для Flutter, обычно это aar/jar библиотеки.
2. Хочется иметь больший контроль за процессом сканирования.
Если долго работать с flutter и именно по вашей специфике т.е. работа с камерой и передача событий от native к flutter то можно заметить, что т.н. channels это глючное гно, которое может отваливаться и при этом событие распознавание шк на платформе не придет к флаттер аппу. Сколько об этом ни говорили Гуглу - воз и ныне там, а прошло уже пару лет. Но не спешите переписывать под реакт нейтив или, спаси Б-г под capacitor и иже с ними... Там будет проблематика с пропадающим camera preview т.к. не всегда нейтив красиво как на картинке встраивается в контейнер под него в приложении, страдает при этом дизайнер урезающий UI до убогого гна. Так как за пару лет прошло более 3 млрд. сканирований, со статистикой не поспорить - все кроссплатформенные платформы слабо работают с нативным железом.
Что касается MLKit то при небольшой дистанции и с 1 шк в кадре он норм, но на расстоянии более 30 см и наличии нескольких шк на экране легко тормозит и не понимает что есть что. Конечно лучше чем avfoundation/zxing но тоже шлак, годный лишь для сценариев с низкой нагрузкой до 100 сканирований в час. На поточных операциях типа склада спасает только коммерческий софт.
Ну и да, поточное сканирование это конечно новинка которой лет 7-8 уже как, а вот когда надо и пару разных шк и этикетку сразу распознать, а иногда и сразу у всех пачек лекарств в коробке все dataMatrix считать, тут и экономия в десятки раз по времени и выгоды. Только гугль такого не умеет.
Конечно, мы не используем MLKit на проде, у нас реализован свой анализатор для этих целей. Тут он приведен в качестве демонстрационного решения. А что касается проблемы передачи событий от платформы к Flutter, то ли к радости, то ли к великому страху - с таким не сталкивался. Не могли бы, пожалуйста, поделиться ссылкой на github issue или статью, где эта ситуация описана?
дайте тикет на описание вашей проблемы, плиз
Вердикт - если заказчик с реально большим складом и серьезным потоком, будут плавающие баги и простои. Всему виной - слабая кроссплатформенная связка. Но это вы увидите только на больших объемах, для смб вполне подойдёт
Один плагин, чтоб править всеми. Как разработать сканер на Flutter для 3 платформ и ускорить ввод данных в 2 раза