Я надеюсь, вы извините, что я ожидаю настоящий новичок вопрос, но я не смог найти хорошее решение этой проблемы ...Как проверить тип детали из CustomEvent в Dart?
Если у меня есть простой класс ...
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);
}
}
... как я правильно тестировать и использовать эту деталь, как предполагаемый тип?
Я попытался с помощью «это», но это не работает, если в обработчике события ...
if (event.detail is SegmentedButtonData) {
SegmentedButtonData newSBD = event.detail;
int newIndex = newSBD.index * 3;
print(newIndex.toString());
}
... и когда я закомментировать в «если» я получил ошибку «тип«Строка 'не является подтипом типа' SegmentedButtonData '' newSBD '. ".
Я попытался использовать «как», это тоже не сработало.
Кажется, объект «detail» является строкой, хотя я отправил экземпляр SegmentedButtonData.
Нужно ли сериализовать/де-сериализовать, или я не хватает некоторых деталей? (ха-ха).
Странно. Каково значение строки 'event.detail' в обработчике? – MarioP
@MarioP Если я оставил toString() в SegmentedButtonData, он используется, но если я прокомментирую это, я получаю «экземпляр« SegmentedButtonData ». – ianmjones
так я понимаю, что правильно ... 'event.detail == [your_button_data] .toString()'? Это странно. – MarioP