Изменение текстовых символов, когда пользователь вводит текст в дрожании текстового поля
Я новичок в флаттере и пытаюсь придумать способ, чтобы пользователи могли вводить свои местоимения в моем приложении очень специфическим образом. Например, они могут ввести «она / ее / ее», и если они нажмут пробел, появится «/». В настоящее время у меня есть текстовое поле для этого, но я не уверен, что делать дальше и как это может работать.
Прямо сейчас у меня в коде есть:
String _textSelect(String _controller) {
_controller = _controller.replaceAll(" ", "/");
return str;
}
Но не работает. Любая помощь могла бы быть полезна. Спасибо!
2 ответа
Вы можете использовать
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,
);
}
),
),
),
);
}
}
Я бы рекомендовал использовать для этого TextInputFormatter.
Взгляните на https://api.flutter.dev/flutter/services/TextInputFormatter-class.html
«Чтобы создать собственные средства форматирования, расширьте класс TextInputFormatter и реализуйте метод formatEditUpdate».