Flutter中如何同时使用TextFormField的initialValue与controller?
解决TextFormField同时使用controller与initialValue报错的问题
- 报错原因:Flutter框架不允许同时为TextFormField设置
controller和initialValue参数,二者只能二选一。controller负责管理输入框的文本状态,initialValue是为无controller的输入框提供初始值的快捷方式,同时设置会造成状态管理冲突。 - 两种正确实现方式:
- 通过controller设置初始值:若需要使用controller管理文本,直接在初始化controller时传入初始值,删除
initialValue参数。// 初始化controller时传入初始值 final txtEmail = TextEditingController(text: initialValues['emailAddress']); // TextFormField中仅保留controller参数 TextFormField( controller: txtEmail, decoration: InputDecoration( prefixIcon: Icon(Icons.email), label: Text('Email Address'), focusedBorder: UnderlineInputBorder(borderSide: BorderSide(color: accentColor)), enabledBorder: UnderlineInputBorder(borderSide: BorderSide(color: iconColor)) ), ), - 仅使用initialValue:若无需controller管理文本状态,直接删除
controller参数,保留initialValue即可。TextFormField( initialValue: initialValues['emailAddress'], decoration: InputDecoration( prefixIcon: Icon(Icons.email), label: Text('Email Address'), focusedBorder: UnderlineInputBorder(borderSide: BorderSide(color: accentColor)), enabledBorder: UnderlineInputBorder(borderSide: BorderSide(color: iconColor)) ), ),
- 通过controller设置初始值:若需要使用controller管理文本,直接在初始化controller时传入初始值,删除
内容的提问来源于stack exchange,提问作者Ahmed Iqbal teli
相关产品推荐
相关产品推荐

