Простое приложение на Dart

08.08.23

Разработка - Языки и среды

Пример небольшого приложения, с которого можно начать изучать язык программирования Dart.

Судя по тому интересу, который возник в статье Flutter + 1C, которую можно прочитать, перейдя по ссылке //infostart.ru/1c/articles/1910243/, хотел бы продолжить тему флатера и языка программирования дарт.

В комментариях были вопросы от разработчиков 1С, которые спрашивали о том, как им начать изучать флатер, какими ресурсами лучше  пользоваться.

Отвечая на комментарии, я писал, что прежде чем изучать флатер, необходимо изучить язык программирования дарт. Так как, не зная этого языка, будет очень трудно изучать флатер. Изучив дарт, а затем флатер, вы потратите времени меньше, чем если сразу начнете изучать флатер. Причем во втором случае есть большая вероятность вообще забросить изучение данной технологии.

(Конечно, могут быть исключения. Если разработчик хорошо знаком с ООП парадигмой программирования, может быть, уже разрабатывал приложения на других языках программирования (например Java, C#) , где работал с классами, наследованием, интерфейсами, то конечно, он может сразу начинать изучать фреймворк флатер.)

Хочу продемонстрировать вам пример небольшого, простого приложения, написанного на языке дарт (без фреймворка), которое можно использовать для начала изучения языка.

Это консольное приложение, которое подключается по http протоколу к базе данных 1С и посредством POST запроса передает на сервер файл.

Начнем с базы данных 1С. Создаем чистую информационную базу и в дереве метаданных добавляем http сервис. Сервис называем dart_1c и также называем корневой URL - dart_1c. Добавляем новый шаблон - РаботаСФайлами, и устанавливаем у него шаблон - /work-with-files. В этом шаблоне добавляем новый http метод - POST - ПолучитьФайл. В результате всех проделанных операций мы получили следующую картину:

 

 

Исходный код модуля http сервиса можно посмотреть здесь.

 

Прокомментирую данный код. Из тела POST запроса получаем данные. Данные, представляют собой строку, Base64. Эта строка и есть тот файл, который мы передаем на сервер. Далее преобразуем строку Base64 в двоичные данные, затем получаем заголовок, этот заголовок мы передаем на сервер. В заголовке, содержится расширение закодированного файла. На диске D сохраняем этот файл.  В процессе сохранения мы формируем ему имя. В качестве имени у нас будет уникальный идентификатор + расширение.

Если запись файла прошла, успешно, мы клиенту отправляем статус 201, в противном случае статус с кодом 500 - разнообразные ошибки сервера.

Более подробно про http сервисы можно узнать тут //infostart.ru/1c/articles/1293341/

Публикуем http сервис на веб сервере. (На вашем компьютере должен быть установлен веб сервер апач или IIS). Я назвал имя публикации - dart_http_1c. Полный путь к POST ресурсу, в моем случае, такой:

http://localhost/dart_http_1c/hs/dart_1c/work-with-files

Перейдем теперь к самому интересному.

Для начала программирования на дарт, нам необходимо установить фреймворк и ide, для набора и редактирования программного кода. (Устанавливая флатер мы фреймворком можем не пользоваться, будет использовать только дарт. При установке флатера, устанавливается так же виртуальная машина дарт, которая и будет выполнять код на дарте.). Как установить флатер можно почитать в статье //infostart.ru/1c/articles/1910243/ или на официальном сайте флатер https://docs.flutter.dev/get-started/install

Насчет ide можно почитать тут https://docs.flutter.dev/get-started/editor.

Первое, что нам нужно сделать, это создать папку на компьютере, в котором будет находиться наше небольшое приложение на дарт.

Открываем эту папку в вашей любимой ide и создаем там файл main.dart.

Открываем этот файл и набираем в нем следующий код.

 

(Можно не устанавливать ide, а программировать в обыкновенном блокноте, но это не очень удобно. Также в коде не обработаны ошибки, которые могут выбросить исключения, например - не найден передаваемый файл, сервер не отвечает и тому подобные ошибки).

В файле main.dart создайте функцию main - эта функция является точкой входа в любое приложение флатер и дарт.

Прокомментирую написанный код:

стр. 7 - создание объекта httpClient, класса - HttpClient - это наш http клиент. 

стр.8 - создание объекта класса HttpClientRequest - это наш http запрос. Мы у него вызываем метод post, куда передаем параметры подключения, а именно имя сервера, порт подключения и путь к http ресурсу.

стр.9 - готовим файл для передачи на сервер. Файл , который мы будем передавать будет наш файл на дарте - main.dart

стр.10 - получаем данные из файла и преобразуем эти данные в строку base64.

стр.11 - добавляем в пост запрос, свой заголовок -

request.headers.set("x-file-type", "txt");

(Для примера, передадим на серевер файл с расширением txt)

стр.12 - помещаем строку base64 в тело пост запроса.

стр.13. выполняем http запрос и ждем ответ от сервера -

final HttpClientResponse response = await request.close();

В ответе сервера, проверяем статусы ответа. В зависимости от статуса выводим пользователю разные сообщения. В последней строке закрываем соединение с сервером

httpClient.close();

 

Для того, чтобы выполнить данный код, в командной строке нужно набрать следующую команду

dart run main.dart

 

 

Для того, чтобы можно было удобно пользоваться и распространять приложение - его нужно собрать в исполняемый файл. Приложения дарт можно собирать под разные платформы. Давайте соберем это приложение под операционную систему Windows. Для этого в командной строке наберем команду dart compile exe main.dart (ее можно расшифровать так - дарт собери exe файл из файла main.dart)

 

 

Обратите внимание, у нас появился файл main.exe. Это исполняемый файла ОС Windows.

 

Выводы

Хотя приложение, которое тут представлено, очень простое и занимает несколько строчек, но мы узнали много нового. Как создать функцию, которая является точкой входа в приложение. Поработали с объектами File, HttpClient, HttpClietRequest, HttpClientResponse - из стандартной библиотеки дарт. Научились конвертировать данные в base64. Научились запускать приложение, а также компилировать приложение в exe файл.

Файл dt - выгрузки данных 1С можно скачать из репозитория  по адресу - https://github.com/hariuc/flutter_order_test

Тестовая конфигурация для бэкенда создана технологической платформой 8.3.23.1688

 

 

Благодарю за внимание.

flutter dart обмен данными интеграция http сервис приложение

См. также

Языки и среды Системный администратор Программист Бесплатно (free)

PowerShell. Что, зачем, как и почему? И причем тут 1С?

16.05.2021    21432    Infostart    31    

177

Математика и алгоритмы Языки и среды Программист Платформа 1С v8.3 Бесплатно (free)

На митапе по инструментам для расширения возможностей 1С выступил Олег Филиппов. Он сравнил подходы Native API, COM, Docker и Serverless, и рассказал, как упростить использование в 1С алгоритмов, реализованных на других языках, с помощью облачной технологии «Функция как сервис».

12.04.2021    5810    comol    10    

31

Языки и среды Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В статье мы передадим данные в JavaScript и получим результат обратно в 1С-объекты средствами JSON. Также "поиграем" с переданными данными.

02.01.2021    17817    John_d    21    

135

Языки и среды Программист Бесплатно (free)

Тенденции современности - это SaaS и микросервисы. Про SaaS не слышал только ленивый, но на всякий случай, Ленивый, это для тебя: SaaS это облачная модель работы с сервисами по подписке. У 1С это технология 1С:Фреш. Но мы поговорим не о SaaS и не об 1С:Фреш, а о методологии "Приложение двенадцати факторов", которая родилась для облегчения жизни разработчикам SaaS приложений. Вы спросите: "А где здесь про 1С?". Давайте разберемся.

19.11.2020    1796    Lars Ulrich    0    

4

WEB-интеграция Языки и среды Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Абонемент ($m)

Инструмент для создания Json-схем по формату 4 драфта. В современном мире модно пользоваться Http-сервисами и Json, но если для старого доброго xml все уже придумано и xsd схемы можно рисовать в 1С из коробки, то с json и его форматом Json schema все не так хорошо. Зачастую нужно стандартизировать формат сообщений обмена json и для этого можно воспользоваться Конструктором. Есть возможность проверить свой Json на соответствие схеме. Схемы после выгрузки проходят валидацию в Liquid studio 2020. Стандартизируйте обмен Json с комфортом и удобством.

1 стартмани

16.07.2020    13771    48    Segate    11    

21

Языки и среды Программист Платформа 1С v8.3 Бесплатно (free)

На прошлой неделе произошел долгожданный громкий релиз в мире 1С: вышла бета версия 1С:Исполнителя. И пусть не оправдались все ожидания после анонса, пусть язык еще сырой, что-то сделать на нем очень интересно. Посмотрим, что это такое, и даже произведем небольшую модернизацию языка (Velocity-pad Costilization).

23.06.2020    21885    CyberCerber    294    

51

Языки и среды Программист Россия Абонемент ($m)

Краткий обзор русскоязычного объектно ориентированного 1С подобного языка программирования Русский Фокс.

1 стартмани

30.09.2019    5307    andreosh    21    

12
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. acces969 350 08.08.23 09:50 Сейчас в теме
Кто-нибудь собирается писать статью про компоненту Native API для 1С на языке C++? В частности, запуск компоненты с платформой 1С на мобильном устройстве и браузере? Это было бы очень полезно.
2. siamagic 08.08.23 15:01 Сейчас в теме
(1) компонента для дройда пишется на ява вроде. Что за задачи такие?
3. vkr 09.10.23 21:07 Сейчас в теме
(2) Вообще-то, в среде разработки Embarcadero C++ Builder v10.x (бывший Borland c++ Builder) очень легко пишутся разные вещи прямо под Андроид, и не требуется никакой Джавы... Ж8-)))
4. user2022693 02.12.23 19:23 Сейчас в теме
Вы очень крутые полезные темы пишите!!! Я пишу на flutter и теперь стоит задача интеграции flutter и 1C, поэтому изучаю 1С, но не всегда все понятно. Круто было бы увидеть видео канал по данным темам. Сколько не шерстил инет у Вас очень полезная информация. А моя задача Интернет магазин на Flutter и база 1С.
acvatoris; +1 Ответить
5. acvatoris 544 16.01.24 12:33 Сейчас в теме
Добрый день.
Использование фреймворка флатер для разработки мобильного приложения "Интернет магазин" - это отличная идея. Фрейморк идеально подходит под данную задачу. Вы сразу создаете приложение для двух платформ (андроид и ios).
Использовать флатер для веб интерфейса, в случае интернет магазина, не очень хорошая идея, так как вы не сможете управлять seo оптимизацией.
Теперь педейдем к бэкенду. Вы пишите, что в качестве бэкэнда, вы используйте 1С. Не думаю, что это хорошая идея. Конечно , данный выбор зависит еще от многих факторов. Вы разрабатываете интернет магазин, сколько пользователей будет пользоваться сервисом? Какие операции данные пользователи будут имет возможность совершать ? Если 1С будет тормозить, то ваш интернет магазин обречен на провал. Даже если приложение на флатер будет очень удобно и красиво. Так как ни один пользователь не будет ждать пока загрузиться список товаров.
Еще один момент связан с лицензированием http соединений. Вам нужно будет купить лицензии. А сколько купить?
Как будут регистрироваться ваши пользователи? Могу этот список еще продолжить :) .

В связи с этими вопросами я думаю, что лучше бэкенд, разработать не на 1С. А скажем на PHP. Купите дешевый хостинг. Мобильное приложение будет подключаться к этому серверу. И все будет ок.
А затем можно будет настроить обмен между базой и 1С. Скажем в 1С будет срабатывать регламентное задание и загружать данные заказов в 1С. Менеджер в 1С уже будет работать с этими заказами.
Удачи в разработке :)
6. acvatoris 544 16.01.24 12:40 Сейчас в теме
Отвечаю на ваш вопрос по обучающим ресурсам.
В рускоязычной области , нет хороших ресурсов для обучения. Могу посоветовать канал в ютубе https://www.youtube.com/@LearnDartFlutter

в англоязычной области есть очень много хороших курсов , как платных так и бесплатных. Можете зайти на сайт http://www.udemy.com/ru/ и за небольшую сумму купить себе курс. Все курсы очень качественные :)
Оставьте свое сообщение