Dart 安装google api日历时出现抖动省道错误

Dart 安装google api日历时出现抖动省道错误,dart,flutter,Dart,Flutter,我将显示谷歌日历中的事件列表。 我遵循了以下链接中已经给出的示例: 我的剧本如下: import'package:http/http.dart'作为http 假设我已登录 GoogleSignIn _googleSignIn = GoogleSignIn( scopes: <String>[ 'email', 'https://www.googleapis.com/auth/contacts.readonly', 'https://www.googleap

我将显示谷歌日历中的事件列表。 我遵循了以下链接中已经给出的示例:

我的剧本如下:

import'package:http/http.dart'作为http

假设我已登录

GoogleSignIn _googleSignIn = GoogleSignIn(
  scopes: <String>[
    'email',
    'https://www.googleapis.com/auth/contacts.readonly',
    'https://www.googleapis.com/auth/calendar'
  ],
);'
GoogleSignIn\u GoogleSignIn=GoogleSignIn(
范围:[
“电子邮件”,
'https://www.googleapis.com/auth/contacts.readonly',
'https://www.googleapis.com/auth/calendar'
],
);'
类GoogleHttpClient扩展了http.BaseClient{
地图标题;
GoogleHttpClient(this._headers):super();
@凌驾
未来发送(http.BaseRequest请求)=>
super.send(request..headers.addAll(_headers));//有错误“方法“send”在超类型中总是抽象的”
@凌驾
未来头(对象url,{Map headers})=>
header(url,headers:headers..addAll(_headers));
}
void getCalendarEvents()异步{
最终authHeaders=\u googleSignIn.currentUser.authHeaders;
final httpClient=new GoogleHttpClient(authHeaders);//出现错误“无法将参数类型'Future'分配给参数类型'Map'”
var calendar=new calendar.CalendarApi(new http.Client());
var calEvents=calendar.events.list(“主”);
calEvents.then((Calendar.Events){
events.items.forEach((Calendar.Event事件){print(Event.summary);});
});
}
由于错误,上述脚本无法运行

方法“send”在超类型中始终是抽象的

有人能帮我吗?

如果你的代码基于,你会看到我的代码中有一个
@覆盖未来发送(…)

GoogleHttpClient
扩展了缺少
send
实现的
抽象类IOClient
,因此具体的子类需要实现它

这就是错误消息的内容。

如果您的代码是基于的,您将看到我的代码中有一个
@override Future send(…)

GoogleHttpClient
扩展了缺少
send
实现的
抽象类IOClient
,因此具体的子类需要实现它

这就是错误消息的内容。

1这是错误

//have error "The argument type 'Future<Map<String, String>>' can't be assigned to the parameter type 'Map<String, String>'"
2:改变如下

var calendar = new Calendar.CalendarApi(new http.Client());

=======>最终版本:

void getCalendarEvents() async {
final authHeaders = await _googleSignIn.currentUser.authHeaders;
final httpClient = new GoogleHttpClient(authHeaders);
var calendar = new Calendar.CalendarApi(httpClient);
var calEvents = calendar.events.list("primary");
calEvents.then((Calendar.Events events) {
  events.items.forEach((Calendar.Event event) {print(event.summary);});
});
}
这对我有用

1这是一个错误

//have error "The argument type 'Future<Map<String, String>>' can't be assigned to the parameter type 'Map<String, String>'"
2:改变如下

var calendar = new Calendar.CalendarApi(new http.Client());

=======>最终版本:

void getCalendarEvents() async {
final authHeaders = await _googleSignIn.currentUser.authHeaders;
final httpClient = new GoogleHttpClient(authHeaders);
var calendar = new Calendar.CalendarApi(httpClient);
var calEvents = calendar.events.list("primary");
calEvents.then((Calendar.Events events) {
  events.items.forEach((Calendar.Event event) {print(event.summary);});
});
}

这对我有用

用IOStreamedResponse替换StreamedResponse 添加IOClient库
类GoogleHttpClient扩展IOClient
替换为
类GoogleHttpClient扩展http.BaseClient

将StreamedResponse替换为IOStreamedResponse 添加IOClient库
类GoogleHttpClient扩展IOClient
替换为
类GoogleHttpClient扩展http.BaseClient

谢谢您的快速回答。如何实现抽象类
IOClient
本身?我只是将其定义如下:
import'package:http/http.dart'作为http谢谢,对不起,我不明白这个评论。请检查答案中的代码,谢谢您的快速回答。如何实现抽象类
IOClient
本身?我只是将其定义如下:
import'package:http/http.dart'作为http谢谢,对不起,我不明白这个评论。请把答案中的代码填在表格中
void getCalendarEvents() async {
final authHeaders = await _googleSignIn.currentUser.authHeaders;
final httpClient = new GoogleHttpClient(authHeaders);
var calendar = new Calendar.CalendarApi(httpClient);
var calEvents = calendar.events.list("primary");
calEvents.then((Calendar.Events events) {
  events.items.forEach((Calendar.Event event) {print(event.summary);});
});
}