集合中的Firebase-Dart异常

时间:2015-03-30 19:31:52

标签: dart firebase

我正在尝试firebase-dart包, 使用set在数据库中保存正确的值但启动异常:

Closure call with mismatched arguments: function 'call'

NoSuchMethodError: incorrect number of arguments passed to method named 'call'
Receiver: Closure: (dynamic) => dynamic
Tried calling: call(null, "")
Found: call(err)

这是源代码:

library reverser;

import 'dart:html';
import 'package:firebase/firebase.dart' show Firebase;

const firebaseUrl = 'https://laquyfire.firebaseio.com/';

// Example of hooking into the DOM and responding to changes from input fields.
initReverser() {
  var output = querySelector('#out');
  var input = querySelector('#name');
  input.onKeyUp.listen((_) {
    output.text = input.value.split('').reversed.join();
    var fb = new Firebase('${firebaseUrl}');
    var value = {'reversed': output.text};

      fb.set(value).then((result) => print(result.snapshot));    
  });
}

1 个答案:

答案 0 :(得分:1)

源代码似乎基于WebStorm Web Applicaion示例项目。我基于该示例项目创建了一个新项目,除了将已发布的源代码添加到lib/reverser.dart之外,还只做了三件事来使其工作:

  • <head>中的index.html标记中添加了此行:

    <script src="https://cdn.firebase.com/js/client/2.2.2/firebase.js"></script>

  • 将此行添加到dependencies:文件的pubspec.yaml部分:

    firebase: ">=0.5.1 <0.6.0"

  • 从项目目录

  • 中调用pub get

之后,该项目正常运行,反向文本已添加到Firebase数据库中。您的项目是否也进行了相同的更改?可能使用了不同版本的Firebase pub包,或者<script>标记中引用了不兼容的JavaScript文件?我使用的是Dart SDK 1.10.0_r45396。

帖子中的源代码存在一个不相关的问题:成功后,从Firebase.set()返回的未来值将为空,因此print(result.snapshot)将导致异常。