我想为文本字段提供一个初始值,并重新绘制一个空值以清除文本。用Flutter的api实现这一点的最佳方法是什么?
当前回答
至于上述答案都是正确的,但有一件事是缺失的,我想添加到它是如何自定义TextFormField的默认文本的风格。
TextEditingController textController = TextEditingController(text: '4');
TextFormField(
controller: textController,
// This style property will customize the default controller text
style: TextStyle(
color: Colors.white,
fontSize: 18,
fontWeight: FontWeight.bold,
),
),
对于这种情况,我更喜欢使用TextEditingController而不是initialValue,因为如果你想改变它以后或修改它,那么textController将不断监听你的TextFormField输入的变化。 这是我个人的观点,如果我错了请告诉我。
其他回答
内部类,
final usernameController = TextEditingController(text: 'bhanuka');
文本框,
child: new TextField(
controller: usernameController,
...
)
如果你正在使用TextEditingController,然后设置文本为它,如下所示
TextEditingController _controller = new TextEditingController();
_controller.text = 'your initial text';
final your_text_name = TextFormField(
autofocus: false,
controller: _controller,
decoration: InputDecoration(
hintText: 'Hint Value',
),
);
如果你不使用任何TextEditingController,那么你可以直接使用initialValue如下
final last_name = TextFormField(
autofocus: false,
initialValue: 'your initial text',
decoration: InputDecoration(
hintText: 'Last Name',
),
);
更多参考TextEditingController
如果你想处理多个textinput,因为@MRT在接受的答案的评论中要求,你可以创建一个函数,接受一个初始值,并返回一个TextEditingController,像这样:
initialValue(val) {
return TextEditingController(text: val);
}
然后,将这个函数设置为TextInput的控制器,并像这样提供它的初始值:
controller: initialValue('Some initial value here....')
您可以为其他textinput重复此操作。
如果您使用文本表单字段并将数据从上一页传递到下一页文本表单字段,请使用此选项
class ProfilePage extends StatefulWidget {
late final String fname;
ProfilePage({required this.fname});
@override
State<ProfilePage> createState() => _ProfilePageState();
}
class _ProfilePageState extends State<ProfilePage> {
final _form = GlobalKey<FormState>();
late var FullNameController = TextEditingController(text: widget.fname);
}
你可以做以上所有的事情,但如果你想让API在加载时显示你的数据,它会像配置文件页面一样显示。下面是代码:
TextEditingController _nameController = TextEditingController(); // initialize the controller
// when API gets the data, do this:
_nameController.text = response.data.fullName; or _nameController.text = "Apoorv Pandey"
我希望这能澄清一切。编码快乐!
推荐文章
- Flutter and google_sign_in plugin: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10:, null)
- 如何在扑动中格式化日期时间
- 在Flutter中Column的子元素之间的空间
- Visual Studio代码- URI的目标不存在" package:flutter/material.dart "
- Flutter:升级游戏商店的版本代码
- 在一个子树中有多个英雄共享相同的标签
- 如何检查Flutter应用程序是否正在调试中运行?
- 在Flutter中向有状态小部件传递数据
- 未处理异常:ServicesBinding.defaultBinaryMessenger在绑定初始化之前被访问
- 出现键盘时,Flutter小部件将调整大小。如何预防这种情况?
- 颤振-换行文本
- 如何在Dart中四舍五入到小数点后的给定精度程度?
- 添加一个启动屏幕颤振应用程序
- 在flutter中等同于wrap_content和match_parent ?
- 多行文本字段在扑动