【发布时间】:2013-04-29 13:46:38
【问题描述】:
我希望你能原谅我所期望的是一个真正的新手问题,但我一直无法找到解决这个问题的好方法......
如果我有一个简单的课程...
library segmented_buttons_list;
import 'package:web_ui/observe.dart';
@observable
class SegmentedButtonData {
String description;
int index;
SegmentedButtonData(this.description, this.index);
String toString() => "$description";
}
...并从具有该类的 WebComponent 中分派事件的详细信息...
library segmented_buttons_list;
import 'dart:html';
import 'package:web_ui/web_ui.dart';
import 'package:segmented_buttons_list/segmented_button_data.dart';
class SegmentedButtonComponent extends WebComponent {
int index;
String description;
mainAction() {
SegmentedButtonData detail = new SegmentedButtonData(description, index);
CustomEvent event = new CustomEvent("MainActionEvent", canBubble: true, cancelable: true, detail: detail);
print("SegmentedButtonComponent dispatching ${event.type} for '${event.detail}'.");
dispatchEvent(event);
}
}
...我如何正确测试并将该细节用作预期类型?
我尝试使用“is”,但在事件处理程序中不起作用...
if (event.detail is SegmentedButtonData) {
SegmentedButtonData newSBD = event.detail;
int newIndex = newSBD.index * 3;
print(newIndex.toString());
}
…当我注释掉“if”时,我收到错误“类型'String'不是'newSBD'的'SegmentedButtonData'类型的子类型。”。
我尝试使用“as”,但也没有用。
看起来“详细信息”对象是一个字符串,尽管我发送了一个 SegmentedButtonData 的实例。
我需要序列化/反序列化,还是我遗漏了一些细节? (哈哈)。
【问题讨论】:
-
奇怪。处理程序中字符串
event.detail的值是多少? -
-
所以我理解对了吗...
event.detail == [your_button_data].toString()?这很奇怪。 -
@MarioP 我知道,很奇怪不是吗?我必须看看是否已经为此提出了任何错误,如果没有的话,我想一起举一个小例子并提出它。
-
我想是的。作为一种解决方法,也许您可以使用 JSON 包装和解包对象。
标签: dart dart-webui