flutter - getter 'hasFocus' 在 null 上被调用
问题描述
我有 8 个 TextFiled,我想为每个指定一个焦点,以便颜色发生变化。但我有一个错误 - 在 null 上调用了 getter 'hasFocus'。我该如何解决?
class _EditAccountScreenState extends State<EditAccountScreen> {
FocusNode _focusNodeFio;
FocusNode _focusNodeCompany;
...
@override
void initState() {
super.initState();
_focusNodeFio = FocusNode();
_focusNodeCompany = FocusNode();
...
}
@override
void dispose() {
_focusNodeFio.dispose();
_focusNodeCompany.dispose();
...
super.dispose();
}
@override
Widget build(BuildContext context) {
.......
Padding(
child: TextField(
focusNode: _focusNodeFio,
onTap: () {
setState(() {
FocusScope.of(context).requestFocus(_focusNodeFio);
});
},
decoration: InputDecoration(
labelText: 'Contacts',
labelStyle: TextStyle(
color: _focusNodeFio.hasFocus ? Colors.teal[300] : Colors.grey
),
contentPadding:
解决方案
这是有效的!
final FocusNode _fNode = FocusNode();
@override
Widget build(BuildContext context) {
return Scaffold(
body: TextField(
focusNode: _fNode,
onTap: () => FocusScope.of(context).requestFocus(_fNode),
decoration: InputDecoration(
labelText: 'Contacts',
labelStyle: TextStyle(color: _fNode.hasFocus ? Colors.teal[300] : Colors.grey),
),
),
);
}
推荐阅读
- bash - 如何在管道之前测试命令,捕获它的输出并了解命令是否成功运行
- pycharm - Pycharm:库初始化失败
- arduino - 无法使用 mosquitto/mqtt 连接到在 localhost 服务器上运行的 Thingsboard
- javascript - Javascript - 将回调与 addEventListener 一起用于“全部删除”按钮
- c# - 如何获取 VSTS 迭代的 TimeFrame(当前或未来)
- mysql - 在 SQL 上显示列值及其计数
- android - 错误。当我将应用程序更改为库时,出现多个错误
- javascript - 如何设置我的 Ubuntu 18.04 服务器以允许 WebSockets?
- c++ - Are there multiple member functions compiled for each C++ object?
- excel - 在 SeleniumVBA 中将提供编译错误的首选项方法设置为“Argument not optional”