【问题标题】:The getter 'hasFocus' was called on nullgetter 'hasFocus' 在 null 上被调用
【发布时间】:2020-12-30 09:40:30
【问题描述】:

我有 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:

【问题讨论】:

    标签: flutter dart flutter-layout


    【解决方案1】:

    这行得通!

    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),
          ),
        ),
      );
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-11
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      • 2020-01-10
      • 2020-10-24
      相关资源
      最近更新 更多