我正在Flutter项目中使用GetX。
使用像Get.snackbar()
这样的函数可以显示一个SnackBar,我想在其中包含一个使用mainButton
的按钮。这个按钮必须是TextButton
类型。因为我在项目的很多部分都使用这种类型的SnackBar,所以我想从另一个文件调用TextButton
。
我创建了一个文件,如下所示:
import 'package:flutter/material.dart';
class SnackbarTextButton extends StatelessWidget {
final String text;
const SnackbarTextButton({Key? key, required this.text}) : super(key: key);
@override
Widget build(BuildContext context) {
return TextButton(
style: ButtonStyle(
overlayColor: MaterialStateColor.resolveWith((states) => Colors.transparent),
splashFactory: NoSplash.splashFactory,
),
onPressed: () {},
child: Text(
text,
style: const TextStyle(
fontSize: 12,
color: Colors.white,
fontWeight: FontWeight.bold,
),
),
);
}
}
我在使用SnackBar的地方包含了它,但得到了错误:The argument type 'SnackbarTextButton' can't be assigned to the parameter type 'TextButton?'
.
我如何告诉我的文件我实际上返回的是一个TextButton?我如何改变我在另一个文件上构建的小部件的类型,以匹配本例中的TextButton
?
先谢谢你。
2条答案
按热度按时间mec1mxoz1#
您可以创建一个helper方法来代替
StatelessWidget
,因为如果所需的类型是TextButton?
,那么使用StatelessWidget
时,您应该扩展或实现TextButton
类型:但是这会给您的案例带来额外的不必要的工作,因为您可以简单地创建一个helper方法来返回您想要的
TextButton
小部件:那么就这样命名它:
xvw2m8pv2#
我希望这个答案能解决你的错误这是你应该做的
用于main.dart
您可以像这样使用Get.showSnackbar
文本按钮代码
输出: