書類によると、それはhttps://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4のForm Postルールに従う必要があります。その情報を見ても、複雑なオブジェクトやマップの点で私にはあまり働かなかった。ダーツURIクラスQueryParametersはどのようにマップ値を処理しますか?
たとえば、リストがある場合:リスト内の各アイテムをストリング化する必要があります。
var params = {"list": [1,2,3]};
// needs to be stringed.
params["list"] = params["list"].map((item)=>item.toString()).toList();
シンプルです。また、すべての基本項目も文字列でなければなりません。
var params = {"number": 1, "boolean": true};
params = params.forEach((k,v)=> params[k].toString());
マップはどのように扱いますか?
var params = {"map": {"a":1,"b":"foo","c":false,"d":[]}};
// ??
私のアプリではとダーツパッドでテストした後、あなたはすべてが文字列であることを確認する必要があるようですので、私は効果的リスト、マップ、そしておそらくより複雑なをカバーする方法を考え出すしようとしていますエンコードするオブジェクト。
var params = {};
params["list"] = [1,2,3];
params["number"] = 1;
params["boolean"] = true;
params["map"] = {"a":1,"b":"foo","c":false,"d":[]};
params.forEach((String key, dynamic value){
if(value is List){
params[key] = value.map((v)=>v.toString()).toList();
}else if(value is Map){
// ????
}else{
params[key] = value.toString();
}
//maybe have an additional one for custom classes, but if they are being passed around they should already have their own JSON Parsing implementations.
}
理想的には、この結果をに渡すことになります。私は、リストの問題を解決しながら、今
Uri myUri = new Uri(queryParameters: params);
と、それがマップを受け取るようにしていません。私の一部は地図全体を文字列にしたいと思っていましたが、良い方法があるかどうかはわかりませんでした。私は誰かが誤って配列を文字列にしたとき、それは私に与えられていないことを知っています:?id = 1 & id = 2ではなく?id =%5B1%2C2%5Dです。
これは実際には私が最終状態になると思っていたもので、マップをエンコードしてその途中で送信します。私は特定の基準があるかどうかはわかりませんでしたが、私はそれを遵守すべきです。 :)私は答えとして非常にまだそれをタグ付けしたくないのかもしれません。 – Fallenreaper
確かに、心配はありません。答えを受け入れるかどうかはいつでもあなた次第です。 –