Вызов метода OnPressed исключение - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть кнопка, и я пытаюсь использовать onPressed для вызова метода из другого .dart, ответственного за создание транзакции в firestore.Затем я получаю исключение:

EXCEPTION CAUGHT BY GESTURE 
The following NoSuchMethodError was thrown while handling a gesture:
The method 'create' was called on null.
Receiver: null

Я пытаюсь передать данные из формы этому методу в надежде, что удастся сохранить данные в облачном хранилище огней.

Моя кнопка:

final createButton = Padding(
    padding: EdgeInsets.symmetric(vertical: 16.0),
    child: Material(
        borderRadius: BorderRadius.circular(30.0),
        shadowColor: Colors.lightBlueAccent.shade100,
        child: MaterialButton(
          minWidth: 200.0,
          height: 42.0,
          onPressed: () {
            this._createSanitario();
            //  Navigator.of(context).pushNamed(Login.tag);
          },
          color: Colors.lightBlueAccent,
          child: Text('Adicionar sanitário',
              style: TextStyle(color: Colors.white)),
        )));

Метод, который он вызывает:

void _createSanitario() {
    sanitarioStorage.create(identificacaoC.text, localizacaoC.text,
        tipoEntradaC.text, tipoSanitarioC.text);
  }

Метод другого .dart, отвечающего за транзакцию в Firebase:

Future<Sanitario> create(String identificacao, String localizacao,
      String tipoEntrada, String tipoSanitario) async {
    final TransactionHandler createTransaction = (Transaction tx) async {
      final DocumentSnapshot newDoc =
          await tx.get(sanitarioCollection.document());
      final Sanitario newSanitario = new Sanitario(
          id: newDoc.documentID,
          identificacao: identificacao,
          localizacao: localizacao,
          tipoEntrada: tipoEntrada,
          tipoSanitario: tipoSanitario);
      final Map<String, dynamic> data = _toMap(newSanitario, {
        'created': new DateTime.now().toUtc().toIso8601String(),
      });
      await tx.set(newDoc.reference, data);

      return data;
    };

    return Firestore.instance
        .runTransaction(createTransaction)
        .then(_fromMap)
        .catchError((e) {
      print('Dart erro ao gravar: $e');
      return null;
    });
  }

Любойпомощь будет приветствоваться.

1 Ответ

0 голосов
/ 04 декабря 2018

В логах The method 'create' was called on null. Итак, похоже, вы не инициализировали sanitarioStorage поле

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...