0
В настоящее время я разрабатываю сайт с дротиком, заменяющий JavaScript. Я хочу, чтобы какой-то код был скрыт для обычного пользователя, а другой код был видимым для зарегистрированных пользователей. Моя идея состояла в том, чтобы иметь (по крайней мере) два файла дротика с функциями main()
, один видимый и один скрытый среднему пользователю. Теперь у меня есть класс с фабрикой, возвращающей кешированный экземпляр. Однако этот экземпляр не кэшируется из файла в файл. Как получить тот же экземпляр в двух разных файлах дарт?Dart Заводы и несколько основных функций
EDIT: Пример кода
Файл file1.dart
import "some_lib.dart";
main(){
var a = new A("string1");
print(a.string);
}
Файл file2.dart
import "some_lib.dart";
main(){
var a = new A("string2");
print(a.string);
}
Файл some_lib.dart
library some_lib;
class A{
String string;
static A _cached;
factory A(String s){
if(_cached == null){
_cached = new A._internal(s);
}
return _cached;
}
A._internal(this.string);
}
Файл index.html
<!DOCTYPE html>
<html>
<head>
<script type="application/dart" src="file1.dart"></script>
<script type="application/dart" src="file2.dart"></script>
<script type="text/javascript" src="packages/browser/dart.js"></script>
</head>
<body>
<h1>THIS IS DARTA</h1>
</body>
</html>
Я ожидаю, что это напечатать
string1
string1
в консоли, но я получаю
string1
string2
Если класс, содержащий заводский конструктор, импортируется (внутри библиотеки), тогда экземпляр должен быть кэширован. Вы можете дать более подробную информацию? Может быть, пример? –
Я тоже этого ожидал, но это не то, что я получаю. Пожалуйста, дайте мне знать, если у вас что-то другое. – budde
Просьба указать точные команды, которые вы выполняете. Если вы используете эти программы в своем браузере, вставьте все HTML-файлы, содержащие теги '