繁体   English   中英

覆盖 flutter textTheme

[英]Override flutter textTheme

在这样的特定情况下,有没有办法扩展Theme.of(context).textTheme.bodyText2的 styles ?

我想在使用bodyText2主题时为AppBar文本添加颜色

示例代码:

main.dart

void main() {
  // =========================================================================
  // THEME COLORS
  // =========================================================================

  final primary = Color(0xff222222);
  final dimmed = Color(0xff838383);

  // =========================================================================
  // ENTRY POINT
  // =========================================================================

  runApp(MaterialApp(
    debugShowCheckedModeBanner: false,
    theme: ThemeData(
      fontFamily: 'Avenir',
      textTheme: TextTheme(
        bodyText1: TextStyle(
          fontFamily: 'Avenir',
          fontSize: 16,
        ),
        bodyText2: TextStyle(
          fontFamily: 'Avenir',
          fontWeight: FontWeight.w700,
          fontSize: 16,
        ),
      ),
      primaryColor: primary,
      accentColor: dimmed,
    ),
    home: App(),
  ));
}

IsaAppBar.dart

// =========================================================================
// IsaAppBar State
// =========================================================================
class _IsaAppBarState extends State<IsaAppBar> {
  String get title => widget.title;

  @override
  Widget build(BuildContext context) {
    return AppBar(
        backgroundColor: Theme.of(context).primaryColor,
        title: Align(
            alignment: Alignment.topLeft,
            child: Text('ISA', style: Theme.of(context).textTheme.bodyText2)));
  }
}

您可以使用.copyWith()方法实现此目的

return AppBar(
        backgroundColor: Theme.of(context).primaryColor,
        title: Align(
          alignment: Alignment.topLeft,
          child: Text('ISA',
              style: Theme.of(context)
                  .textTheme
                  .bodyText2
                  .copyWith(color: Colors.black)),
        ),
      );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM