Flutter,更新Firebase数据时setstate不起作用

时间:2020-09-08 06:19:59

标签: firebase flutter google-cloud-firestore textformfield

我已经声明了var valueName;在我的窗口小部件生成器之前以及在使用Firebase文档值设置它之后:valueName = widget.item.name; 然后,我将valueName用作TextFormField的初始值和onChanged中的setState。 但是,当我在更新Firestore函数时使用valueName时,它将加载第一个旧值。我无法更新此值。

这是我的TextFormField代码:

TextFormField(
                      initialValue: valueName,
                      onChanged: (input) {
                        setState(() {
                          this.valueName = input;
                          print(valueName);
                        });
                      },
                      keyboardType: TextInputType.name,
                      decoration: InputDecoration(
                          border: UnderlineInputBorder(),
                          filled: true,
                          icon: Icon(
                              Icons.person
                          ),
                          hintText: 'Inserisci il nome',
                          labelText: 'Nome'
                      ),
                    ),

1 个答案:

答案 0 :(得分:2)

您是否尝试过使用TextEditingController?您可以使用它来设置初始值,也可以在不使用setState的情况下随时更改它的值。

class Temp extends StatefulWidget {
//constractor
// you are getting your value here
  @override
  _TempState createState() => _TempState ();
}

class _TempState extends State<Temp> with {
//declare here
var variable = widget.item.name;
// you can change this variable