Подтвердить что ты не робот

Вызов javascript из Dart

я смог запустить предупреждающее сообщение из дротика, но не смог понять, как вызвать функцию, которую я написал в другом файле js из dart. Это было бы отличным пунктом продажи, если бы это было прямо. Я видел этот пост, который заставил меня начать, но я чувствую, что должен быть способ, поэтому, пожалуйста, поделитесь любовью, если вы это поняли.

Вот что я сделал:

  • Добавьте это в файл yaml:

    зависимости: ЯШ:   host: js

  • Добавить операцию импорта в начало файла dart: import 'package: js/js.dart' как js;

  • Добавьте этот бит кода для отображения предупреждающего сообщения

    js.scoped(() {         js.context.alert( "прыгать от радости!" );        });

  • Здесь часть, которая, как я думаю, должна работать, но не делает: учитывая, что у меня есть функция javascript doSomething(), я должен иметь возможность вызывать

    js.context.doSomething();

4b9b3361

Ответ 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);
  }