是否可以为Flutter应用程序中的所有按钮设置fontFamily?
我看到可以使用theme.fontFamily为我的MaterialApp设置fontFamily,但是我想为所有按钮使用不同的fontFamily。
我看到也有一个ButtonThemeData,但它似乎只与颜色和形状有关。
我不想每次使用按钮或必须包装所有类型的按钮时都显式设置fontFamily,有什么方法可以做到这一点?
谢谢!
答案 0 :(得分:1)
最简单的方法是创建一个帮助程序方法,该方法返回一个按需配置的Button。
答案 1 :(得分:1)
您应该使用主题为整个小部件(包括按钮:https://flutter.dev/docs/cookbook/design/fonts
)自定义字体。答案 2 :(得分:0)
我建议创建一个自定义按钮,以“扩展” Flutter MaterialButton或RawMaterialButton。如果您希望按钮可重复使用,请记住也将buttonText添加为参数。还记得将TextStyle(fontFamily: 'Raleway')
添加到“文本”小部件样式中。
另一个选择是使用与下面的按钮示例相同的方式“扩展” Flutter Text小部件,并将您的CustomTextWidget作为子级添加到Flutter MaterialButton小部件中。我更喜欢将两者结合使用。 CustomButton和CustomText小部件。
import 'package:flutter/material.dart';
class CustomButton extends StatelessWidget {
CustomButton({@required this.onPressed});
final GestureTapCallback onPressed;
@override
Widget build(BuildContext context) {
return RawMaterialButton(
fillColor: Colors.green,
splashColor: Colors.greenAccent,
child: Padding(
padding: EdgeInsets.all(10.0),
child: Row(
mainAxisSize: MainAxisSize.min,
children: const <Widget>[
Icon(
Icons.face,
color: Colors.amber,
),
SizedBox(
width: 10.0,
),
Text(
"Tap Me",
maxLines: 1,
style: TextStyle(color: Colors.white),
),
],
),
),
onPressed: onPressed,
shape: const StadiumBorder(),
);
}
}
这里是实现:
CustomButton(
onPressed: () {
print("Tapped Me");
},
)