有没有一种简单的方法可以在变量的textformfield中获取初始值?

时间:2019-04-05 12:15:31

标签: http dart flutter

我刚开始动手,正在制作个人资料页面,正在提出要求。我正在尝试创建一个编辑配置文件页面,以便每当我去那里时,textformfield的值都已准备好填写。起初,我认为使用占位符作为初始值会很好。但是我在想,这对用户体验不利。我希望textformfields填充正确的数据。因此,如果用户想要更新他的信息,则将填写这些字段。我正在发出http发布请求,并且获得了正确的值。但是我没有得到的奇怪的东西就是为什么我可以在labeltext中加载变量,但是我不能在initialvalue中加载它们...

我试图寻找一种解决方案,并且尝试了一个futurebuilder,但是我无法使其正常工作。我希望有人可以帮助我。

   Expanded(
                                child: Container(
                                  child: new TextFormField(
                                    onSaved: (input) => _voornaam = input,
                                    initialValue: '$voornaam',
                                    decoration: InputDecoration(
                                        labelText: '$voornaam'),
                                    style: TextStyle(
                                        fontSize: 16.0,
                                        fontWeight: FontWeight.bold),
                                  ),
                                ),
                                flex: 2,
                              ),        

我希望在textformfield中获得$ voornaam的值。但是实际上,当我加载它时,它只是返回null。我的http请求正在工作,因为该值已放在labeltext中。如果有人

2 个答案:

答案 0 :(得分:0)

您有错字,此代码应该有效:


void main() => runApp(MaterialApp(
      home: App(),
    ));

class App extends StatefulWidget {
  @override
  _AppState createState() => _AppState();
}

class _AppState extends State<App> {
  String _voornaam = 'Helo';

  @override
  void initState() {
    super.initState();
    // set you _voornaam value
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('text'),
      ),
      body: Container(
        child: new TextFormField(
          onSaved: (input) => setState(() {
                _voornaam = input;
              }),
          initialValue: '$_voornaam',
          decoration: InputDecoration(labelText: '$_voornaam'),
          style: TextStyle(fontSize: 16.0, fontWeight: FontWeight.bold),
        ),
      ),
    );
  }
}

答案 1 :(得分:0)

controller添加到您的TextFormField中,然后在initState中将其初始化为初始值-_controller = TextEditingController(text: $voornaam);