Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unhandled Exception: Converting object to an encodable object failed: Instance of 'DiagramData' #54

Open
Alex-test-code opened this issue Jan 31, 2025 · 1 comment

Comments

@Alex-test-code
Copy link

Hello everyone!
I got an error when testing diagram_editor: ^0.2.2:
Unhandled Exception: Converting object to an encodable object failed: Instance of 'DiagramData'

Test environment:
Android studio ladybug feature drop 2024.22
Flutter v3.27.3
diagram_editor: ^0.2.2
Official pub dev example example code, download address: https://github.com/Arokip/fdl_demo_app/archive/refs/heads/master.zip

After establishing a connection line between any two nodes, an error occurs after clicking the "Serialize" button. The error prompt is as follows:

When running the Chrome version:
======== Exception caught by gesture ===============================================================
The following JsonUnsupportedObjectError was thrown while handling a gesture:
Converting object to an encodable object failed: Instance of 'DiagramData'

When the exception was thrown, this was the stack:
dart-sdk/lib/internal/js_dev_runtime/private/ddc_runtime/errors.dart 288:3 throw
dart-sdk/lib/_internal/js_dev_runtime/private/profile.dart 110:39 writeObject
dart-sdk/lib/convert/json.dart 982:16 printOn
dart-sdk/lib/convert/json.dart 967:5 stringify
dart-sdk/lib/convert/json.dart 345:30 convert
dart-sdk/lib/convert/json.dart 231:45 encode
dart-sdk/lib/convert/json.dart 114:10 jsonEncode
packages/diagram_editor/src/abstraction_layer/rw/model_reader.dart 77:12 serializeDiagram
packages/diagram_editor_apps/pub_example/pub_editor.dart 252:44 serialize
packages/diagram_editor_apps/pub_example/pub_editor.dart 41:65
packages/flutter/src/material/ink_well.dart 1176:21 handleTap
packages/flutter/src/gestures/recognizer.dart 351:24 invokeCallback
packages/flutter/src/gestures/tap.dart 656:11 handleTapUp
packages/flutter/src/gestures/tap.dart 313:5 [_checkUp]
packages/flutter/src/gestures/tap.dart 246:7 handlePrimaryPointer
packages/flutter/src/gestures/recognizer.dart 703:9 handleEvent
packages/flutter/src/gestures/pointer_router.dart 98:7 [_dispatch]
packages/flutter/src/gestures/pointer_router.dart 143:9
dart-sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart 21:7 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 502:5 handleEvent
packages/flutter/src/gestures/binding.dart 482:14 dispatchEvent
packages/flutter/src/rendering/binding.dart 457:11 dispatchEvent
packages/flutter/src/gestures/binding.dart 427:7 [_handlePointerEventImmediately]
packages/flutter/src/gestures/binding.dart 390:5 handlePointerEvent
packages/flutter/src/gestures/binding.dart 337:7 [_flushPointerEventQueue]
packages/flutter/src/gestures/binding.dart 306:9 [_handlePointerDataPacket]
lib/_engine/engine/platform_dispatcher.dart 1423:5 invoke1
lib/_engine/engine/platform_dispatcher.dart 336:5 invokeOnPointerDataPacket
lib/_engine/engine/pointer_binding.dart 405:30 [_sendToFramework]
lib/_engine/engine/pointer_binding.dart 225:7 onPointerData
lib/_engine/engine/pointer_binding.dart 1047:20
lib/_engine/engine/pointer_binding.dart 948:7
lib/_engine/engine/pointer_binding.dart 541:9 loggedHandler
dart-sdk/lib/_internal/js_dev_runtime/patch/js_allow_interop_patch.dart 212:27 _callDartFunctionFast1
Handler: "onTap"
Recognizer: TapGestureRecognizer#ad3ea
debugOwner: GestureDetector
state: possible
won arena
finalPosition: Offset(723.0, 22.0)
finalLocalPosition: Offset(22.2, 18.0)
button: 1
sent tap down

When running the Windows version:

[ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: Converting object to an encodable object failed: Instance of 'DiagramData'
0 _JsonStringifier.writeObject (dart:convert/json.dart:793:7)
1 _JsonStringStringifier.printOn (dart:convert/json.dart:982:17)
2 _JsonStringStringifier.stringify (dart:convert/json.dart:967:5)
3 JsonEncoder.convert (dart:convert/json.dart:345:30)
4 JsonCodec.encode (dart:convert/json.dart:231:45)
5 jsonEncode (dart:convert/json.dart:114:10)
6 CanvasModelReader.serializeDiagram (package:diagram_editor/src/abstraction_layer/rw/model_reader.dart:77:12)
7 CustomPolicy.serialize (package:blink/client/dashboard/flowChart/my_operation_area_f.dart:362:44)
8 _MyFloatingActionButton._myBuildFloatingActionButton. (package:blink/client/dashboard/flowChart/my_floating_button.dart:168:37)
9 _InkResponseState.handleTap (package:flutter/src/material/ink_well.dart:1176:21)
10 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:351:24)
11 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:656:11)
12 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:313:5)
13 BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:246:7)
14 PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:703:9)
15 PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:98:12)
16 PointerRouter._dispatchEventToRoutes. (package:flutter/src/gestures/pointer_router.dart:143:9)
17 _LinkedHashMapMixin.forEach (dart:_compact_hash:726:13)
18 PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:141:18)
19 PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:127:7)
20 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:502:19)
21 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:482:22)
22 RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:457:11)
23 GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:427:7)
24 GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:390:5)
25 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:337:7)
26 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:306:9)
27 _invoke1 (dart:ui/hooks.dart:328:13)
28 PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:450:7)
29 _dispatchPointerDataPacket (dart:ui/hooks.dart:262:31)

Further testing found that when the Flutter version is >= 3.24.0, using diagram_editor: 0.2.1 or 0.2.2 will result in the above error! !

Does anyone know how to solve this problem?

@pklosek
Copy link

pklosek commented Feb 14, 2025

The Color class changed toStringI() and the default code for serialization of Color does not work.

If you have custom objects with color, this is where the issue lies.

you might want to change your serialization to this one for color - it is compatibile with old one and does not use deprecated variables
@OverRide
int toJson(Color object) {
final a = (object.a * 255).round();
final r = (object.r * 255).round();
final g = (object.g * 255).round();
final b = (object.b * 255).round();
return (a << 24) | (r << 16) | (g << 8) | b;
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants