You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中TextFormField焦点切换背景色异常:需双击加载装饰样式

Flutter TextFormField 焦点异常问题
  • 需求:TextFormField 获取焦点时显示黑色背景,失去焦点时切换为蓝灰色背景,同时获取焦点时显示紫色粗边框
  • 异常现象:获取焦点时背景色正常变化,但需双击才能触发紫色边框的装饰样式加载

相关代码

import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';

class TextFormFieldWidget extends HookConsumerWidget {
  final TextEditingController controller;
  final bool obscureText;
  final String? hintText;

  const TextFormFieldWidget({
    super.key,
    required this.controller,
    this.hintText,
    this.obscureText = false,
  });

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    Color colorBlue = Colors.blueGrey.shade800;
    Color colorBlack = Colors.black;

    FocusNode focusNode = FocusNode();

    final isFocused = useState(false);

    focusNode.addListener(
      () {
        isFocused.value = focusNode.hasFocus;
      },
    );

    return TextFormField(
      controller: controller,
      obscureText: obscureText,
      decoration: InputDecoration(
        hintText: hintText,
        focusedBorder: OutlineInputBorder(
          borderRadius: BorderRadius.circular(5),
          borderSide: BorderSide(
            color: Colors.purple.shade700,
            width: 3,
          ),
        ),
        fillColor: isFocused.value ? colorBlack : colorBlue,
        filled: true,
      ),
      focusNode: focusNode,
    );
  }
}

状态展示

isFocused=falseisFocused=true
未获取焦点状态展示获取焦点状态展示

内容的提问来源于stack exchange,提问作者cosmos multi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 00:04:56