Flutter: как скрыть «живот» курсора в текстовом поле

Всякий раз, когда пользователь нажимает на текстовое поле, чтобы изменить его, появляется курсор, и это так называемый «живот» (на самом деле я не знаю, как он называется, см. Рисунок ниже - красная стрелка). Я хочу включить интерактивный выбор (т. е. позволить перемещать курсор вдоль текстового поля) и отображать мигающий курсор при редактировании, но я хочу, чтобы этот так называемый курсор не появлялся.

вот мой код:

TextField(
    enableInteractiveSelection: true,
    showCursor: true,
    autofocus: false,
    decoration: InputDecoration(
        isDense: true,
        enabledBorder: OutlineInputBorder(
            borderSide: BorderSide(color: Colors.grey),
            borderRadius: BorderRadius.all(Radius.circular(30))
        ),
        focusedBorder: OutlineInputBorder(
            borderSide: BorderSide(color: Colors.grey),
            borderRadius: BorderRadius.all(Radius.circular(30))
        ),
    ),
    onChanged: (text) => {},
    textAlign: TextAlign.center,
    controller: _firstNameChanged
       ? (_firstNameController..text = _newFirstName)
       : (_firstNameController..text = userRep.firstName),
    inputFormatters: [
       FilteringTextInputFormatter.allow(RegExp('[a-zA-Z]'))
    ],
    focusNode: _firstNameInputFocusNode,
    onSubmitted: (text) {
       if (text.isNotEmpty) {
          setState(() {
            _newFirstName = text;
            _firstNameChanged = true;
          });
       }
    },
    style: GoogleFonts.lato(
       fontSize: 16.0,
       color: Colors.black,
    )
)

Есть идеи, пожалуйста?

stackoverflow.com/questions/65247744/…
user14631430 11.12.2020 12:49
0
1
1 708
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Благодаря комментарию @Dude я, наконец, смог решить эту проблему в соответствии с этим ответом.

полный код:

@override
Widget build(BuildContext context) {
  return MaterialApp(
    title: 'Flutter Demo',
    theme: ThemeData(
      textSelectionHandleColor: Colors.transparent, /// <- Added
      cursorColor: Colors.lightGreen[800],
      primaryColor: Colors.green,
      accentColor: Colors.lightGreen[800],
      fontFamily: 'NewRomanTimes',
      textTheme: TextTheme(
        headline1: TextStyle(fontSize: 72.0, fontWeight: FontWeight.bold),
        headline6: TextStyle(fontSize: 36.0, fontStyle: FontStyle.italic),
      )
    ),
    home: MyHomePage()
  );
}

Принятый ответ, вероятно, устарел, с 2022 года именно так вы меняете цвет ручки и выделения (вы можете использовать Colors.transparent, чтобы скрыть это все вместе):

ThemeData().copyWith(
              textSelectionTheme: 
TextSelectionThemeData(
   selectionColor: Colors.yellow[900], 
   selectionHandleColor: Colors.yellow[900])
)

Другие вопросы по теме