mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00

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.
55 lines
1.2 KiB
Dart
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()
|
|
)
|
|
);
|
|
}
|
|
}
|