我正在尝试开发一个TextField,在更改时更新Firestore数据库上的数据.它似乎工作,但我需要防止onChange事件多次触发.
在JS我会使用lodash _debounce()但在Dart中我不知道该怎么做.我已经阅读了一些去抖库但我无法弄清楚它们是如何工作的.
这是我的代码,它只是一个测试,所以有些奇怪的东西:
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
class ClientePage extends StatefulWidget {
String idCliente;
ClientePage(this.idCliente);
@override
_ClientePageState createState() => new _ClientePageState();
}
class _ClientePageState extends State<ClientePage> {
TextEditingController nomeTextController = new TextEditingController();
void initState() {
super.initState();
// Start listening to changes
nomeTextController.addListener(((){
_updateNomeCliente(); // <- Prevent this function from run multiple times
}));
}
_updateNomeCliente = (){
print("Aggiorno nome cliente");
Firestore.instance.collection('clienti').document(widget.idCliente).setData( {
"nome" : nomeTextController.text
}, merge: true);
}
@override
Widget build(BuildContext context) {
return new StreamBuilder<DocumentSnapshot>(
stream: Firestore.instance.collection('clienti').document(widget.idCliente).snapshots(), …Run Code Online (Sandbox Code Playgroud)