【问题标题】:Error Connecting to Firestore: flutter, MissingPluginException连接到 Firestore 时出错:颤动,MissingPluginException
【发布时间】:2020-08-18 16:20:50
【问题描述】:

[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] 未处理的异常:MissingPluginException(在通道 plugins.flutter.io/cloud_firestore 上找不到方法 DocumentReference#setData 的实现)

 Future<void> _createJob(BuildContext context) async{
    final database = Provider.of<Database>(context);
    await database.createJob(Job(name: 'Bloging', ratePerHour: 10));

  }
import 'package:flutter/foundation.dart';

class Job{
  Job({@required this.name, @required this.ratePerHour});
  final String name;
  final int ratePerHour;
  Map<String, dynamic> toMap() {
    return{
      'name': name,
      'ratePerHour': ratePerHour,
    };

  }

}
               create: (_) => FirestoreDatabase(uid: user.uid),
               child: JobsPage());
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/foundation.dart';
import 'package:time_tracker/app/models/jobs.dart';
import 'dart:async';

import 'package:time_tracker/servises/api_path.dart';

abstract class Database {
  Future<void> createJob (Job job);
}
class FirestoreDatabase implements Database {
  FirestoreDatabase({@required this.uid}) : assert(uid != null);
  final String uid;

  Future<void> createJob (Job job) async {
    final path = APIPAth.job(uid, 'job_abc');
    final documentReference = Firestore.instance.document(path);
    await documentReference.setData(job.toMap());
  }
}
  static String job (String uid, String jobId) => '/users/$uid/jobs/$jobId';
}

【问题讨论】:

  • 您可以在使用 firebase 的位置添加代码吗?如果您在应用运行时添加了包,请尝试 flutter clean 并再次运行 flutter run。
  • 运行命令时没有发生任何事情:-flutter clean & flutter run
  • 可以加代码吗?
  • 添加了代码...

标签: firebase android-studio flutter google-cloud-firestore flutter-plugin


【解决方案1】:

将firestore插件添加到pubspec.yaml文件:

dependencies:
  cloud_firestore: ^0.13.5

然后执行以下:

从终端:运行 flutter pub get。

来自 Android Studio/IntelliJ:在 pubspec.yaml 顶部的操作功能区中单击 Packages get。

从 VS Code:单击位于 pubspec.yaml 顶部操作功能区右侧的 Get Packages。


在您的代码更改中:

 final documentReference = Firestore.instance.document(path);
    await documentReference.setData(job.toMap());

进入这个:

 final documentReference = Firestore.instance.collection(path);
    await documentReference.add(job.toMap());

在 Firestore 中你有:

集合->文档->集合->文档

如果您想向collection 添加数据,则需要使用add() 方法,该方法将创建一个随机文档ID 并添加数据。

【讨论】:

  • 你得到了什么?
  • [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] 未处理的异常:MissingPluginException(在通道 plugins.flutter.io/cloud_firestore 上找不到方法 DocumentReference#setData 的实现)
  • 我的代码中没有使用setData,请再次检查编辑,您需要使用add()
  • 错误中没有任何改变它仍然是相同的@PeterHaddad
  • 执行flutter clean & flutter run 如果它不起作用,关闭ide,再次打开它,从手机中删除应用程序并再次运行
猜你喜欢
  • 2018-10-30
  • 2021-07-29
  • 1970-01-01
  • 2021-04-18
  • 2018-10-31
  • 2021-04-11
  • 1970-01-01
  • 1970-01-01
  • 2019-01-31
相关资源
最近更新 更多