微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

TextField & BLoC : 预填充字段

如何解决TextField & BLoC : 预填充字段

我有一个带有表单的屏幕,我用来发布广告,我使用同一个屏幕来编辑广告。当我想编辑广告时,表单会预先填写广告的内容。为此,我将要显示的文本提供给 TextEditingController

同时,我使用 BLoC 模式来管理我的应用程序的业务逻辑,并在 onChangeTextfield 属性生成一个新状态。因此,文本字段在每次更改时都会构建,因此,TextEditingController 也会构建以防止我更改字段的文本。

 TextField(
      controller: isUpdate ? 
        TextEditingController(
          text: isUpdate == true ? myAd.property.toString() //as it builds at every single change,the text can't be modified 
            : null,): null,onChanged: (newValue) {
         context.read<MyBloc>().add(TitleChanged(value: newValue))

那么有没有办法让我预先填充该字段,但只填充一次 - 不是在每个构建中 - 以便我可以继续编辑它?

解决方法

您可以将文本作为字符串包含在您的 Blocs 状态中,因此您可以使用 myAd.property.toString() 而不是使用 state.formText。 每当您使用 TitleChanged 事件更改表单时,您也会更新您的组中的 formText

,

更改代码以使用 TextFormField 并设置 initialValue

 TextFormField(
      initialValue: isUpdate ? myAd.property.toString(): null,onChanged: (newValue) {
         context.read<MyBloc>().add(TitleChanged(value: newValue))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。