można użyć dowolnej biblioteki JavaScript przez js package.
Dla Firebase trzeba:
dependencies:
js: any
- dodać następujące
<script>
na stronę 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>
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'}));
}
Powyższy kod Dart jest równoznaczne z poniższego kodu 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'});
Zasadniczo:
kiedy trzeba instancję Obiekt JavaScript, użyj new js.Proxy(js.context.MyJavascriptObjectName, arg1, arg2, arg3))
,
Gdy musisz podać obiekt anonimowy Javascript, użyj js.map({'attr1', value1}, {'attr2', value2})
.
[Założyciel Firebase] Jestem nie zdaje sobie sprawy z tego, że ktoś próbuje tego do tej pory, ale chciałbym zobaczyć, jak to działa. Jeśli otrzymasz działającą implementację, daj nam znać! –
cześć Andy, czy byłeś w stanie to zrobić? patrząc na to samo dla osobistego projektu. – Riz
Śmieszne, powinieneś zapytać. Właśnie wróciłem, żeby spojrzeć na Dart. Jest w tym tyle rzeczy do polubienia. Chciałbym tylko, żeby to był rzeczywiście Smalltalk ;-) W każdym razie krótka odpowiedź brzmi "nie", ale niektóre informacje na dole wątku wyglądają obiecująco. –