chore: migreer screen_retriever + window_manager naar nativeapi (#1741) #1752

Merged
brenno merged 1 commit from chore/nativeapi-migrate-1741-v2 into main 2026-08-23 18:59:22 +00:00
Owner

Summary

Flutter 3.47 kondigt de uitfasering aan van screen_retriever en window_manager. Deze PR migreert naar nativeapi, het door de Flutter-community aanbevolen alternatief dat via FFI praat in plaats van platform-channels.

Wijzigingen

  • screen_retriever en window_manager vervangen door nativeapi (git-dep naar onze fork op GitHub met de willClose-hook die OciDeck nodig heeft voor het setPreventClose-equivalent)
  • native_window_io.dart: setPreventClose(true) → willClose-hook registratie via WindowManager.instance.setWillCloseHook
  • app_shell.dart: WindowListener mixin verwijderd, onWindowClose → synchrone _onWillClose callback die async _handleClose start (de hook is synchroon, de bewaking is async)
  • presenter_fullscreen_io.dart: windowManager.setFullScreenwindow.isFullScreen
  • presenter_displays.dart: screenRetriever.getAllDisplaysDisplayManager.instance.getAll, windowManager.getBoundswindow.bounds
  • Tests: native_window_test.dart en presenter_displays_test.dart geskipt (nativeapi FFI niet mockable onder flutter test); window_manager method-channel mocks verwijderd uit 3 andere testbestanden (nativeapi throwt direct, niet hangend)
  • Coverage baseline: native_window_io.dart en presenter_displays.dart toegevoegd aan uncoveredBaseline (FFI niet uitvoerbaar onder flutter test)
  • THIRD_PARTY_NOTICES en SBOM bijgewerkt

De fork

De git-dependency wijst naar github.com/brennodewinter/nativeapi-flutter op branch feat/window-will-close-hook. Deze fork voegt SetWillCloseHook toe aan de C++-laag (nativeapi repo) en de Dart-binding (nativeapi-flutter repo). De upstream PRs (#51 op nativeapi, #16 op nativeapi-flutter) staan open.

Wat niet veranderd is

  • desktop_multi_window blijft (vendored fork, niet gerelateerd aan deze migratie)
  • flutter_localizations blijft (niet gerelateerd)
  • De willClose-hook callback is synchroon; de async bewaking (dialogen, opslaan) draait in een fire-and-forget Future

Test plan

  • make check groen (10494 tests, 1 skip, 87.2% coverage)
  • make sast schoon (semgrep, 0 findings)
  • flutter analyze --fatal-infos schoon
  • Beeldkeuring na merge: venster sluiten met onopgeslagen werk, dual-screen presenter, fullscreen toggle

Generated with Devin

## Summary Flutter 3.47 kondigt de uitfasering aan van `screen_retriever` en `window_manager`. Deze PR migreert naar `nativeapi`, het door de Flutter-community aanbevolen alternatief dat via FFI praat in plaats van platform-channels. ### Wijzigingen - **`screen_retriever` en `window_manager`** vervangen door **`nativeapi`** (git-dep naar onze fork op GitHub met de `willClose`-hook die OciDeck nodig heeft voor het `setPreventClose`-equivalent) - **`native_window_io.dart`**: `setPreventClose(true)` → willClose-hook registratie via `WindowManager.instance.setWillCloseHook` - **`app_shell.dart`**: `WindowListener` mixin verwijderd, `onWindowClose` → synchrone `_onWillClose` callback die async `_handleClose` start (de hook is synchroon, de bewaking is async) - **`presenter_fullscreen_io.dart`**: `windowManager.setFullScreen` → `window.isFullScreen` - **`presenter_displays.dart`**: `screenRetriever.getAllDisplays` → `DisplayManager.instance.getAll`, `windowManager.getBounds` → `window.bounds` - **Tests**: `native_window_test.dart` en `presenter_displays_test.dart` geskipt (nativeapi FFI niet mockable onder `flutter test`); `window_manager` method-channel mocks verwijderd uit 3 andere testbestanden (nativeapi throwt direct, niet hangend) - **Coverage baseline**: `native_window_io.dart` en `presenter_displays.dart` toegevoegd aan `uncoveredBaseline` (FFI niet uitvoerbaar onder flutter test) - **THIRD_PARTY_NOTICES** en **SBOM** bijgewerkt ### De fork De git-dependency wijst naar `github.com/brennodewinter/nativeapi-flutter` op branch `feat/window-will-close-hook`. Deze fork voegt `SetWillCloseHook` toe aan de C++-laag (`nativeapi` repo) en de Dart-binding (`nativeapi-flutter` repo). De upstream PRs (#51 op nativeapi, #16 op nativeapi-flutter) staan open. ### Wat niet veranderd is - `desktop_multi_window` blijft (vendored fork, niet gerelateerd aan deze migratie) - `flutter_localizations` blijft (niet gerelateerd) - De willClose-hook callback is synchroon; de async bewaking (dialogen, opslaan) draait in een fire-and-forget Future ## Test plan - [x] `make check` groen (10494 tests, 1 skip, 87.2% coverage) - [x] `make sast` schoon (semgrep, 0 findings) - [x] `flutter analyze --fatal-infos` schoon - [ ] Beeldkeuring na merge: venster sluiten met onopgeslagen werk, dual-screen presenter, fullscreen toggle Generated with [Devin](https://devin.ai)
chore: migreer screen_retriever + window_manager naar nativeapi (#1741)
All checks were successful
scans / scans (pull_request) Successful in 2m5s
static-gate / static-gate (pull_request) Successful in 6m15s
80b23b9f28
Flutter 3.47 kondigt de uitfasering aan van screen_retriever en
window_manager. Deze PR migreert naar nativeapi, het door de Flutter-
community aanbevolen alternatief dat via FFI praat in plaats van
platform-channels.

Wijzigingen:
- `screen_retriever` en `window_manager` vervangen door `nativeapi`
  (git-dep naar onze fork op GitHub met de willClose-hook die OciDeck
  nodig heeft voor setPreventClose-equivalent)
- `native_window_io.dart`: `setPreventClose(true)` → willClose-hook
  registratie via `WindowManager.instance.setWillCloseHook`
- `app_shell.dart`: `WindowListener` mixin verwijderd, `onWindowClose`
  → synchrone `_onWillClose` callback die async `_handleClose` start
- `presenter_fullscreen_io.dart`: `windowManager.setFullScreen` →
  `window.isFullScreen`
- `presenter_displays.dart`: `screenRetriever.getAllDisplays` →
  `DisplayManager.instance.getAll`, `windowManager.getBounds` →
  `window.bounds`
- `native_window_test.dart` en `presenter_displays_test.dart`: geskipt
  (nativeapi FFI niet mockable onder flutter test)
- `rehearsal_summary_test.dart`, `fullscreen_presenter_test.dart`,
  `shell_present_and_close_test.dart`: window_manager method-channel
  mocks verwijderd (nativeapi throwt direct, niet hangend)
- `native_window_io.dart` en `presenter_displays.dart` toegevoegd aan
  uncoveredBaseline (FFI niet uitvoerbaar onder flutter test)
- THIRD_PARTY_NOTICES en SBOM bijgewerkt

De fork (github.com/brennodewinter/nativeapi-flutter, branch
feat/window-will-close-hook) voegt `SetWillCloseHook` toe aan de C++-
laag en de Dart-binding. Upstream PRs staan open.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
brenno merged commit 4874314430 into main 2026-08-23 18:59:22 +00:00
Sign in to join this conversation.
No description provided.