Вероятно, есть две причины, по которым конкретная вещь, которую вы хотите сделать, c не будет работать:
- В приложениях Flutter на настольных платформах нет виртуальной машины Java, поэтому вы нельзя использовать Java.
- Плагины Flutter обычно существуют для вызова функциональности c, специфичной для платформы (или сторонних SDK, которые написаны для конкретной платформы c, но эффект тот же ). Если вы рассматриваете плагин, например,
camera
, даже если вы игнорируете языковую проблему, вы не можете вызвать Android API-интерфейсы камеры в macOS или Windows, потому что они не Android; у них совершенно разные API камеры ОС. (Существуют исключения, например sqflite
, которые обертывают уже кроссплатформенную библиотеку, но это не норма).
Однако, ответ на ваш общий вопрос о том, нужно ли вам использовать c языков, описанных в документации, технически нет ответа:
- На Windows и Linux, плагины (в настоящее время) просто общие библиотеки с указанным c C интерфейс. Теоретически вы могли бы написать весь плагин на любом языке, который можно скомпилировать в совместимую библиотеку, совместимую с C, например, Go или Rust (хотя вам придется делать свой собственный метод кодирования / декодирования канала). В качестве альтернативы вы можете использовать API C ++ в качестве тонкого слоя клея для обработки канала платформы и вызывать базовый код, скомпилированный в C -совместимую форму.
- В macOS плагин - это модуль, поэтому внешний слой должен быть Swift или Objective- C. Тем не менее, Objective- C совместим с C, поэтому тот же вариант, когда в Objective- C есть только клей канала метода, а остальная часть кода в любом интерфейсе C также применима к macOS.
Однако, если вы не имеете дело с существующей кроссплатформенной библиотекой, это, вероятно, не очень хорошая идея. Если вы пишете новый код, не зависящий от платформы c, для использования во Flutter, вам почти всегда будет лучше написать его в Dart как обычный пакет, где он будет работать на всех текущих и будущих платформах Flutter.