如何在flutter中重新加载后保留编辑过的文本

问题描述 投票:0回答:1
class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  bool _isEnable = false;
  TextEditingController _controller =
      TextEditingController(text: "Festive Leave");

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Row(
        children: <Widget>[
          Container(
            width: 100,
            child: TextField(
              controller: _controller,
              enabled: _isEnable,
            ),
          ),
          IconButton(
              icon: Icon(Icons.edit),
              onPressed: () {
                setState(() {
                  _isEnable = true;
                });
              })
        ],
      ),
    );
  }
}

代码运行成功,我得到了输出,但重新加载后,值更改为旧的自身,并且编辑部分在编辑后没有恢复正常。 有人请帮我让文本在编辑后恢复到第一个状态,并且即使在重新加载后也需要保留编辑的值

flutter dart dart-pub
1个回答
0
投票

热重载仅重建代码更改的部分。 例如,尝试编辑 _controller 的名称或更改其值,热重载只会重新加载该部分。 如果您编辑了 IconButton 或(例如)只有图标将被更改,而不会更改其他内容。

因此,在热重新加载后,文本不应返回“节日假期”,也许您的意思是热重启,这会重建应用程序并恢复所有内容。

如果您希望 TextField 恢复原样(未启用),那么您可以执行以下操作:

setState(() {
    _isEnable = !_isEnable;
});

因此,当您按下图标按钮时,它将切换文本字段启用。

希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.