看到这个简单的类和方法:
import 'dart:async';
import 'dart:convert';
import 'package:http/http.dart';
import 'package:angular/angular.dart';
@Injectable()
class ApiClient {
final Client _http;
static final _headers = { 'Content-Type': 'application/json' };
static final _encodedHeaders = { 'Content-Type': 'application/x-www-form-urlencoded' };
ApiClient(this._http);
Future<T> get<T>(String url, T f(dynamic e)) async {
try {
final response = await _http.get(url);
var data = JSON.decode(response.body);
print(data);
if(data == null)return null;
final ts = f(data);
return ts;
} catch (e) {
_handleError(e);
return null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
它会导致此错误:
意外的标记'未来'.
Future get(String url,T f(dynamic e))async {
^^^^^^
当我重命名方法时说get1错误就消失了.这是正常的吗?我有其他类,方法名为get,工作得很好.我在这里错过了什么吗?
更新:
在我看来,它不是一个标识符问题.因为我可以命名一个方法get,不会有任何错误.此外,还有一些内置类具有名为get(例如Clientclass)的方法.它似乎命名一个泛型方法来get导致错误:get<T>().我赞同Vyacheslav Egorov - 正如评论中所述,我认为这是一个解析器错误.
get 是用于定义getter的内置标识符,不应用作标识符
https://www.dartlang.org/guides/language/language-tour