import 'package:flutter/material.dart'; class WhyWidget extends StatefulWidget { final TextEditingController controller; WhyWidget({Key? key, required this.controller}) : super(key: key); @override _WhyWidgetState createState() => _WhyWidgetState(); } class _WhyWidgetState extends State { final TextEditingController _controller = TextEditingController(text: "why? "); final FocusNode _focusNode = FocusNode(); @override void initState() { super.initState(); _focusNode.addListener(() { if (!_focusNode.hasFocus) { setState(() { // Remove cursor when focus is lost _controller.text = _controller.text.replaceAll('|', ''); }); } }); // Automatically focus the TextField and open the keyboard when the widget builds WidgetsBinding.instance.addPostFrameCallback((_) { _focusNode.requestFocus(); }); } @override Widget build(BuildContext context) { return TextField( controller: _controller, focusNode: _focusNode, keyboardType: TextInputType.multiline, maxLines: null, // Allow for unlimited lines cursorColor: Colors.transparent, // Hide the default cursor style: TextStyle(color: Colors.black, fontSize: 18), decoration: InputDecoration( border: InputBorder.none, // Make the TextField borderless ), onChanged: (value) { // Ensure "why? " is always at the start if (!value.startsWith('why? ')) { _controller.text = 'why? ' + value; _controller.selection = TextSelection.fromPosition( TextPosition(offset: _controller.text.length)); } }, ); } @override void dispose() { _controller.dispose(); _focusNode.dispose(); super.dispose(); } }