Кто-нибудь пробовал использовать библиотеку JavaScript Firebase из Dart?
на Firebase key-value store выглядит интригующе и было бы интересно использовать с HTML-фреймворком Dart.
Они предлагают библиотеку JavaScript для чтения / записи в свою модель. Кто-нибудь пробовал использовать его с Дротиком?
мой план (основанный на очень небольшом знании дротика) состоит в том, чтобы:
- включить свою библиотеку в мой html
- загрузите js.дротик пакет
- создать экземпляр модели через js.Дарт!--10-->
- читать и пишите через модель.
кажется ли это правильным подходом? Или есть лучший способ сделать это?
спасибо
3 ответов
вы можете использовать любую библиотеку Javascript через пакет js.
на Firebase вы должны :
- добавить пакет js на
pubspec.yaml
dependencies:
js: any
- добавить следующее
<script>
на вашу html страницу:
<script src='https://cdn.firebase.com/v0/firebase.js'></script>
<script type="application/dart" src="youDartCode.dart"></script>
<script src="packages/browser/dart.js"></script>
<script src="packages/browser/interop.js"></script>
- использовать Firebase Javascript SDK через пакет js. Что-то вроде :
import 'package:js/js.dart' as js;
void main() {
final myDataRef = new js.Proxy(js.context.Firebase,
'https://xxx.firebaseio-demo.com/');
myDataRef.on('child_added', (snapshot, String previousChildName) {
final message = snapshot.val();
print("${message.name} : ${message.text}");
});
myDataRef.push(js.map({"name": 'myName', "text": 'js interop rocks'}));
}
приведенный выше код дротика эквивалентен следующему коду JavaScript:
var myDataRef = new Firebase('https://xxx.firebaseio-demo.com/');
myDataRef.on('child_added', function(snapshot, previousChildName) {
var message = snapshot.val();
console.log(message.name + " : " + message.text);
}));
myDataRef.push({name: 'myName', text: 'js interop rocks'});
по сути :
когда вам нужно создать экземпляр объекта Javascript, используйте
new js.Proxy(js.context.MyJavascriptObjectName, arg1, arg2, arg3))
,когда вам нужно предоставить анонимный объект Javascript, используйте
js.map({'attr1', value1}, {'attr2', value2})
.
теперь есть обертка для базы.библиотека js в Dart здесь:https://github.com/firebase/firebase-dart/ (также доступный на пабе). Он использует dart: js, как описано в этом потоке, поэтому включение firebase.js по-прежнему требуется!
я получил сообщение об ошибке "разрыв на исключение: ReferenceError: ReceivePortSync не определен", когда Дарт попал сюда.
js.scoped (() {
});
дополнительная строка кода необходима для использования Firebase с Dart. Добавить строку " пакеты/браузер/взаимодействие.js"
<script type="application/dart" src="ScrollViewDemo.dart"></script>
<script src="packages/browser/dart.js"></script>
<script src="packages/browser/interop.js"></script>
<script src='https://cdn.firebase.com/v0/firebase.js'></script>
----------------- Изменить Aug 15 ----------
js.scoped is no longer needed in the newer version of interopt.js