クラスをデータ レコードとして扱うときの Dart のベスト プラクティスは何ですか?
詳細に説明する: アプリを作成する場合、テーブル行のクラスが作成される可能性があります。のように
class Item { int itemid, String itemName, double score }
Item item = new Item();
これにより、コンパイル時に Dart のタイプミスなどをキャッチできます。(NoSuchMethod に依存するクラスを使用する場合とは異なります。)
また、次のような HTML にバインドするための対応する文字列構造も必要になります。
<input id="itemname" type="text" bind-value="itemEdit.itemName">
したがって、ダーツは次のようになります。
class ItemEdit { String itemId, String itemName, String score }
ItemEdit itemEdit = new ItemEdit();
次に、一方から他方に移動する方法が必要なので、Item にメソッドを追加します。
fromStrings(ItemEdit ie) {
itemid = ie.itemId == null ? null : int.parse(ie.itemId);
itemName = ie.ItemName;
score = ie.score == null ? null : double.parse(ie.score);
}
そしてその逆:
toStrings(ItemEdit ie) {
ie.itemid = itemId == null ? '' : ie.itemId.toString();
ie. itemName = itemName == null ? '' : itemname; // Web_ui objects to nulls
ie.score = score == null ? null : score.toStringAsFixed(2);
}
また、データベースから jason データを取得するため、Item に別のメソッドを追加する必要があります。
fromJson(final String j) {
Map v = JSON.parse(j);
itemid = v['itemid'];
itemname = v['itemname'];
score = v['score'];
}
そして、デフォルト値に戻せるようにする必要があります:
setDefaults() { itemId = 0; itemName = "New item"; score = 0; }
この冗長さは、私が再び COBOL を書いているような気分にさせてくれます!
私の理解、または Dart/WebUI ライブラリのいずれかで、ここには根本的なものが欠けています。
私が書きたいのは次のようなものです
class Item extends DataRecord {
int itemid = 0,
String itemName = 'New item',
double score = 0.0;
}
次に、さらにコーディングすることなく、次のようなコードを記述できるようにします
item.toStrings();
...
item.fromStrings();
...
item.fromJson(json);
...
item.setDefaults(); // results in {0,'New item',0.0}
そしてHTMLに書くことができるように:
value="{{item.strings.score}}"
これが可能であれば、現在書いているコードよりも速く、単純で、明確で、エラーが発生しにくいものになるでしょう。