mirror of https://github.com/flutter/samples.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.6 KiB
75 lines
2.6 KiB
// Copyright 2016 The Chromium Authors. 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';
|
|
|
|
class TextStyleItem extends StatelessWidget {
|
|
const TextStyleItem({
|
|
Key key,
|
|
@required this.name,
|
|
@required this.style,
|
|
@required this.text,
|
|
}) : assert(name != null),
|
|
assert(style != null),
|
|
assert(text != null),
|
|
super(key: key);
|
|
|
|
final String name;
|
|
final TextStyle style;
|
|
final String text;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final ThemeData theme = Theme.of(context);
|
|
final TextStyle nameStyle = theme.textTheme.caption.copyWith(color: theme.textTheme.caption.color);
|
|
return Padding(
|
|
padding: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 16.0),
|
|
child: Row(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: <Widget>[
|
|
SizedBox(
|
|
width: 72.0,
|
|
child: Text(name, style: nameStyle),
|
|
),
|
|
Expanded(
|
|
child: Text(text, style: style.copyWith(height: 1.0)),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|
|
|
|
class TypographyDemo extends StatelessWidget {
|
|
static const String routeName = '/typography';
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final TextTheme textTheme = Theme.of(context).textTheme;
|
|
final List<Widget> styleItems = <Widget>[
|
|
if (MediaQuery.of(context).size.width > 500.0)
|
|
TextStyleItem(name: 'Display 4', style: textTheme.display4, text: 'Light 112sp'),
|
|
TextStyleItem(name: 'Display 3', style: textTheme.display3, text: 'Regular 56sp'),
|
|
TextStyleItem(name: 'Display 2', style: textTheme.display2, text: 'Regular 45sp'),
|
|
TextStyleItem(name: 'Display 1', style: textTheme.display1, text: 'Regular 34sp'),
|
|
TextStyleItem(name: 'Headline', style: textTheme.headline, text: 'Regular 24sp'),
|
|
TextStyleItem(name: 'Title', style: textTheme.title, text: 'Medium 20sp'),
|
|
TextStyleItem(name: 'Subheading', style: textTheme.subhead, text: 'Regular 16sp'),
|
|
TextStyleItem(name: 'Body 2', style: textTheme.body2, text: 'Medium 14sp'),
|
|
TextStyleItem(name: 'Body 1', style: textTheme.body1, text: 'Regular 14sp'),
|
|
TextStyleItem(name: 'Caption', style: textTheme.caption, text: 'Regular 12sp'),
|
|
TextStyleItem(name: 'Button', style: textTheme.button, text: 'MEDIUM (ALL CAPS) 14sp'),
|
|
];
|
|
|
|
return Scaffold(
|
|
appBar: AppBar(title: const Text('Typography')),
|
|
body: SafeArea(
|
|
top: false,
|
|
bottom: false,
|
|
child: Scrollbar(child: ListView(children: styleItems)),
|
|
),
|
|
);
|
|
}
|
|
}
|