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

Flutter自定义TextButton组件出现变量未定义错误求助

解决Flutter自定义StatefulWidget中变量未定义的错误

你遇到的title和function未定义错误,核心原因是:这两个变量是定义在CustomBoxButton(StatefulWidget类)里的成员,而你在对应的State类_CustomBoxButtonState中直接调用了它们——State类无法直接访问父Widget的成员,必须通过widget.前缀来引用。

另外补充一个规范建议:TextButton的onPressed参数要求的是VoidCallback类型(无参数无返回值的函数),把Function改成VoidCallback能避免潜在的类型不匹配问题。

修复后的完整代码如下:

import 'package:flutter/material.dart';

class CustomBoxButton extends StatefulWidget {
  final String title;
  // 替换Function为VoidCallback,贴合onPressed的类型要求
  final VoidCallback function;

  const CustomBoxButton(
      {super.key, required this.title, required this.function});

  @override
  State<CustomBoxButton> createState() => _CustomBoxButtonState();
}

class _CustomBoxButtonState extends State<CustomBoxButton> {
  @override
  Widget build(BuildContext context) {
    return Container(
      width: 384.0,
      margin: const EdgeInsets.only(top: 24.0),
      decoration: BoxDecoration(borderRadius: BorderRadius.circular(4)),
      child: TextButton(
        // 通过widget.访问父Widget的function
        onPressed: widget.function,
        style: TextButton.styleFrom(
          shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.circular(8.0),
          ),
          backgroundColor: Colors.deepPurple,
          padding: const EdgeInsets.all(8),
        ),
        child: Text(
          // 通过widget.访问父Widget的title
          widget.title,
          style: const TextStyle(
            fontSize: 20.0,
            fontWeight: FontWeight.bold,
            color: Colors.white,
          ),
        ),
      ),
    );
  }
}

内容的提问来源于stack exchange,提问作者Finn Luca Jensen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 15:00:01