我正在尝试将我的应用程序连接到谷歌日历。
我已按照指示进行操作。激活API,生成API Key和Auth。但我仍然收到此错误。这是我的应用程序开发的最后一步。
我首先测试我找到的一个示例,以了解其工作原理。但我收到一条错误消息。
请问您能给我指出正确的方向吗?我已经查看了很多有关此问题的视频和网页,但没有找到可行的解决方案。谢谢你。
import 'dart:developer';
import 'package:flutter/material.dart';
import "package:googleapis_auth/auth_io.dart";
import 'package:googleapis/calendar/v3.dart';
import 'package:url_launcher/url_launcher.dart';
class CalendarClient {
static const _scopes = [CalendarApi.calendarScope];
insert(title, startTime, endTime) {
var _clientID = ClientId("here I have my client ID");
clientViaUserConsent(_clientID, _scopes, prompt).then((AuthClient client) {
var calendar = CalendarApi(client);
calendar.calendarList.list().then((value) => print("VAL________$value"));
String calendarId = "primary";
Event event = Event(); // Create object of event
event.summary = title;
EventDateTime start = EventDateTime();
start.dateTime = startTime;
start.timeZone = "GMT+05:00";
event.start = start;
EventDateTime end = EventDateTime();
end.timeZone = "GMT+05:00";
end.dateTime = endTime;
event.end = end;
try {
calendar.events.insert(event, calendarId).then((value) {
print("ADDEDDD_________________${value.status}");
if (value.status == "confirmed") {
log('Event added in google calendar');
} else {
log("Unable to add event in google calendar");
}
});
} catch (e) {
log('Error creating event $e');
}
});
}
void prompt(String url) async {
print("Please go to the following URL and grant access:");
print(" => $url");
print("");
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
}
import 'package:flutter/material.dart';
import 'package:flutter_datetime_picker/flutter_datetime_picker.dart';
import 'calendar_test.dart';
class Home_Test_Calendar_Google extends StatefulWidget {
const Home_Test_Calendar_Google({super.key});
@override
State <Home_Test_Calendar_Google> createState() => _Home_Test_Calendar_GoogleState();
}
class _Home_Test_Calendar_GoogleState extends State<Home_Test_Calendar_Google> {
CalendarClient calendarClient = CalendarClient();
DateTime startTime = DateTime.now();
DateTime endTime = DateTime.now().add(const Duration(days: 1));
final TextEditingController _eventName = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
body: _body(context),
);
}
_body(BuildContext context) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Row(
children: <Widget>[
TextButton(
onPressed: () {
DatePicker.showDateTimePicker(context,
showTitleActions: true,
minTime: DateTime(2022, 11, 5),
maxTime: DateTime(2200, 6, 7), onChanged: (date) {
print('change $date');
}, onConfirm: (date) {
setState(() {
startTime = date;
});
}, currentTime: DateTime.now(), locale: LocaleType.en);
},
child: const Text(
'Event Start Time',
style: TextStyle(color: Colors.blue),
)),
Text('$startTime'),
],
),
Row(
children: <Widget>[
TextButton(
onPressed: () {
DatePicker.showDateTimePicker(context,
showTitleActions: true,
minTime: DateTime(2019, 3, 5),
maxTime: DateTime(2200, 6, 7), onChanged: (date) {
print('change $date');
}, onConfirm: (date) {
setState(() {
endTime = date;
});
}, currentTime: DateTime.now(), locale: LocaleType.en);
},
child: const Text(
'Event End Time',
style: TextStyle(color: Colors.blue),
)),
Text('$endTime'),
],
),
Padding(
padding: const EdgeInsets.all(12.0),
child: TextField(
controller: _eventName,
decoration: const InputDecoration(hintText: 'Enter Event name'),
),
),
ElevatedButton(
child: const Text(
'Insert Event',
),
// color: Colors.grey,
onPressed: () {
//log('add event pressed');
calendarClient.insert(
_eventName.text,
startTime,
endTime,
);
}),
],
),
);
}
}
你找到解决办法了吗?如果是,请告诉我 谢谢!