[Small Voice Team] — Почему мы выбрали Flutter Desktop

Flutter
[Small Voice Team] — Почему мы выбрали Flutter Desktop

Эта статья подготовлена ​​командой Xiaosheng. Команда Xiaosheng — это начинающая команда, специализирующаяся на аудио- и музыкальных технологиях. Она активно использует Flutter для создания кроссплатформенных приложений. Я надеюсь изучить возможности Flutter на настольных и мобильных терминалах. вместе с вами.

задний план

小声团队使用Flutter Desktop研发的DAW截屏

Мы планируем разработать полнофункциональную кроссплатформенную платформу для производства музыки (DAW).С самого начала проекта мы уточнили план поддержки всей платформы (т.е. Windows/MacOS/Linux/iOS/Android), поэтому мы также использовать этоЧтобы найти технические решения для цели, после периода исследований и изучения, было примерно определено несколько вариантов.Результаты внутреннего опроса следующие (Этот результат представляет собой только внутреннее восприятие команды, если есть какая-либо разница, пожалуйста, потерпите меня.):

Технические решения представление Эффективность НИОКР Кроссплатформенная совместимость Расширяемость Возможность взаимодействия с родным кодом
HTML5 Низкий высоко высоко Низкий Низкий
QT высоко очень низкий высоко высоко высоко
React Native середина высоко Низкий середина середина
Flutter высоко высоко высоко середина высоко

Почему бы не использовать стек технологий, построенный на HTML5?

Известно, что HTML5 является самым простым в использовании кросс-платформенным решением пользовательского интерфейса, а индустрия развита, существует множество дополнительных фреймворков и компонентов с открытым исходным кодом, которые можно использовать напрямую. Однако, как профессиональный инструмент повышения производительности, DAW не подходит для работы полностью в браузерной среде.Например, сторонние подключаемые системные браузеры не могут ее поддерживать.Кроме того, использование ресурсов памяти не очень удобно.Обычно , музыкальный проект может занимать несколько гигабайт памяти, десятки тысяч объектов необходимо поддерживать во время выполнения, что является серьезной нагрузкой как для Javascript, так и для браузеров. С другой стороны, даже если нам нужно поддерживать Интернет в кастрированном виде, то технология WASM — наш лучший выбор. Поэтому мы не рассматриваем технические решения на базе HTML5.

Почему бы не выбрать старомодные нативные высокопроизводительные фреймворки, такие как QT и GTK?

С точки зрения традиционной технологии, QT — это техническое решение, которое наилучшим образом соответствует нашим потребностям, и многие производители старых инструментов также используют стек технологий QT. QT, несомненно, является лучшим выбором с точки зрения операционной эффективности.Наша главная забота - способность управления и эффективность исследований и разработок CPP.Существует большая фундаментальная разница между разработкой пользовательского интерфейса и разработкой движка.Разработка движка обычно использует модульные тесты для завершения логики.Проверка, и пользовательского интерфейса, трудно использовать модульное тестирование для проверки эффектов пользовательского интерфейса, и редко можно увидеть команды, которые действительно полагаются на модульное тестирование для разработки пользовательского интерфейса, а QT не имеет технологии горячей перезагрузки, подобной Webpack, эффективность проверки пользовательского интерфейса будет очень низким, даже наша небольшая команда не может себе этого позволить. CPP также является языком программирования с очень высоким порогом входа.У нас также есть сомнения относительно решения QT, но мы не сдались полностью.

Какие особенности Flutter нас привлекли

  • Фрезентация непосредственно создает компоненты на основе двигателя чертежа Skia. Операционная система должна обеспечивать только возможности рисования на уровне пикселей, поэтому он обеспечивает кроссплатформенную консистенцию пользовательского интерфейса (консистенция на уровне пикселей), а совместимость актуальности реагирования всегда была полна жалобы. Сообщество.
  • Dart также очень удобен для разработки пользовательского интерфейса.
    • По умолчанию объекты передаются по ссылке.
    • Поддержка ГОРЯЧЕЙ перезагрузки. Это значительно повышает эффективность разработки, делая эффективность исследований и разработок Flutter не ниже, чем у HTML5.
    • Поддержка AOT, эффективность выполнения кода производственного уровня резко возрастает, не уступая производительности нативных приложений.
    • поддержка ФФИ. Может напрямую взаимодействовать с собственным кодом C и Cpp практически без потери производительности.
    • Веб-поддержка. Flutter можно напрямую скомпилировать для работы в Интернете, что также открывает для нас возможность предоставлять веб-сервисы.

Эти функции Flutter напрямую соответствуют нашим потребностям, поэтому мы решили попробовать использовать Flutter для создания нашей платформы.

В заключение

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