Ошибка подключения к Firestore: flutter, MissingPluginException - PullRequest
0 голосов
/ 04 мая 2020

[ОШИБКА: flutter / lib / ui / ui_dart_state. cc (157)] Необработанное исключение: MissingPluginException (реализация не найдена для метода DocumentReference # setData на plugins.flutter.io/cloud_firestore)

 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';
}

1 Ответ

0 голосов
/ 04 мая 2020

Добавьте плагин Firestore в pubspec.yaml файл:

dependencies:
  cloud_firestore: ^0.13.5

Затем выполните следующее:

С терминала: Запустите flutter pub get.

ИЛИ

От Android Studio / IntelliJ: Нажмите Пакеты, чтобы попасть на ленту действий в верхней части pubspe c .yaml.

Из кода VS: Нажмите Получить пакеты, расположенные в правой части ленты действий в верхней части pubspe c .yaml.


В коде вашего изменения:

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

в этот :

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

В Firestore у вас есть:

collection-> document-> collection-> document

Если вы хотите добавить данные в collection, тогда вам нужно использовать метод add(), который создаст случайный идентификатор документа и добавит данные.

...