我正在制作一个计算器应用程序。我想问一下,我可以用哪个小部件来显示数字。如果我使用 Text
那么我就不能用光标编辑它,如果我用 TextField
键盘弹出。
我找到了一个EditableText的实现,可能对你有用。只要把这段代码放进去。
class NoKeyboardEditableText extends EditableText {
NoKeyboardEditableText({
@required TextEditingController controller,
@required TextStyle style,
@required Color cursorColor,
bool autofocus = false,
Color selectionColor
}):super(
controller: controller,
focusNode: NoKeyboardEditableTextFocusNode(),
style: style,
cursorColor: cursorColor,
autofocus: autofocus,
selectionColor: selectionColor,
backgroundCursorColor: Colors.black
);
@override
EditableTextState createState() {
return NoKeyboardEditableTextState();
}
}
class NoKeyboardEditableTextState extends EditableTextState {
@override
void requestKeyboard() {
super.requestKeyboard();
//hide keyboard
SystemChannels.textInput.invokeMethod('TextInput.hide');
}
}
class NoKeyboardEditableTextFocusNode extends FocusNode {
@override
bool consumeKeyboardToken() {
// prevents keyboard from showing on first focus
return false;
}
}
这将创建一个不打开键盘的EditableText, 但你仍然可以像平常一样移动光标. 要添加文本,我会使用TextEditingController的text()、value()、select()方法的组合。首先得到字段中的值,然后用select()得到光标的位置,在选择索引处输入任何你想要的文本,最后为控制器设置文本为结果字符串。
如果有帮助,请告诉我!
所以,你可以试试这个
TextField(showCursor: true, readOnly: true);