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
相关产品推荐
相关产品推荐

