Flutter - 无法在不点击文本字段的情况下编辑文本

问题描述

所以,我有一个如下所示的 TextField:

TextField(
  inputFormatters: [FilteringTextInputFormatter.digitsOnly],controller: _amountController,autofocus: true,keyboardType: TextInputType.number,decoration: Inputdecoration(
    hintText: '0',hintStyle: TextStyle(color: Painter.gray500),border: InputBorder.none,prefixIcon: Padding(
      padding: const EdgeInsets.only(right: 8.0),child: SvgPicture.asset(icon),),prefixIconConstraints: BoxConstraints(
      maxHeight: 20,maxWidth: 20,

这是在我用来添加数据的底部工作表中。我还想启用编辑,因此点击底部工作表加载具有现有值的 TextField(如果有)。为此,_amountController 被初始化为:

AddDataSheet({
  required this.title,required this.subtitle,this.amount,}) {
  _amountController = TextEditingController.fromValue(
    amount == null
        ? TextEditingValue.empty
        : TextEditingValue(
            text: amount.toString()
          ),);
}

问题是,当 TextField 加载时,它带有焦点,但在我点击它之前我无法编辑它。我试着添加这个,

selection: TextSelection.fromPosition(
    TextPosition(offset: amount.toString().length),

到控制器初始化但它不起作用。

如何拥有 TextField 以便我不必点击它即可开始编辑值?

解决方法

我认为你需要使用 focusnode 属性

https://api.flutter.dev/flutter/material/TextField/focusNode.html

另请参考这些答案 https://stackoverflow.com/a/49912570/9414608 https://stackoverflow.com/a/60510624/9414608