为Flutter中的所有按钮设置fontFamily

时间:2018-09-30 10:13:11

标签: flutter

是否可以为Flutter应用程序中的所有按钮设置fontFamily?

我看到可以使用theme.fontFamily为我的MaterialApp设置fontFamily,但是我想为所有按钮使用不同的fontFamily。

我看到也有一个ButtonThemeData,但它似乎只与颜色和形状有关。

我不想每次使用按钮或必须包装所有类型的按钮时都显式设置fontFamily,有什么方法可以做到这一点?

谢谢!

3 个答案:

答案 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");
     },
)