Flutter
Интеграция с Flutter
Обработчики Flutter Framework и платформы, контекст среды выполнения, режим сборки и показ через корневой Navigator.
Интеграция с Flutter
ark_error_manager_flutter подключает один принадлежащий приложению менеджер к глобальным обработчикам Flutter Framework и платформы. Пакет не предоставляет доступ к менеджеру через дерево виджетов и не добавляет зависимость от него в функциональные объекты.
Какая граница видит ошибку
| Путь ошибки | Владелец перехвата | Адаптер Ark |
|---|---|---|
| Необработанная асинхронная ошибка в Zone приложения | Bootstrap приложения | manager.onUncaughtZoneError |
| Ошибка построения, компоновки, отрисовки, обратного вызова или явный отчёт Framework | Flutter Framework | FlutterErrorManagerBinding через FlutterError.onError |
| Необработанная ошибка корневого Isolate вне обратного вызова Framework | Flutter Engine | FlutterErrorManagerBinding через PlatformDispatcher.onError |
| Необработанная ошибка дочернего Isolate | Владелец Isolate | IsolateErrorManagerBinding |
Эти пути дополняют друг друга. Их не следует вызывать вручную для одного и того же исключения.
Корневая композиция
ApplicationBootstrap
├── принадлежащая приложению Zone
├── ErrorManager
├── FlutterErrorManagerBinding
├── GlobalKey<NavigatorState>
└── MaterialApp / CupertinoApp
Виджет сообщает об ошибке через штатный механизм Flutter. Presenter, UseCase, Repository, DataSource, Provider и виджеты не получают и не разрешают менеджер.
Изучите:
- Корневые обработчики и владение —
FlutterError.onError,PlatformDispatcher.onError, политика предыдущего обработчика и поведениеdetach; - Показ пользователю и контекст среды выполнения — определение режима сборки, ограниченный контекст Flutter и UI, задаваемый приложением.
Для сборки нового Bootstrap используйте полное руководство Flutter.
После рабочей сборки до production необходимо принять три прикладных решения:
- отправляет ли сохранённый предыдущий обработчик данные во внешнюю систему;
- какой UI соответствует директивам
passive,blockingиnone; - какие поля Flutter-контекста разрешено передавать через границу
ErrorReporterпосле очистки.