在用flutter建立计算器时选择什么输出字段?

问题描述 投票:0回答:1

我正在制作一个计算器应用程序。我想问一下,我可以用哪个小部件来显示数字。如果我使用 Text 那么我就不能用光标编辑它,如果我用 TextField 键盘弹出。

flutter dart flutter-layout calculator
1个回答
1
投票

我找到了一个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()得到光标的位置,在选择索引处输入任何你想要的文本,最后为控制器设置文本为结果字符串。

如果有帮助,请告诉我!


0
投票

所以,你可以试试这个

TextField(showCursor: true, readOnly: true);

© www.soinside.com 2019 - 2024. All rights reserved.