Вызов javascript из Dart
я смог запустить предупреждающее сообщение из дротика, но не смог понять, как вызвать функцию, которую я написал в другом файле js из dart. Это было бы отличным пунктом продажи, если бы это было прямо. Я видел этот пост, который заставил меня начать, но я чувствую, что должен быть способ, поэтому, пожалуйста, поделитесь любовью, если вы это поняли.
Вот что я сделал:
-
Добавьте это в файл yaml:
зависимости: ЯШ: host: js
-
Добавить операцию импорта в начало файла dart: import 'package: js/js.dart' как js;
-
Добавьте этот бит кода для отображения предупреждающего сообщения
js.scoped(() { js.context.alert( "прыгать от радости!" ); });
-
Здесь часть, которая, как я думаю, должна работать, но не делает: учитывая, что у меня есть функция javascript doSomething(), я должен иметь возможность вызывать
js.context.doSomething();
Ответы
Ответ 1
Сначала добавьте пакет js в качестве зависимости в ваш pubspec.yaml
:
dependencies:
js: any
Затем вы можете использовать свою собственную функцию js myFunc()
следующим образом:
import 'package:js/js.dart' as js;
main() {
js.context.myFunc();
}
js.context
- это псевдоним window
javascript.
См. Использование JavaScript от Dart: js Library для более подробной информации.
Ответ 2
Может быть, мой ответ будет кому-то полезен, поэтому я публикую простой вызов функции js из кода Dart.
добавить зависимость
dependencies:
js: any
создать файл Js, скажем, test.js
function Test() {
return 12+20;
}
добавьте вышеуказанный файл test.js
в <script src="...">
index.html <script src="...">
Взаимодействие вышеуказанной функции JavaScript в дартс
@JS()
library t;
import 'package:js/js.dart';
@JS()
external int Test();
class MyOwn {
MyOwn();
int get value => Test();
}
и в angularDart TODOLIST (который доступен по умолчанию)
@override
Future<Null> ngOnInit() async {
print(MyOwn().value);
}