Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit dee3664

Browse files
committed
[web] use callConstructor for FinalizationRegistry due to bug in dart2js
1 parent 293cab1 commit dee3664

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

lib/web_ui/lib/src/engine/canvaskit/native_memory.dart

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,27 @@
33
// found in the LICENSE file.
44

55
import 'dart:js_interop';
6+
import 'dart:js_util' as js_util;
67
import 'package:meta/meta.dart';
78

89
import '../../engine.dart' show Instrumentation;
10+
import '../dom.dart';
911
import '../util.dart';
1012
import 'canvaskit_api.dart';
1113

14+
@JS('FinalizationRegistry')
15+
external JSAny get _finalizationRegistryConstructor;
16+
1217
/// Collects native objects that weren't explicitly disposed of using
1318
/// [UniqueRef.dispose] or [CountedRef.unref].
14-
SkObjectFinalizationRegistry _finalizationRegistry = SkObjectFinalizationRegistry((UniqueRef<Object> uniq) {
15-
uniq.collect();
16-
}.toJS);
19+
SkObjectFinalizationRegistry _finalizationRegistry = js_util.callConstructor(
20+
_finalizationRegistryConstructor.toObjectShallow,
21+
<Object>[
22+
(UniqueRef<Object> uniq) {
23+
uniq.collect();
24+
}.toJS
25+
],
26+
);
1727

1828
NativeMemoryFinalizationRegistry nativeMemoryFinalizationRegistry = NativeMemoryFinalizationRegistry();
1929

0 commit comments

Comments
 (0)