Нативное view во Flutter
Hola, Amigos! С вами Антон Мартышков, Flutter-dev Amiga. Зачем используют нативное view во Flutter? Это удобно в тех случаях, когда есть готовое и проверенное решение под нативную платформу, а времени переделывать под Flutter не хватает. Легче показать Android activity напрямую в вашем Flutter-приложении. По такому принципу работают Google maps вo Flutter-приложениях.
В Android есть 2 способа отобразить нативный интерфейс:
1. Virtual displays — рендерит виджеты AndroidView внутри VirtualDisplays вместо того, чтобы добавлять их в иерархию View.
VirtualDisplay выводит свои выходные данные в необработанный графический буфер (доступ осуществляется через getSurface()), а не на какой-либо фактический дисплей устройства. Это позволяет Flutter чередовать представление Android View внутри своего собственного дерева виджетов. Он берет текстуру из выходных данных VirtualDisplay и обрабатывает ее как текстуру, которая связана с любым другим виджетом Flutter в его внутренней иерархии. Некоторые взаимодействия с платформой, такие как управление клавиатурой и специальные возможности, могут не работать.
2. Hybrid composition «прокидывает» нативный View в Fluttter.
Управление клавиатурой и доступность работают «из коробки». До Android 10 этот режим может снизить fps интерфейса Flutter. Но в документации команда Flutter подчеркивает — используйте AndroidView (Virtual displays) когда это возможно, поскольку для этого требуется меньше шаблонного кода, чем для AndroidViewSurface, и нет никакой разницы в производительности или других компромиссах.
В iOS есть возможность использовать только Hybrid composition. А виджет называется UiKitView.
Помните, что PatformView отвечает только за отображение, что бы еще подкрутить логику из натива нужно настроить общение между Flutte - native через MethodChannel, и там уже передавать данные и вызывать методы для изменения ui в нативном view. Такое решение в любом случае компромисс скорости реализации и производительности.
Post #78
1.49K
- 🔥 12
- 👍 5