Javascript 如何将Google Dart与Firebase简单登录一起使用(函数中的pass函数)

Javascript 如何将Google Dart与Firebase简单登录一起使用(函数中的pass函数),javascript,dart,firebase,Javascript,Dart,Firebase,有人知道如何使用Firebase简单登录和Google Dart吗?我试图弄清楚调用FirebaseSimpleLogin时如何定义函数(错误,用户){}。error和user()都是对象 这是来自Firebase的示例javascript代码 var myDataRef = new js.Proxy(js.context.Firebase, 'https://johnstest1.firebaseIO.com/'); var myDataRef = new Firebase('h

有人知道如何使用Firebase简单登录和Google Dart吗?我试图弄清楚调用FirebaseSimpleLogin时如何定义函数(错误,用户){}。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
      }
    });
这是添加到html文件中供Dart和Firebase使用的代码

    <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>    
在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/');  
    });
这与main中添加的Firebase Simple Login行代码相同。我一直在试图找出如何为函数(错误,用户)编写代码


当您想在Js中使用Dart回调函数时,必须创建一个函数并将其用作参数

第一个粘贴的js代码的dart等价物是:

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((错误,用户){
if(错误!=null){
//尝试登录时出错
window.console.log(错误);
}else if(用户!=null){
//使用Firebase进行身份验证的用户
log('User ID:${User.ID},Provider:${User.Provider}');
}否则{
//用户已注销
}
}));

注意:您可以避免不需要的
js.scoped
,因为。

的版本很少。当您想在js中使用Dart回调函数时,您必须创建一个并将其用作参数

第一个粘贴的js代码的dart等价物是:

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((错误,用户){
if(错误!=null){
//尝试登录时出错
window.console.log(错误);
}else if(用户!=null){
//使用Firebase进行身份验证的用户
log('User ID:${User.ID},Provider:${User.Provider}');
}否则{
//用户已注销
}
}));

注意:您可以避免不需要的
js.scoped

这是一些使用Dart登录Firebase的示例代码。这篇文章将Alexandre Ardhuin的答案与一些附加代码结合在一起

例如:

  • 获取firebase参考并检查用户是否在线
  • 使用电子邮件和密码登录创建新的Firebase用户
  • 登录Firebase
  • 添加一个子侦听器,并将数据库中的任何数据打印到控制台
  • 将一些数据推送到Firebase,并将添加到显示数据中的子对象推送到Firebase
  • 注销Firebase
将js包添加到您的程序中

将这三行添加到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>      
}) );

  • 使用电子邮件和密码创建新用户登录

     // 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回调,如果一个新的child被添加到数据库中,它将被调用

        // 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_回调将把数据库中的任何内容打印到控制台

      // Push some data to Firebase
      myDataRef.push(js.map({"name": 'Mark', "text": 'Works with Dart test 2'}));
      
    • 将用户从Firebase注销

      // Logout
      auth.logout();
      

    这是一些使用Dart登录Firebase的示例代码。这篇文章将Alexandre Ardhuin的答案与一些附加代码结合在一起

    例如:

    • 获取firebase参考并检查用户是否在线
    • 使用电子邮件和密码登录创建新的Firebase用户
    • 登录Firebase
    • 添加一个子侦听器,并将数据库中的任何数据打印到控制台
    • 将一些数据推送到Firebase,并将添加到显示数据中的子对象推送到Firebase
    • 注销Firebase
    将js包添加到您的程序中

    将这三行添加到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>      
    
    }) );

  • 使用电子邮件和密码创建新用户登录

     // 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回调,如果一个新的child被添加到数据库中,它将被调用

        // 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_回调将把数据库中的任何内容打印到控制台

      // Push some data to Firebase
      myDataRef.push(js.map({"name": 'Mark', "text": 'Works with Dart test 2'}));
      
    • 将用户从Firebase注销

      // Logout
      auth.logout();
      

    现在有一个由dart团队为Firebase启动的dart包装器:


    随着Future的使用,dart版本比js版本更令人敬畏

    现在有一个dart团队为Firebase启动的dart包装器:


    随着Future的使用,dart版本比js版本更令人敬畏

    之前有一个关于将Firebase与Dart结合使用的问题:-也许那里的答案会有所帮助?这比另一篇文章上的问题更复杂,我不确定是否应该在原始文章中添加第二个问题或创建一个新主题。我看到一个帖子,人们因为某人在同一个帖子上问了第二个问题而生气。关于在函数中传递函数的部分使它变得更加困难。之前有一个关于使用Firebase和Dart的问题:-也许那里的答案会有帮助?这比另一篇文章上的问题更复杂,我不确定是否应该在原始文章中添加第二个问题或创建新主题。我看到一个帖子,人们因为某人在同一个帖子上问了第二个问题而生气。关于在函数中传递函数的部分使它变得更加困难。当它到达if(error)语句时,我收到错误消息“Breaking on exception:null”。自从我当前安装了(浏览器、js和meta)之后,是否还有其他软件包需要安装?您之所以会出现此错误,是因为
    error
    nu