I/flutter (22027):MissingPluginException(在通道 plugins.flutter.io/cloud_firestore 上找不到方法 DocumentRefer
Posted
技术标签:
【中文标题】I/flutter (22027):MissingPluginException(在通道 plugins.flutter.io/cloud_firestore 上找不到方法 DocumentReference#setData 的实现)【英文标题】:I/flutter (22027): MissingPluginException(No implementation found for method DocumentReference#setData on channel plugins.flutter.io/cloud_firestore) 【发布时间】:2020-05-11 18:25:49 【问题描述】:Future<void> _getUserData() async
final database = Firestore.instance;
try
FirebaseUser _currentUser = await FirebaseAuth.instance.currentUser();
String authid =_currentUser.uid;
String email = _currentUser.email;
Map<String, String> userData =
'AuthUserId':'$authid',
'Email':'$email',
'FullName': '',
'MobileNum': '',
'Address': '',
'City/Village': '',
'District': '',
'State': '',
'PinCode': '',
;
database.collection('UserData').add(userData).catchError((e)
print(e);
);
catch (e)
print(e);
@override
void initState()
super.initState();
_getUserData();
“我正在尝试将数据插入云 Firestore,并且我在 initState() 中调用了此函数,但我遇到了错误,正如我上面提到的那样
【问题讨论】:
【参考方案1】:我试过了,对我有帮助
flutter clean
flutter packages get
稍后,卸载应用程序并尝试重新安装它✌?
【讨论】:
【参考方案2】:确保您使用的是最新的cloud_firestore
版本。然后执行:
flutter clean
flutter packages get
更新,从cloud_firestore
0.14.0 版开始:
setData()
已替换为 set()
。其他有用的链接:
The getter 'instance' isn't defined for the type 'Firestore'
【讨论】:
我有最新的 cloud_firestrore,我做了和你提到的一样的事情,但是在更新颤振之后它在正常工作之前发生了 你用的是什么flutter版本? Flutter 1.12.13+hotfix.5 • 通道稳定 • github.com/flutter/flutter.git 框架 • 修订版 27321ebbad(7 周前) • 2019-12-10 18:15:01 -0800 引擎 • 修订版 2994f7e1e6 工具• Dart 2.7.0 你关闭 ide 了吗? @Bawantha 在您的 pubspec.yaml 和解释中添加另一个问题,并将其添加到评论中,以便我可以检查,还有您的 build.gradle【参考方案3】:如果您正在使用 Visual Studio Code 并在 ios 模拟器上运行您的项目,那么它可能无法正常工作。您可以从 Xcode 运行您的项目,它不会出现任何问题,您必须打开 .xcworkspace 文件。
【讨论】:
【参考方案4】:我的问题是在我使用上一页中的 firestore 后编辑 firebase 实例设置引起的,你无法做到这一点,并且在我删除此文件夹之前它没有给我正确的错误
%AppData%\Local\Pub\Cache\hosted\pub.dartlang.org\firebase_core_platform_interface-2.0.0
然后它正确地给了我错误,所以我只是在 main.dart 中应用了设置
Widget build(BuildContext context)
return FutureBuilder(
future: Firebase.initializeApp(),
builder: (context, snapshot)
if (snapshot.hasError)
return Text('error');
if (snapshot.connectionState == ConnectionState.done)
FirebaseFirestore.instance.settings = Settings(
persistenceEnabled: true,
cacheSizeBytes: Settings.CACHE_SIZE_UNLIMITED,
);
return MaterialApp(....
);
【讨论】:
【参考方案5】:停止正在运行的应用程序并重新运行。这可能是因为您在应用程序已经在调试模式下运行时添加了 firestore 依赖项。在这种情况下,如果您调用新添加的依赖项的方法,热重载或重启将不起作用。您必须停止正在运行的应用程序并重新运行。 (这解决了我的问题)。
在重新运行之前执行此操作。 - 扑干净 - 颤振包获取
【讨论】:
【参考方案6】:就我而言,我执行了以下步骤:
flutter clean
flutter packages get
卸载应用
更新:/android/app/build.gradle
defaultConfig
...
multiDexEnabled true
再次运行。
希望对你有帮助
【讨论】:
【参考方案7】:我关闭了 IDE (Android Studio) 并执行了flutter clean
。之后我重新启动了 IDE 并创建了一个新的 AVD。 MissingPluginException 在那之后消失了,我遇到了以下错误:
D8: Cannot fit requested classes in a single dex file
我修复了在 /android/app/build.gradle 中将 multiDexEnabled true
添加到 defaultConfig
的问题
defaultConfig
...
multiDexEnabled true
我不知道这是否与您的问题有关,但这就是我解决错误的方法。
【讨论】:
以上是关于I/flutter (22027):MissingPluginException(在通道 plugins.flutter.io/cloud_firestore 上找不到方法 DocumentRefer的主要内容,如果未能解决你的问题,请参考以下文章
I/flutter (17109):抛出另一个异常:A RenderFlex 溢出右侧 80 像素
Cognito 错误 I/flutter(4963):无效参数:需要 PASSWORD 参数