Description
When I try to post a message using postMessage api from Flutter to Unity in a web app, I am facing this error.
Uncaught TypeError: Cannot read properties of undefined (reading 'SendMessage')
Steps to reproduce the behavior:
- Exported the Unity web files using [fuw-2022.1.7f1.unitypackage]
- Tried sending a message to unity using postMessage API
- run in debug mode in chrome
unityWidgetController.postMessage('gameObj', 'changeOrientation', sensorData);
Output:
Invoking error handler due to
Uncaught TypeError: Cannot read properties of undefined (reading 'SendMessage')
TypeError: Cannot read properties of undefined (reading 'SendMessage')
UnityLibrary/index.html 36:31
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/html/dart2js/html_dart2js.dart 15896:13 dispatchEvent]
packages/flutter_unity_widget/src/web/web_unity_widget_controller.dart 209:19 messageUnity
packages/flutter_unity_widget/src/web/web_unity_widget_controller.dart 231:5 postMessage
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54 runBody
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 123:5 _async
packages/flutter_unity_widget/src/web/web_unity_widget_controller.dart 226:28 postMessage
packages/testwebapp/unity_widget_wrapper.dart 56:28 onUnityChanged
packages/testwebapp/unity_widget_wrapper.dart 62:5 passData
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54 runBody
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 123:5 _async
packages/testwebapp/unity_widget_wrapper.dart 60:16 passData
packages/flutter/src/material/ink_well.dart 1072:21 handleTap
packages/flutter/src/gestures/recognizer.dart 253:24 invokeCallback
packages/flutter/src/gestures/tap.dart 627:11 handleTapUp
packages/flutter/src/gestures/tap.dart 306:5 [_checkUp]
packages/flutter/src/gestures/tap.dart 239:7 handlePrimaryPointer
packages/flutter/src/gestures/recognizer.dart 615:9 handleEvent
packages/flutter/src/gestures/pointer_router.dart 98:12 [_dispatch]
packages/flutter/src/gestures/pointer_router.dart 143:9
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart 21:13 forEach
packages/flutter/src/gestures/pointer_router.dart 141:17 [_dispatchEventToRoutes]
packages/flutter/src/gestures/pointer_router.dart 127:7 route
packages/flutter/src/gestures/binding.dart 460:19 handleEvent
packages/flutter/src/gestures/binding.dart 440:14 dispatchEvent
packages/flutter/src/rendering/binding.dart 337:11 dispatchEvent
packages/flutter/src/gestures/binding.dart 395:7
[_handlePointerEventImmediately]
packages/flutter/src/gestures/binding.dart 357:5 handlePointerEvent
packages/flutter/src/gestures/binding.dart 314:7 [_flushPointerEventQueue]
packages/flutter/src/gestures/binding.dart 295:7
[_handlePointerDataPacket]
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/platform_dispatcher.dart 1183:13 invoke1
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/platform_dispatcher.dart 244:5 invokeOnPointerDataPacket
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/pointer_binding.dart 147:39 [_onPointerData]
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/pointer_binding.dart 653:20
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/pointer_binding.dart 594:14
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/pointer_binding.dart 288:16 loggedHandler
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/pointer_binding.dart 179:80
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 334:14 _checkAndCall
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 339:39 dcall
It error message points the following lines of code in Index.html under UnityLibrary folder in web directory.
window.parent.addEventListener('unityFlutterBiding', function (args) {
const obj = JSON.parse(args.data);
mainUnityInstance.SendMessage(obj.gameObject, obj.methodName, obj.message);
});
Unity (please complete the following information):
- Platform: Web(Chrome)
- Version: flutter_unity_widget 2022.2.0
- Unity Editor: 2019.4.39f1
- Mode : Debug
PS
I built the same app in Android app and It works fine. This excludes the possibility of an issue from the app logic.