flutter - 在TextEditingController的初始值设定项中只能访问静态成员

标签 flutter dart texteditingcontroller

目标:编辑信息时,它会转到一个初始值等于当前信息的表单。
下面的代码有效,因为它具有'initialValue'属性

TextFormField(
   maxLines: 1,
   autofocus: true,
   initialValue: _currentProditem.producttitle,
   style: TextStyle(
            color: Colors.black87,
            fontWeight: FontWeight.w400,
            fontSize: 18.0,
            fontFamily:'Cabin',
          ),
但是下面的代码不起作用,因为属性'initialValue'和'controller'发生冲突。这就是为什么我在下面的代码中注释了属性“initialValue”。但是我想将initialValue放在某个地方,以便实现上述目标。
TextFormField(
          controller: _controller,
          maxLines: 1,
          autofocus: true,
          // initialValue: _currentProditem.price,
          keyboardType: TextInputType.number,
          onChanged: (string) {
            string = '${_formatNumber(string.replaceAll(',', ''))}';
            _controller.text = string;
            Timer(Duration(milliseconds: 1), () {
              _controller.selection = TextSelection.fromPosition(TextPosition(offset: string.length));
            });
          },
所以我研究了如何放置IntialValue,发现您需要在下面添加代码
final _controller = TextEditingController(text: 'some text');
我尝试将单词“某些文本”更改为“_currentProditem.price”,但单词“_currentProditem”出现问题,即“错误:初始化器中只能访问静态成员”。
作为引用,单词“_currentProditem”可以在下面的代码中找到
class ItemNotifier with ChangeNotifier {
  List<Proditem> _itemList = [];
  Proditem _currentProditem;

  UnmodifiableListView<Proditem> get itemList => UnmodifiableListView(_itemList);

  Proditem get currentProditem => _currentProditem;

  set itemList(List<Proditem> itemList) {
    _itemList = itemList;
    notifyListeners();
  }

  set currentProditem(Proditem proditem) {
    _currentProditem = proditem;
    notifyListeners();
  }
}

最佳答案

只能在任何方法外部访问静态字段
因此,只需将_controller初始化为空

final _controller = TextEditingController();
在构建或initState时设置值
_controller.text = currentPrice;
由于 Controller 具有名为文本的 setter ,因此易于动态更新值,就像按下按钮时一样

关于flutter - 在TextEditingController的初始值设定项中只能访问静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63023752/

相关文章:

Flutter:元素类型 'String'无法分配给列表类型 'Widget'

dart - 位于栈内

flutter - 类型 'TextEditingController' 不是类型转换中类型 'int' 的子类型

json - flutter 文本编辑 Controller listview.builder

android - Flutter - Android 在 Release模式下不请求许可 - 自动拒绝

android - 如何在 Flutter 中的文本之间加载图像

flutter - 在 null 和接收器 : null - Flutter Android 上调用了方法 '[]'

使用 TextEditingController 设置初始值后,Flutter 在 TextField 中编辑值

flutter - myfatoorah_flutter 导入包构建失败

java - 为什么我无法从 Visual Studio Code 终端运行 'java' 等命令?