абстрактный метод detach
- Object detach
Отсоединяет этот финализатор от значений, присоединённых с помощью detach.
Удаляется каждое присоединение между этим финализатором и значением, созданное вызовом attach с объектом detach в качестве аргумента detach.
Если финализатор присоединялся к одному и тому же значению несколько раз с разными ключами отсоединения, удаляются только те присоединения, при создании которых использовался detach.
После отсоединения присоединение не приведёт к вызову обратных вызовов, если объект станет недоступен.
Пример:
class Database {
// Keeps the finalizer itself reachable, otherwise it might be disposed
// before the finalizer callback gets a chance to run.
static final Finalizer<DBConnection> _finalizer =
Finalizer((connection) => connection.close());
final DBConnection _connection;
Database._fromConnection(this._connection);
void close() {
// User requested close.
_connection.close();
// Detach from finalizer, no longer needed.
// Was attached using this object as `detach` token.
_finalizer.detach(this);
}
// Some useful methods.
} Реализация
void detach(Object detach);
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-core/Finalizer/detach.html