我正在尝试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));
});
}
答案 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)
将导致异常。