Flutter:保存TextField值

时间:2020-01-13 16:11:27

标签: flutter dart textfield

我是新手。我想实现一个简单的Form函数:

1)第一页:“这是名称:” $ stringname

1.1)点击“编辑图标”->打开第二页

2)第二页:“编辑名称:” TextField

2.1)使用后退按钮->返回首页->显示新的$ stringname

[3)再次访问第二页,文本字段显示上次保存的名称]

我实现了所有内容(带有编辑图标的“第一页”,具有“后退”按钮和文本字段的第二页),但是我不知道如何保存新的字符串值并将其发送到第一页。 有人可以给我一个简短的例子,怎么做?

TextField(
  obscureText: false,
  decoration: InputDecoration(
    border: OutlineInputBorder(
      borderRadius: BorderRadius.all(
        const Radius.circular(12.0),
      ),
    ),
    labelText: 'Name',
    labelStyle: TextStyle(
      color: Colors.black.withOpacity(0.8)
    ),    
  ),
),

1 个答案:

答案 0 :(得分:1)

要将数据从第二页返回到第一页,您需要在导航到第二页时希望从第二页接收数据。在第二页上,您需要从TextField中获取值,然后在将视图弹出回到第一页时将其发送回去,如下所示:

在首页

方法

void goToSecondPage(){
  Navigator.of(context).push(MaterialPageRoute(
    builder: (context){
      return SecondPage();
    }
  )).then((valueFromTextField){
    // use your valueFromTextField from the second page
  });
}

第二页

声明

TextEditingController _textEditingController = TextEditingController();

小部件

Column(
  children: <Widget>[
    TextField(
      controller: _textEditingController,
      obscureText: false,
      decoration: InputDecoration(
        border: OutlineInputBorder(
          borderRadius: BorderRadius.all(
            const Radius.circular(12.0),
          ),
        ),
        labelText: 'Name',
        labelStyle: TextStyle(
          color: Colors.black.withOpacity(0.8)
        ),
      ),
    ),
    RaisedButton(
      onPressed: () => submit(),
    ),
  ],
),

方法

void submit(){
  Navigator.of(context).pop(_textEditingController.text);
}
相关问题