Автоматически освобождать ресурсы собственной платформы, когда они не используются в Dart. - PullRequest
0 голосов
/ 13 апреля 2019

Есть ли способ активировать обратный вызов, когда объект Dart получает мусор (или собирается)?

Я создаю плагин с несколькими друзьями, который оборачивает SDK MongoDB Stitch.Для некоторых объектов, таких как «Клиент», «База данных», «Коллекция» и т. Д., Нам нужно поддерживать экземпляры в активном состоянии и извлекать их с помощью различных вызовов методов.

Для этого мы сохраняем экземпляры внутри объектов Map, когда они создаются на нативной стороне плагина, и возвращаем ключ карты на сторону Dart.

Таким образом, мы можем использоватьMethodChannel api для получения правильного объекта и вызова запрошенного метода.

Проблема заключается в том, что при этом, даже если объект собирается в Dart, мы сохраняем связанный нативный объект на карте до завершения программы.

Я мог бы предоставить метод dispose для объекта Dart, но при этом мне нужно было бы, чтобы пользователи сами управляли памятью.Почти уверен, что это кончится кровью.

...