我正在尝试使用 flutter 制作一个可扩展的 Button 小部件,除了 onPressed 之外的所有属性都正常工作,它需要 VoidCallback 数据类型,这里出了什么问题 代码: `//ignore_for_file: public_member_api_docs, sort_constructors_first 导入'包:flutter/material.dart';
// 忽略:must_be_immutable 类 PrimaryButton 扩展 StatelessWidget { // 注意:如果 VoidCallback + required this.onPressedData 未注释,则路由错误 // VoidCallback onPressedData; 字符串文本按钮数据; 主按钮({ 超级密钥, // 需要 this.onPressedData, 需要 this.textButtonData, });
@覆盖 小部件构建(BuildContext上下文){ 返回高架按钮( //TODO: 为每个按钮实现 onPressed onPressed: () {}, // onPressedData, 样式:按钮样式( 固定大小: WidgetStatePropertyAll(Size(368, 49),), 背景颜色:WidgetStatePropertyAll( Theme.of(context).colorScheme.primaryContainer ), ), 孩子:文本( 文本按钮数据, 样式:文本样式( 颜色:Theme.of(context).colorScheme.onPrimaryContainer, fontWeight:FontWeight.bold, 字体大小:18)), ); } } `
我尝试使用评论的解决方案,但由于某些原因它不起作用
试试这个代码
class PrimaryButton extends StatelessWidget {
final VoidCallback onPressedData;
final String textButtonData;
const PrimaryButton({
super.key,
required this.onPressedData,
required this.textButtonData,
});
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: onPressedData,
style: ButtonStyle(
fixedSize: WidgetStatePropertyAll(Size(368, 49),),
backgroundColor: WidgetStatePropertyAll(
Theme.of(context).colorScheme.primaryContainer
),
),
child: Text(
textButtonData,
style: TextStyle(
color: Theme.of(context).colorScheme.onPrimaryContainer,
fontWeight: FontWeight.bold,
fontSize: 18)),
);
}
}