繁体   English   中英

Flutter TextFormfield Controller 取值

[英]Flutter TextFormfield Controller get value

这是文本表单域。 它接收值,然后通过它显示信息。 文本编辑控制器

这是第 1 页

 Widget lngTextFormField(String label, String keyword, String text) {
TextEditingController lngtextController = TextEditingController(text: text);
lngtextController.selection = TextSelection.collapsed(offset: lngtextController.text.length);
return TextFormField(
  controller: lngtextController,
  onChanged: (value) {
    saveAd(value, keyword);
  },
  decoration: InputDecoration(
    labelText: label,
    labelStyle: TextStyle(
      fontFamily: 'supermarket',
      fontSize: 16,
    ),
    isDense: true,
  ),
);
}

这是第 2 页这是一个保存按钮,它将把经纬度返回到第 1 页。

void saveAddress() {
var lat = centerMap.latitude;
var lng = centerMap.longitude;
Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) => EditAddressPage(
      index: widget.index,
      lat: lat.toString(),
      lng: lng.toString(),
    ),
  ),
);
print("Saving address: Latitude: $lat, Longitude: $lng");
}

我该怎么办 我想将第二页的经纬度值而不是现有值发送回第 1 页。 我试过这个,有时发送值但在发送新值之前原始值是空的。 可能需要在 TextFormfield 中输入一些内容才能保存

有很多选择,但最简单的一种是:

  • 当从第一页导航到第二页时,替换或弹出它

//你可以使用这个

Navigator.pushReplacement(context, route); 

//或这个

Navigator.of(context).push(MaterialPageRoute(builder: (context) => NewScreen()));

Navigator.pop(context);
  • 在打开第二页并按下按钮后,您需要使用 Navigator.push 将字符串传递给第一页(您做得很好)

  • 在第一页的 initstate 里面做一个条件,例子

    @override void initState() { super.initState(); if (widget.lat.= null || widget.lat.= "") { lattextController;text = widget.lat.. } if (widget.lng;= null || widget,lng != "") { lngtextController.text = widget.lng!; } //sometime when initsate doesnt work you can call setstate, depends on logic that you writes }

这个逻辑意味着当创建第一个页面时,他们将在 build() 之前首先设置值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM