I / flutter(22027):MissingPluginException(在通道plugins.flutter.io/cloud_firestore上未找到方法DocumentReference#setData的实现)

时间:2020-01-25 20:33:36

标签: firebase flutter dart google-cloud-firestore

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();
  }

“”我正在尝试将数据插入云存储区,并且我已经在initState()中调用了此函数,但是如上所述,我很容易出错

6 个答案:

答案 0 :(得分:7)

确保您使用的是最新的cloud_firestore版本。然后执行:

flutter clean
flutter packages get

答案 1 :(得分:3)

对于我的情况,我执行了以下步骤:

flutter clean
flutter packages get

卸载应用

更新:/android/app/build.gradle

defaultConfig {
    ...
    multiDexEnabled true
}

再次运行。

希望这会有所帮助

答案 2 :(得分:2)

我关闭了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
}

我不知道这是否与您的问题有关,但这就是我解决错误的方法。

答案 3 :(得分:0)

停止正在运行的应用程序,然后重新运行。这可能是因为您已在应用程序已经在调试模式下运行时添加了firestore依赖项。在这种情况下,如果您调用新添加的依赖项的方法,则热重载或重新启动将不起作用。您必须停止正在运行的应用程序并重新运行。 (这解决了我的问题)。

在重新运行之前执行此操作。 -扑扑干净 -颤振包获取

答案 4 :(得分:0)

我的问题是由于我在使用上一页中的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 :(得分:0)

如果您正在使用Visual Studio Code,并且正在IOS模拟器上运行项目,则该项目可能无法正常工作。您可以从Xcode运行您的项目,它可以毫无问题地工作,您必须打开.xcworkspace文件。