Menu
CoddyTech

テーマから取得するテキストスタイル

CoddyのFlutterジャーニー「画面サイズに合わせたレイアウト」セクションの一部。レッスン 23/30。

テーマには色だけでなく、textThemeにテキストスタイルも含まれています。それぞれのスタイルには、大きいものから小さいものまで、用途に応じた名前が付いています。displayLarge、headlineMedium、titleLarge、bodyMedium、labelLargeなどがあります。

スタイルを使うには、テーマから読み取り、style:として渡します。

Text('Hello', style: Theme.of(context).textTheme.headlineMedium)

スタイルを指定しないTextには、サイズが14のbodyMediumが使われます。アプリ内のすべての通常のテキストを一度に変更するには、独自のbodyMediumをテーマに設定します。

ThemeData(
  textTheme: const TextTheme(
    bodyMedium: TextStyle(fontSize: 16),
  ),
)

Flutterは、指定しなかったスタイルをすべてデフォルト値で補うため、変更するものだけを書けば十分です。

challenge icon

チャレンジ

簡単

テーマを使って日誌のスタイルを設定します。

  • TodayにテーマのheadlineMediumスタイルを適用します
  • ThemeDataで、独自のbodyMediumを使って通常のテキストサイズを18にします

自分で試してみよう

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.green),
      ),
      home: const HomeScreen(),
    );
  }
}

class HomeScreen extends StatelessWidget {
  const HomeScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Garden Journal')),
      body: Padding(
        padding: const EdgeInsets.all(16),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            const Text('Today'),
            const SizedBox(height: 8),
            const Text('Water the tomatoes in the morning.'),
            const Text('Pick the first beans on Friday.'),
          ],
        ),
      ),
    );
  }
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

画面サイズに合わせたレイアウトのすべてのレッスン

自分で練習してみよう: Flutterオンラインコンパイラ