在 Flutter 中,Material Typography 是一組符合 Material Design 標準的預設文字樣式。這些樣式經過精心設計,用於提供一致性和易讀性,適合應用的標題、正文和其他文字元素。Flutter 提供了 Typography 類,讓您可以輕鬆地使用 Material Design 中推薦的排版樣式。
Material Typography 組成
Material Typography 的文字樣式分為多個等級,適合不同的文字用途。這些等級包括:
- Display Styles(顯示樣式)
- displayLarge, displayMedium, displaySmall:通常用於非常突出的標題,例如應用程序的主要標題。
- 字體相對較大,適合用於需要強調和吸引眼球的文字。
- Headline Styles(標題樣式)
- headlineLarge, headlineMedium, headlineSmall:適合次要標題,比 Display 更小一些,用於模組標題、列表標題等。
- 這些樣式仍然具有一定的顯著性,但比 Display 顯得稍微內斂。
- Title Styles(標題樣式)
- titleLarge, titleMedium, titleSmall:適合用於段落或小節的標題。
- 尺寸較小,但具有視覺上的層次感,適合次級信息或說明性文字的標題。
- Label Styles(標籤樣式)
- labelLarge, labelMedium, labelSmall:適合按鈕或其他小的標籤文字。
- 標籤字體清晰簡潔,易於快速閱讀,適合顯示在按鈕、表單標籤等小型控件上。
- Body Styles(正文樣式)
- bodyLarge, bodyMedium, bodySmall:適合段落和正文文字。
- bodyMedium 和 bodySmall 常用於大段文字敘述或注釋信息,提供良好的可讀性。
使用 Typography 設置 Material 文字樣式
Flutter 提供了 Typography.material2018() 和 Typography.material2021() 等預設文字樣式,可以根據應用的需求來選擇合適的 Material Design 樣式標準。通過 ThemeData.typography 屬性,我們可以直接使用這些預設樣式。
範例:設置 Material Typography 樣式
MaterialApp(
theme: ThemeData(
typography: Typography.material2018(), // 使用 2018 年的 Material Design 標準
),
home: MyHomePage(),
);
在 TextTheme 中使用 Material Typography 樣式
TextTheme 類包含所有 Material Typography 樣式,可通過 Theme.of(context).textTheme 訪問這些預設樣式。
Text(
'This is a headline',
style: Theme.of(context).textTheme.headlineLarge,
);
Text(
'This is body text',
style: Theme.of(context).textTheme.bodyMedium,
);
Text(
'This is a button label',
style: Theme.of(context).textTheme.labelLarge,
);
自定義 Typography
您還可以在 TextTheme 中覆寫預設樣式,以匹配應用的特定需求。例如,您可以自定義 headline1 的字體大小或顏色。
MaterialApp(
theme: ThemeData(
textTheme: TextTheme(
headlineLarge: TextStyle(
fontSize: 28.0,
fontWeight: FontWeight.bold,
color: Colors.deepPurple,
),
bodyMedium: TextStyle(
fontSize: 16.0,
color: Colors.grey[700],
),
),
),
home: MyHomePage(),
);
總結
Material Typography 提供了豐富且一致的文字樣式層次,用於不同的文字需求。通過使用 Typography 和 TextTheme,您可以設置和覆寫這些文字樣式,以達到理想的設計效果。