dart - 有没有人尝试过在 Dart 中使用 Firebase javascript 库?

标签 dart firebase

Firebase键值存储看起来很有趣,与 Dart 的 HTML 框架一起使用会很有趣。

他们提供了一个 JavaScript 库来读取/写入他们的模型。有人试过在 Dart 上使用它吗?

我的计划(基于很少的 Dart 知识)是:

  • 在我的 html 中包含他们的库
  • 加载 js.dart 包
  • 通过 js.dart 实例化模型
  • 通过模型读取和写入。

  • 这看起来是正确的方法吗?或者,有没有更好的方法来做到这一点?

    谢谢

    最佳答案

    您可以通过 js package 使用任何 Javascript 库。 .

    对于 Firebase你必须 :

  • 添加 js package给您的 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 package .类似:

  • 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'}));
    }
    

    上面的 Dart 代码相当于下面的 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}) .
  • 关于dart - 有没有人尝试过在 Dart 中使用 Firebase javascript 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14904486/

    相关文章:

    flutter - 无法从抽屉中关闭alertDialog

    Dart 库和部件未双向解析

    swift - Firebase 并行查询

    java - 应用程序因向 FirebaseDatabase.getReference() 传递空值而崩溃

    websocket - Flutter 使用 dart 实现 socket.io

    mobile - 避免在onPress按钮中为setState锁定小部件?

    dart - Flutter 小部件测试 : StreamBuilder snapshot has connectionState = waiting with a non-empty Stream

    javascript - 尝试仅添加到用户时不断获得缺少的权限

    ios - 将数据从 firebase 获取到 UITableViewController - swift

    firebase - 如何关闭 firestore 中子集合的自动索引