dart - 具有默认文本的 TextFormField

标签 dart flutter

我想要一些 FormTextFields,其中包含一些用户可以更改的默认文本。 我遇到的问题是,一旦我修改了一个字段,如果我按下另一个字段或按钮,一切都很好,但是,如果我按下键盘上的“完成”按钮,就会返回默认文本, 删除用户插入的新的。这是我到目前为止所做的:

class _LoginSettingsViewState extends State<LoginSettingsView> {

  final GlobalKey<FormState> _formKey = new GlobalKey<FormState>();

  var _userTextController = new TextEditingController();

@override
  Widget build(BuildContext context) {

    _userTextController.text = "test";

 return Scaffold(

      appBar: AppBar(
        title: Text("Settings"),
      ),

      body: ListView(
        children: <Widget>[
          new Container(
            margin: EdgeInsets.only(
              left: 10.0,
              right: 10.0,
              top: MediaQuery.of(context).size.height / 10
            ),
            child: Form(
                key: _formKey,
                child: Column(
                  children: <Widget>[
                    TextFormField(
                      decoration: _fieldDecoration("user", null),
                      controller: _userTextController,
                      validator: (val) => val.isEmpty ? "Insert user" : null,
                      onSaved: (val){
                        print(val);
                      },
                    ),

最佳答案

您在 build 方法中设置默认文本,每次重建 UI 时,都会调用 build 方法,以便您放回默认文本。

initState 方法中进行初始化

@override
void initState() {
  super.initState();
  _userTextController.text = "test";
}

也不要忘记处理你的 Controller

@override
void dispose() {
  _userTextController.dispose();
  super.dispose();
}

关于dart - 具有默认文本的 TextFormField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52295092/

相关文章:

flutter : How to Get all SharedPreferences keys except some Keys

flutter - 通过在列内使用堆栈,底部被无限像素溢出

dart - AssetImage 不在 flutter 应用程序中显示图像

Flutter:更改 dart SDK

flutter - Flutter:遍历列表

flutter - 在使用 flutter_bloc 库发送事件之前等待一些结果

android - Flutter CachedNetworkImage 不适用于从 playstore 下载的 App,卡在占位符上

user-interface - 如何使用构建器功能? - flutter

dart - 如何在 Dart 中将映射写入 YAML 文件

Dart pub 更新失败