У меня есть кнопка, и я пытаюсь использовать 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;
});
}
Любойпомощь будет приветствоваться.