如何解决在用户输入文本字段时更改文本字符
我是 Flutter 的新手,我正在努力想办法让用户能够以非常具体的方式在我的应用中输入他们的代词。例如,他们可以输入“she/her/hers”,如果他们按空格,则会出现“/”。我目前有一个用于此的文本字段,但我不确定从哪里开始以及它如何工作。
我现在在我的代码中有这个:
String _textSelect(String _controller) {
_controller = _controller.replaceAll(" ","/");
return str;
}
但它不起作用。任何帮助将非常感激。谢谢!
解决方法
我建议为此使用 TextInputFormatter。
看看https://api.flutter.dev/flutter/services/TextInputFormatter-class.html
“要创建自定义格式化程序,请扩展 TextInputFormatter 类并实现 formatEditUpdate 方法。”
,您可以通过传入一个接受新文本作为参数的函数来使用文本字段的 onChanged
属性。试试这个:
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final _textController = TextEditingController();
@override
void dispose() {
_textController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark().copyWith(scaffoldBackgroundColor: darkBlue),debugShowCheckedModeBanner: false,home: Scaffold(
body: Center(
child: TextField(
controller: _textController,onChanged: (text) {
_textController.text = text.replaceAll(" ","/");
_textController.value = _textController.value.copyWith(
selection:
TextSelection(baseOffset: text.length,extentOffset: text.length),composing: TextRange.empty,);
}
),),);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。