diff --git a/flutter_angle/darwin/Classes/FlutterAnglePlugin.swift b/flutter_angle/darwin/Classes/FlutterAnglePlugin.swift index 04aea2d..b2a92bf 100644 --- a/flutter_angle/darwin/Classes/FlutterAnglePlugin.swift +++ b/flutter_angle/darwin/Classes/FlutterAnglePlugin.swift @@ -87,7 +87,12 @@ import Flutter result(FlutterError(code: "INVALID_ARGS", message: "Invalid texture ID", details: nil)) return } - self.renders[textureId]!.textureFrameAvailable(result: result) + guard let render = self.renders[textureId] else { + // A late frame callback can arrive after the texture has been disposed. + result(nil) + return + } + render.textureFrameAvailable(result: result) case "initOpenGL": #if targetEnvironment(simulator) eglInfo = nil diff --git a/flutter_angle_darwin/darwin/flutter_angle_darwin/Sources/flutter_angle_darwin/FlutterAnglePlugin.swift b/flutter_angle_darwin/darwin/flutter_angle_darwin/Sources/flutter_angle_darwin/FlutterAnglePlugin.swift index 4c8b750..f7c1659 100644 --- a/flutter_angle_darwin/darwin/flutter_angle_darwin/Sources/flutter_angle_darwin/FlutterAnglePlugin.swift +++ b/flutter_angle_darwin/darwin/flutter_angle_darwin/Sources/flutter_angle_darwin/FlutterAnglePlugin.swift @@ -89,7 +89,12 @@ import Flutter result(FlutterError(code: "INVALID_ARGS", message: "Invalid texture ID", details: nil)) return } - self.renders[textureId]!.textureFrameAvailable(result: result) + guard let render = self.renders[textureId] else { + // A late frame callback can arrive after the texture has been disposed. + result(nil) + return + } + render.textureFrameAvailable(result: result) case "initOpenGL": #if targetEnvironment(simulator) eglInfo = nil