Вызов метода веб-компонента и ответ на события

Я работаю над проектом Dart, где я создал пользовательский элемент с пакетом Web_ui, который имеет некоторую анимацию. То, что я надеялся сделать, это иметь внутри кода дротика для элемента что-то вроде этого...

class MyElement extends WebComponent {
   ...

   void StartAnimation() { ... }

   ...
}

а затем в функции main() самого приложения dart у меня есть что-то вроде этого...

void main() {
    MyElement elm = new MyElement();
    elm.StartAnimation();  // Kicks off the animation
}

Редактор Dart сообщает мне, что прямое создание веб-компонента в настоящее время не поддерживается. Затем он говорит использовать WebComponent.forElement - но я не совсем понимаю, как использовать это для достижения моей цели.

1 ответ

Хотя вы еще не можете импортировать веб-компоненты в файл Dart, вы можете получить к ним доступ через query() а также .xtag, xtag дает ссылку на экземпляр веб-компонента, с которым связан элемент. Вы должны быть осторожны, чтобы разрешить установку веб-интерфейса, чтобы xtag дается значение.

Вот пример:

import 'dart:async';
import 'dart:html';
import 'package:web_ui/web_ui.dart';

main() {
  Timer.run(() {
    var myElement = query('#my-element').xtag;
    myElement.startAnimation();
  });
}

Это улучшится благодаря возможности импорта компонентов, непосредственно подкласса Element и, возможно, некоторых событий жизненного цикла, которые гарантируют, что вы получите правильный класс из query(), Вот как должен выглядеть пример в будущем:

import 'dart:async';
import 'dart:html';
import 'package:web_ui/web_ui.dart';
import 'package:my_app/my_element.dart';

main() {
  MyElement myElement = query('#my-element');
  myElement.startAnimation();
}
Другие вопросы по тегам