Как обрабатывать поток платформы без плагина во Flutter из родной iOS?IOS

Программируем под IOS
Ответить
Anonymous
 Как обрабатывать поток платформы без плагина во Flutter из родной iOS?

Сообщение Anonymous »


Начиная с Flutter 3.13 вы могли заметить новые ошибки Flutter в зависимости от вызова метода канала вашей платформы (iOS):

[ОШИБКА: flutter/shell/common/shell.cc(1015)] Канал «CameraController» отправил сообщение из встроенного во Flutter в неплатформенный поток. Сообщения канала платформы должны отправляться в поток платформы. Невыполнение этого требования может привести к потере данных или сбоям и должно быть исправлено в коде плагина или приложения, создающего этот канал. См. https://docs.flutter.dev/platform-integ ... -threading для получения дополнительной информации. В документе единственный пример реализации TaskQueue для обработки многопоточности написан для концепции плагина:

публичный статический функциональный регистр (с регистратором: FlutterPluginRegistrar) { let TaskQueue = registrar.messenger.makeBackgroundTaskQueue() пусть канал = FlutterMethodChannel(name: "com.example.foo", двоичныйМессенджер: registrar.messenger(), кодек: FlutterStandardMethodCodec.sharedInstance, TaskQueue: TaskQueue) пусть экземпляр = MyPlugin() registrar.addMethodCallDelegate(экземпляр, канал: канал) } Однако я не использую плагины для своих каналов iOS, я инициализировал их все внутри AppDelegate следующим образом:

let flutterController : FlutterViewController = window?.rootViewController as! Флаттервиевконтроллер let cameraChannel = FlutterMethodChannel (имя: «CameraController»,binaryMessenger: flutterController.binaryMessenger) Затем я звоню со своего родного канала iOS при запуске приложения:

частная функция setupCameraConst() { DispatchQueue.main.async { канал!.invokeMethod("setAspectRatio", аргументы: аспектRatio) канал!.invokeMethod("setMinZoomLevel", аргументы: minZoom) канал!.invokeMethod("setMaxZoomLevel", аргументы: maxZoom) канал!.invokeMethod("setMinExposure", аргументы: minExposure) канал!.invokeMethod("setMaxExposure", аргументы: maxExposure) канал!.invokeMethod("setOnFrontCamera", аргументы: cameraPosition == .front) } } Итак, мой вопрос: как обрабатывать поток платформы без использования плагина?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»