[英]What is the default font family of a Flutter app?
How I can retrieve the current font family name for flutter app and what is the default one?如何检索 flutter 应用程序的当前字体系列名称以及默认字体系列名称是什么?
I have tried我努力了
Theme.of(context).textTheme.
and和
Theme.of(context).
but there is no attribute for the font family.但是字体系列没有属性。
The default font of MaterialApp is described in MaterialApp 的默认字体在
/flutter/packages/flutter/lib/src/material/typography.dart
on iOS, the default TextTheme is在 iOS 上,默认的 TextTheme 是
static const TextTheme whiteCupertino = TextTheme(
display4 : TextStyle(debugLabel: 'whiteCupertino display4', fontFamily: '.SF UI Display', inherit: true, color: Colors.white70, decoration: TextDecoration.none),
display3 : TextStyle(debugLabel: 'whiteCupertino display3', fontFamily: '.SF UI Display', inherit: true, color: Colors.white70, decoration: TextDecoration.none),
display2 : TextStyle(debugLabel: 'whiteCupertino display2', fontFamily: '.SF UI Display', inherit: true, color: Colors.white70, decoration: TextDecoration.none),
display1 : TextStyle(debugLabel: 'whiteCupertino display1', fontFamily: '.SF UI Display', inherit: true, color: Colors.white70, decoration: TextDecoration.none),
headline : TextStyle(debugLabel: 'whiteCupertino headline', fontFamily: '.SF UI Display', inherit: true, color: Colors.white, decoration: TextDecoration.none),
title : TextStyle(debugLabel: 'whiteCupertino title', fontFamily: '.SF UI Display', inherit: true, color: Colors.white, decoration: TextDecoration.none),
subhead : TextStyle(debugLabel: 'whiteCupertino subhead', fontFamily: '.SF UI Text', inherit: true, color: Colors.white, decoration: TextDecoration.none),
body2 : TextStyle(debugLabel: 'whiteCupertino body2', fontFamily: '.SF UI Text', inherit: true, color: Colors.white, decoration: TextDecoration.none),
body1 : TextStyle(debugLabel: 'whiteCupertino body1', fontFamily: '.SF UI Text', inherit: true, color: Colors.white, decoration: TextDecoration.none),
caption : TextStyle(debugLabel: 'whiteCupertino caption', fontFamily: '.SF UI Text', inherit: true, color: Colors.white70, decoration: TextDecoration.none),
button : TextStyle(debugLabel: 'whiteCupertino button', fontFamily: '.SF UI Text', inherit: true, color: Colors.white, decoration: TextDecoration.none),
subtitle : TextStyle(debugLabel: 'whiteCupertino subtitle', fontFamily: '.SF UI Text', inherit: true, color: Colors.white, decoration: TextDecoration.none),
overline : TextStyle(debugLabel: 'whiteCupertino overline', fontFamily: '.SF UI Text', inherit: true, color: Colors.white, decoration: TextDecoration.none),
);
on Android, the default TextTheme is在 Android 上,默认的 TextTheme 是
static const TextTheme whiteMountainView = TextTheme(
display4 : TextStyle(debugLabel: 'whiteMountainView display4', fontFamily: 'Roboto', inherit: true, color: Colors.white70, decoration: TextDecoration.none),
display3 : TextStyle(debugLabel: 'whiteMountainView display3', fontFamily: 'Roboto', inherit: true, color: Colors.white70, decoration: TextDecoration.none),
display2 : TextStyle(debugLabel: 'whiteMountainView display2', fontFamily: 'Roboto', inherit: true, color: Colors.white70, decoration: TextDecoration.none),
display1 : TextStyle(debugLabel: 'whiteMountainView display1', fontFamily: 'Roboto', inherit: true, color: Colors.white70, decoration: TextDecoration.none),
headline : TextStyle(debugLabel: 'whiteMountainView headline', fontFamily: 'Roboto', inherit: true, color: Colors.white, decoration: TextDecoration.none),
title : TextStyle(debugLabel: 'whiteMountainView title', fontFamily: 'Roboto', inherit: true, color: Colors.white, decoration: TextDecoration.none),
subhead : TextStyle(debugLabel: 'whiteMountainView subhead', fontFamily: 'Roboto', inherit: true, color: Colors.white, decoration: TextDecoration.none),
body2 : TextStyle(debugLabel: 'whiteMountainView body2', fontFamily: 'Roboto', inherit: true, color: Colors.white, decoration: TextDecoration.none),
body1 : TextStyle(debugLabel: 'whiteMountainView body1', fontFamily: 'Roboto', inherit: true, color: Colors.white, decoration: TextDecoration.none),
caption : TextStyle(debugLabel: 'whiteMountainView caption', fontFamily: 'Roboto', inherit: true, color: Colors.white70, decoration: TextDecoration.none),
button : TextStyle(debugLabel: 'whiteMountainView button', fontFamily: 'Roboto', inherit: true, color: Colors.white, decoration: TextDecoration.none),
subtitle : TextStyle(debugLabel: 'whiteMountainView subtitle', fontFamily: 'Roboto', inherit: true, color: Colors.white, decoration: TextDecoration.none),
overline : TextStyle(debugLabel: 'whiteMountainView overline', fontFamily: 'Roboto', inherit: true, color: Colors.white, decoration: TextDecoration.none),
);
and you can retrieve the font family by the following code您可以通过以下代码检索字体系列
DefaultTextStyle.of(context).style.fontFamily
The default font of MaterialApp is roboto
, a Google font. MaterialApp 的默认字体是roboto
,一种谷歌字体。
https://fonts.google.com/specimen/Roboto https://fonts.google.com/specimen/Roboto
The default fonts depend on the operating system:默认字体取决于操作系统:
Android uses the Roboto font. Android使用 Roboto 字体。
iOS uses the San Francisco font (specifically, SF Pro Display). iOS使用 San Francisco 字体(特别是 SF Pro Display)。
In Flutter, default font on Android is Roboto
. 在Flutter中,Android上的默认字体是Roboto
。
But I use android monitor to run my Flutter application.I find the default font is monospace
. 但是我使用android monitor运行我的Flutter应用程序。我发现默认字体是monospace
。 Who can tell me, what's the problem? 谁能告诉我,怎么了?
Code just like follows: 代码如下:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
// This is the theme of your application.
//
// Try running your application with "flutter run". You'll see the
// application has a blue toolbar. Then, without quitting the app, try
// changing the primarySwatch below to Colors.green and then invoke
// "hot reload" (press "r" in the console where you ran "flutter run",
// or simply save your changes to "hot reload" in a Flutter IDE).
// Notice that the counter didn't reset back to zero; the application
// is not restarted.
// primarySwatch: Colors.yellow,
primaryColor: Colors.teal,
// default font-family is 'monospace',
fontFamily: DefaultTextStyle.of(context).style.fontFamily,
// replace with 'Roboto',but the result is 'monospace'
// fontFamily: 'Roboto',
// use 'monospaced',the result is 'monospace'
// fontFamily: 'monospaced',
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
// This widget is the home page of your application. It is stateful, meaning
// that it has a State object (defined below) that contains fields that affect
// how it looks.
// This class is the configuration for the state. It holds the values (in this
// case the title) provided by the parent (in this case the App widget) and
// used by the build method of the State. Fields in a Widget subclass are
// always marked "final".
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int counter = 0;
void _incrementCounter() {
setState(() {
// This call to setState tells the Flutter framework that something has
// changed in this State, which causes it to rerun the build method below
// so that the display can reflect the updated values. If we changed
// _counter without calling setState(), then the build method would not be
// called again, and so nothing would appear to happen.
counter++;
print('defalut font is: ${DefaultTextStyle.of(context).style.fontFamily}');
});
}
@override
Widget build(BuildContext context) {
// This method is rerun every time setState is called, for instance as done
// by the _incrementCounter method above.
//
// The Flutter framework has been optimized to make rerunning build methods
// fast, so that you can just rebuild anything that needs updating rather
// than having to individually change instances of widgets.
return Scaffold(
appBar: AppBar(
// Here we take the value from the MyHomePage object that was created by
// the App.build method, and use it to set our appbar title.
title: Text(
widget.title,
),
),
body: Text('$counter'),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
),
); // This trailing comma makes auto-formatting nicer for build methods.
}
}
The default font family for a Flutter app project is Flutter 应用项目的默认字体系列是
Roboto - get it here: https://fonts.google.com/specimen/Roboto#standard-styles Roboto - 在此处获取: https : //fonts.google.com/specimen/Roboto#standard-styles
which by default shows on Andriod OS.默认情况下显示在 Andriod OS 上。
For iOS devices its对于 iOS 设备,其
San Francisco font - get it here: https://developer.apple.com/fonts/旧金山字体 - 在此处获取: https : //developer.apple.com/fonts/
To use any of them by default(also depends on your theme settings) in your flutter project, you import either or both:要在您的 flutter 项目中默认使用它们中的任何一个(也取决于您的主题设置),您可以导入其中一个或两个:
for Andriod - import package:flutter/material.dart
.对于 Andriod - import package:flutter/material.dart
。
for iOS - import package:flutter/cupertino.dart
.对于 iOS - import package:flutter/cupertino.dart
。
you can also use other fonts(add its folder to the root folder or create assets folder) and include the font definition in the pubspec.yaml您还可以使用其他字体(将其文件夹添加到根文件夹或创建资产文件夹)并在 pubspec.yaml 中包含字体定义
To get the current font family:要获取当前字体系列:
DefaultTextStyle.of(context).style.fontFamily
The default font family would be based on the device: https://api.flutter.dev/flutter/material/Typography/Typography.material2021.html默认字体系列将基于设备: https://api.flutter.dev/flutter/material/Typography/Typography.material2021.html
Roboto for Android . Android机器人。 https://api.flutter.dev/flutter/material/Typography/blackMountainView-constant.html https://api.flutter.dev/flutter/material/Typography/blackMountainView-constant.html
San Francisco for iOS .旧金山电话 iOS 。 https://api.flutter.dev/flutter/material/Typography/blackCupertino-constant.html https://api.flutter.dev/flutter/material/Typography/blackCupertino-constant.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.