如何使用TextEditingController使用“清除”按钮创建TextField?

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

我试图创建一个带有清除按钮的TextField,但是当我输入一些值时,没有按我想要的方式显示清除按钮。似乎无法检测到_firstNameController.text的更改。我该如何解决这个问题?

enter image description here

class TextFieldWithClearBtn extends StatefulWidget {
  @override
  _TextFieldWithClearBtnState createState() => _TextFieldWithClearBtnState();
}

class _TextFieldWithClearBtnState extends State<TextFieldWithClearBtn> {
  final TextEditingController _firstNameController = TextEditingController();

  @override
  void dispose {
    super.dispose();
    _firstNameController.dispose();
  }
  @override
  Widget build(BuildContext context) {
    return Container(
      child: TextFormField(
        controller: _firstNameController,
        decoration: InputDecoration(
          labelText: "First name",
          suffixIcon: _firstNameController.text.isNotEmpty
            ? GestureDetector(
              onTap: () {
                WidgetsBinding.instance.addPostFrameCallback((_) => _firstNameController.clear());
              },
              child: Icon(Icons.clear, color: Colors.black38),
            )
            : null
        ),
      ),
    );
  }
}

flutter dart flutter-layout
1个回答
0
投票
TextFormField( controller: _firstNameController, textAlign: TextAlign.left, cursorColor: Colors.white, onChanged: (value) { }, style: TextStyle(color: Colors.white), decoration: InputDecoration( labelText: 'First Name', suffix: GestureDetector( onTap: () { _firstNameController.clear(); }, child: Icon(Icons.clear) ) ), ),

希望这会有所帮助。

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