flutter/examples/flutter_gallery/lib/demo/material/chip_demo.dart
Greg Spencer 05e10633f2
Adding proper accommodation for textScaleFactor in chips, and StadiumBorder border. (#12533)
In order to allow chips to be properly drawn when they expand in size (without
using IntrinsicHeight), I needed a BoxDecoration shape that would be dependent
upon the rendered height of the widget. This seemed to be pretty generally
useful, so I added a new ShapeDecoration called StadiumBorder. It uses the
minimum dimension to adjust the BorderRadius of a rounded rect in the shape
decoration.

I also converted some uses of BoxShape to be case statements, updated the
chips to use the StadiumBorder decoration, and updated some of the metrics to match
the Material spec, as well as implementing lerping to and from StadiumBorder.
2017-11-01 19:37:02 -07:00

55 lines
1.2 KiB
Dart

// Copyright 2015 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 ChipDemo extends StatefulWidget {
static const String routeName = '/material/chip';
@override
_ChipDemoState createState() => new _ChipDemoState();
}
class _ChipDemoState extends State<ChipDemo> {
bool _showBananas = true;
void _deleteBananas() {
setState(() {
_showBananas = false;
});
}
@override
Widget build(BuildContext context) {
final List<Widget> chips = <Widget>[
const Chip(
label: const Text('Apple')
),
const Chip(
avatar: const CircleAvatar(child: const Text('B')),
label: const Text('Blueberry'),
),
];
if (_showBananas) {
chips.add(new Chip(
label: const Text('Bananas'),
onDeleted: _deleteBananas
));
}
return new Scaffold(
appBar: new AppBar(title: const Text('Chips')),
body: new ListView(
children: chips.map((Widget chip) {
return new Container(
height: 100.0,
child: new Center(child: chip)
);
}).toList()
)
);
}
}