blob: 2ce79fee17dc2bb52044ea61ebc287ffaf2d26b1 [file] [log] [blame]
// Copyright 2019 The Flutter team. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/gallery_localizations.dart';
// BEGIN typographyDemo
class _TextStyleItem extends StatelessWidget {
const _TextStyleItem({
required this.name,
required this.style,
required this.text,
});
final String name;
final TextStyle style;
final String text;
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 16),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SizedBox(
width: 72,
child: Text(name, style: Theme.of(context).textTheme.bodySmall),
),
Expanded(
child: Text(text, style: style),
),
],
),
);
}
}
class TypographyDemo extends StatelessWidget {
const TypographyDemo({super.key});
@override
Widget build(BuildContext context) {
final textTheme = Theme.of(context).textTheme;
final styleItems = [
_TextStyleItem(
name: 'Headline 1',
style: textTheme.displayLarge!,
text: 'Light 96sp',
),
_TextStyleItem(
name: 'Headline 2',
style: textTheme.displayMedium!,
text: 'Light 60sp',
),
_TextStyleItem(
name: 'Headline 3',
style: textTheme.displaySmall!,
text: 'Regular 48sp',
),
_TextStyleItem(
name: 'Headline 4',
style: textTheme.headlineMedium!,
text: 'Regular 34sp',
),
_TextStyleItem(
name: 'Headline 5',
style: textTheme.headlineSmall!,
text: 'Regular 24sp',
),
_TextStyleItem(
name: 'Headline 6',
style: textTheme.titleLarge!,
text: 'Medium 20sp',
),
_TextStyleItem(
name: 'Subtitle 1',
style: textTheme.titleMedium!,
text: 'Regular 16sp',
),
_TextStyleItem(
name: 'Subtitle 2',
style: textTheme.titleSmall!,
text: 'Medium 14sp',
),
_TextStyleItem(
name: 'Body Text 1',
style: textTheme.bodyLarge!,
text: 'Regular 16sp',
),
_TextStyleItem(
name: 'Body Text 2',
style: textTheme.bodyMedium!,
text: 'Regular 14sp',
),
_TextStyleItem(
name: 'Button',
style: textTheme.labelLarge!,
text: 'MEDIUM (ALL CAPS) 14sp',
),
_TextStyleItem(
name: 'Caption',
style: textTheme.bodySmall!,
text: 'Regular 12sp',
),
_TextStyleItem(
name: 'Overline',
style: textTheme.labelSmall!,
text: 'REGULAR (ALL CAPS) 10sp',
),
];
return Scaffold(
appBar: AppBar(
automaticallyImplyLeading: false,
title: Text(GalleryLocalizations.of(context)!.demoTypographyTitle),
),
body: Scrollbar(child: ListView(children: styleItems)),
);
}
}
// END