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 参数

I/flutter(8545):类型“int”不是 Iterable 类型的子类型

颤振 - 布局

图像未在 Flutter 中加载

Flutter:找不到方向性小部件