以下是关于googleSignIn:MissingPluginException的错误(在channel-plugins



我在尝试继续使用googleSignIn时出错

我到处寻找解决方案,甚至stackoverflow中的每一个标题都读过,并应用了它们所悲伤的内容,但似乎无法解决

E/flutter (18732): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: 
MissingPluginException(No implementation found for method init on channel 
plugins.flutter.io/google_sign_in)
E/flutter (18732): #0      MethodChannel._invokeMethod 
(package:flutter/src/services/platform_channel.dart:156:7)
E/flutter (18732): <asynchronous suspension>
E/flutter (18732): #1      GoogleSignIn._callMethod 
(package:google_sign_in/google_sign_in.dart:233:5)
E/flutter (18732): <asynchronous suspension>
E/flutter (18732): #2      GoogleSignIn.signIn.isCanceled 
(package:google_sign_in/google_sign_in.dart)
E/flutter (18732): <asynchronous suspension>
E/flutter (18732): 

提供代码如下

在我希望它用我在initstate中指定的静默条目显示错误的地方,我首先在那里得到错误,然后当我点击谷歌登录按钮时,我得到了我在开始时详细添加的错误,你可以按照这里的代码操作

final GoogleSignIn googlegiris = GoogleSignIn();
final bool girdimi=false;
@override
void initState() {
googlegiris.onCurrentUserChanged.listen((googleHesap) {
setState(() {
kullaniciKontrol(googleHesap);
});
}, onError: (gHata) {
print("Hata Mesaj: " + gHata.toString());
});
googlegiris.signInSilently(suppressErrors: false).then((googleHesap2) {
setState(() {
kullaniciKontrol(googleHesap2);
});
}).catchError((gHata) {
print("Hata Mesaj 2: " + gHata.toString());
});
super.initState();
}
kullaniciGiris() {
setState(() {
googlegiris.signIn();
});
}
kullaniciKontrol(GoogleSignInAccount girisHesap) async {
if (girisHesap != null) {
await kullaniciFireStoreKayit();
setState(() {
girdimi = true;
});
} else {
setState(() {
girdimi = false;
});
}
}
kullaniciFireStoreKayit() async {
final GoogleSignInAccount gAnlikKullanici = googlegiris.currentUser;
DocumentSnapshot<Map<String, dynamic>> documentSnapshot = await kullaniciRef.doc(gAnlikKullanici.id).get();
if (!documentSnapshot.exists) {
final username = await Navigator.push(context, MaterialPageRoute(builder: (context) => HesapOlusturmaSayfasi()));
kullaniciRef.doc(gAnlikKullanici.id).set({
"id": gAnlikKullanici.id,
"profileName": gAnlikKullanici.displayName,
"username": username,
"url": gAnlikKullanici.photoUrl,
"email": gAnlikKullanici.email,
"biography": "",
"timestamp": timestamp,
});
await takipciRef.doc(anlikKullanici.id).collection("takipciler").doc(anlikKullanici.id).set({});
documentSnapshot = await kullaniciRef.doc(anlikKullanici.id).get();
}
anlikKullanici = Kullanici.fromDocument(documentSnapshot.data());
}
@override
Widget build(BuildContext context) {
if (girdimi == true) {
return GirisEkran();`enter code here`
} else {
return kayitEkrani();
}
}

如果你使用的是google_sign_in 4.1.0或更高版本,你应该可以在网络、iOS和Android上使用。

任何低于4.1.0的内容,都需要将google_sign_in_web添加到pubspec.yaml.中

这个异常是什么意思

它是Flutter插件应该使用的多平台插件概念的结果,称为Federated plugins,由多个子包组成:

  1. 接口,每个平台都必须实现
  2. app-package,提供应该在flutter应用程序中使用的API
  3. 任何其他平台实现

当前平台用其实现覆盖当前平台接口实例。请在官方Flutter Federated插件文档中阅读更多关于的信息。

google_sign_In包的情况下,默认实现是移动应用程序通常使用的平台通道实现。在web上,使用了不同的实现。

因此,平台通道异常可能会发生,因为您在web上试图在没有web实现的情况下运行它,或者在任何其他尚未实现平台的平台上运行它(目前只有web、iOS和Android实现(。如果插件页面上支持某个平台,您可以在google_sign_in包的名称下检查。

我自己解决了这个问题,ı去了这个网站https://console.cloud.google.com/并且使用我的Google帐户启用了Google People API,该帐户创建了firestore。我从https://pub.dev/packages/google_sign_in在Android集成中

相关内容

最新更新