1

Google Dart で Firebase Simple Login を使用する方法を理解した人はいますか? FirebaseSimpleLogin を呼び出すときに function(error, user){} を定義する方法を見つけようとしています。error と user() はどちらもオブジェクトです。

これは、Firebase のサンプル JavaScript コードです。

   var myDataRef = new js.Proxy(js.context.Firebase, 'https://johnstest1.firebaseIO.com/');
    var myDataRef = new Firebase('https://johnstest1.firebaseIO.com/');
    var auth = new FirebaseSimpleLogin(myDataRef, function(error, user) {
      if (error) {
        // an error occurred while attempting login
        console.log(error);
      } else if (user) {
        // user authenticated with Firebase
        console.log('User ID: ' + user.id + ', Provider: ' + user.provider);
      } else {
        // user is logged out
      }
    });

これは、Dart と Firebase の両方で使用するために html ファイルに追加されたコードです。

    <script type='text/javascript' src='https://cdn.firebase.com/v0/firebase.js'></script> 
    <script type='text/javascript' src='https://cdn.firebase.com/v0/firebase-simple-login.js'></script>  
    <script type="application/dart" src="firebasetestlogin.dart"></script>
    <script src="packages/browser/dart.js"></script>
    <script src="packages/browser/interop.js"></script>    

.dart ファイルでは、pubspec.yaml を使用して JavaScript ライブラリがインポートされています。

   import 'package:js/js.dart' as js;

main() では、このコード行は正常に機能し、データベースにデータを書き込むことができます。コメントアウトされている行は元の JavaScript 行ですが、次の行は Dart バージョンであり、機能します。

    js.scoped((){
        // var myDataRef = new Firebase('https://johnstest1.firebaseio.com');
        var myDataRef = new js.Proxy(js.context.Firebase, 'https://johnstest1.firebaseIO.com/');  
    });

これは、メインからの同じコードで、Firebase Simple Login Added の行が追加されています。関数(エラー、ユーザー)のコードの書き方を理解しようとしています。

  js.scoped((){
        // var myDataRef = new Firebase('https://johnstest1.firebaseio.com');
        var myDataRef = new js.Proxy(js.context.Firebase, 'https://johnstest1.firebaseIO.com/');  

       //var auth = new FirebaseSimpleLogin(js.context.Firebase(myDataRef, function(error, user){}{}));   
       var auth = new js.Proxy(js.context.FirebaseSimpleLogin(myDataRef, js.context.function(error, user)));

  });
4

3 に答える 3

3

Js で Dart コールバック関数を使用する場合は、コールバックを作成してパラメーターとして使用する必要があります。

最初に貼り付けた js コードに相当するものは次のとおりです。

var myDataRef = new js.Proxy(js.context.Firebase, 
    'https://johnstest1.firebaseIO.com/');
var auth = new js.Proxy(js.context.FirebaseSimpleLogin, myDataRef, 
    new js.Callback.many((error, user) {
      if (error != null) {
        // an error occurred while attempting login
        window.console.log(error);
      } else if (user != null) {
        // user authenticated with Firebase
        window.console.log('User ID: ${user.id}, Provider: ${user.provider}');
      } else {
        // user is logged out
      }
    }));

注: js パッケージjs.scopedのバージョンが少ないため、これは必要ありません。

于 2013-08-08T07:07:39.013 に答える
3

これは、Dart を使用して Firebase にログインするためのサンプル コードです。これにより、Alexandre Ardhuin からの回答が 1 つの投稿にまとめられ、追加のコードが追加されます。

例は次のとおりです。

  • firebase 参照を取得し、ユーザーがオンラインかどうかを確認します
  • メールとパスワードのログインを使用して新しい Firebase ユーザーを作成する
  • Firebase にログイン
  • child_added リスナーを追加し、データベース内のすべてのデータをコンソールに出力します
  • 一部のデータを Firebase にプッシュし、child_added をトラガーしてデータを表示します。
  • Firebase のログアウト

js パッケージhttp://pub.dartlang.org/packages/jsをプログラムに追加します。

これらの 3 行を HTML ファイルに追加します。

<script src="packages/browser/interop.js"></script>     
<script type='text/javascript' src='https://cdn.firebase.com/v0/firebase.js'></script>    
<script type='text/javascript' src='https://cdn.firebase.com/v0/firebase-simple-login.js'></script>      
  • このコードを .dart ファイルに入れます。

    var YOUR_FIREBASE_PATH = 'https://johnstest1.firebaseIO.com/';
    var emailAddress = "emailAddress@xyz.com";
    var password = "password";
    
    var myDataRef = new js.Proxy(js.context.Firebase, YOUR_FIREBASE_PATH);
    
    // Firebase 
    var auth = new js.Proxy(js.context.FirebaseSimpleLogin, myDataRef, 
      new js.Callback.many((error, user) {
        if (error != null) {
        window.console.log("Firebase login returned a null");         
        // an error occurred while attempting login
        window.console.log(error);
    } else if (user != null) {
        // user authenticated with Firebase
        window.console.log('User ID: ${user.id}, Provider: ${user.provider}');
    } else {
        window.console.log("User is logged out");
        // user is logged out
    }
    

    }) );

  • ログインするための電子メールとパスワードを使用して新しいユーザーを作成します

     // Create a new user using email and password
     auth.createUser(emailAddress, password, 
        new js.Callback.many((error, user) {
        if (error != null && user != null)
        {        
            if (!error) {
                window.console.log('User Id: ' + user.id + ', Email: ' + user.email);
            }
        } 
      })
    );
    
  • Firebase ログイン。

    // Login to firebase
    auth.login('password', js.map({'email': emailAddress, 'password': password}));
    

child_added コールバックを追加します。新しい子がデータベースに追加されると、これが呼び出されます

    // Add a listener for for child_added and gets all the data
    myDataRef.on('child_added',
        new js.Callback.many((snapshot, String previousChildName) {
        try {        
            final message = snapshot.val();
            print("${message.name} : ${message.text}");
        }
        catch (e) {} 
    }));
  • 一部のデータを Firebase にプッシュすると、child_added コールバックがデータベース内の内容をコンソールに出力します。

    // Push some data to Firebase
    myDataRef.push(js.map({"name": 'Mark', "text": 'Works with Dart test 2'}));
    
  • ユーザーを Firebase からログアウトする

    // Logout
    auth.logout();
    
于 2013-08-20T00:30:25.603 に答える
2

現在、Firebase 用の dart-team-initiated dart ラッパーがあります: https://pub.dartlang.org/packages/firebase

Future を使用すると、dart 版は js 版よりもはるかに優れています。

于 2015-09-16T07:38:24.803 に答える