如何在 Flutter 上制作具有 onPressed 属性的可重用 ElevatedButton

问题描述 投票:0回答:1

我正在尝试使用 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)), ); } } `

我尝试使用评论的解决方案,但由于某些原因它不起作用

flutter dart
1个回答
0
投票

试试这个代码

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)),
    );
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.