2016-03-28 19 views
2

ダーツWebアプリケーションとブラウザの履歴を統合して、ダーツオブジェクトをwindow.historyスタックにプッシュしたいとします。ダーツオブジェクトをネイティブに - UnimplementedError:他のタイプの構造化クローン

Dartオブジェクト。

class AppState { 
    final int index; 

    AppState(this.index){ 
    } 
} 

アピ https://api.dartlang.org/stable/1.15.0/dart-html/History/pushState.html

これは、例えばで動作しますMap toMap()メソッドと、一致するファクトリコンストラクタがありますが、これは強引な方法です。ダーツフレームワークに頼るだけで、以下のようなスタックダンプが得られます。これは、AppStateがいくつかのシリアライズメソッドを見逃していることを示しています。誰でも知っている?

Uncaught Unhandled exception: 
UnimplementedError: structured clone of other type 
#0  _StructuredClone.walk (file:///mnt/data/b/build/slave/dartium-lucid64-full-stable/build/src/dart/sdk/lib/html/html_common/conversions.dart:136) 
#1  _StructuredClone.convertDartToNative_PrepareForStructuredClone (file:///mnt/data/b/build/slave/dartium-lucid64-full-stable/build/src/dart/sdk/lib/html/html_common/conversions.dart:151) 
#2  convertDartToNative_PrepareForStructuredClone (file:///mnt/data/b/build/slave/dartium-lucid64-full-stable/build/src/dart/sdk/lib/html/html_common/conversions_dartium.dart:4) 
#3  convertDartToNative_SerializedScriptValue (file:///mnt/data/b/build/slave/dartium-lucid64-full-stable/build/src/dart/sdk/lib/html/html_common/conversions.dart:33) 
#4  History.pushState (dart:html:19793) 
#5  AppHistoryCtrl.pushState (package:mintest/app_history_ctrl.dart:35:20) 
+1

http://github.com/dart-lang/sdk –

+1

Okにバグを報告する必要があります。この問題を書きました。 https://github.com/dart-lang/sdk/issues/26108 –

答えて

2

これは、起こりそうなことです。ヒストリーになるためには、指定された構造化クローンアルゴリズムによってシリアル化されます。それは任意のDartオブジェクトを扱う方法を知らない。たとえば、何か歴史の中に何かを押し込むと、JavaScriptコードによってはそれを取り出す可能性があり、それは任意のDartオブジェクトを処理できません。だから、それはMap、または構造化クローンアルゴリズムが理解できる他の構造に変換する必要があります。

+0

ありがとうございます。私は 'toMap()'メソッドを持つソリューションがDartフレームワークに既に存在するシリアライゼーション機能をオーバーライドしているかどうか懸念していました。 –

関連する問題