Я надеюсь, вы извините, что я ожидаю, что это настоящий вопрос новичка, но я не смог найти хорошее решение этой проблемы…
Если у меня есть простой класс...
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";
}
… и отправить событие из веб-компонента с этим классом в деталях…
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());
}
… и когда я закомментировал «если», я получил ошибку «тип« String »не является подтипом типа« SegmentedButtonData »« newSBD »».
Я пробовал использовать "как", это тоже не сработало.
Кажется, что объект «detail» представляет собой строку, хотя я отправил экземпляр SegmentedButtonData.
Нужно ли мне сериализовать/десериализовать, или мне не хватает какой-то детали? (ха-ха).
event.detail
в обработчике? - person MarioP   schedule 06.05.2013event.detail == [your_button_data].toString()
? Это странно. - person MarioP   schedule 06.05.2013