61 lines
1.7 KiB
Dart
61 lines
1.7 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
class WhyWidget extends StatefulWidget {
|
|
@override
|
|
_WhyWidgetState createState() => _WhyWidgetState();
|
|
}
|
|
|
|
class _WhyWidgetState extends State<WhyWidget> {
|
|
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();
|
|
}
|
|
}
|