firebase - 连接到 Firestore 时出错:颤动,MissingPluginException
问题描述
[错误: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';
}
解决方案
将 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 中,您有:
集合->文档->集合->文档
如果你想向 a 添加数据collection
,那么你需要使用add()
将创建一个随机文档 id 并添加数据的方法。
推荐阅读
- crystal-reports - Crystal Reports 8.5 报表运行存储过程两次
- qt - 堆栈布局模板
- azure - 为什么找不到资源的 Azure 模板错误?
- sharepoint - Sharepoint 2013 API / 文件版本。提取自定义共享点文件属性的版本历史记录
- jquery - 对控制器功能的 AJAX 请求
- reactjs - 使用重复的 if else 块重构 React 函数
- angular - 在页面上放置多个上下文菜单时上下文菜单显示不正确
- sql - PostgresSql中如何根据if条件返回一个特定的值?
- c++ - 在 lambda 中仅捕获类的特定成员
- sql - 查询时间序列最近 24 小时的变化