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

问题描述

我已经声明了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'
                      ),),

解决方法

您是否尝试过使用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