1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// 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/widgets.dart';
import 'constants.dart';
import 'theme.dart';
/// A circle that represents a user.
///
/// Typicially used with a user's profile image, or, in the absence of
/// such an image, the user's initials. A given user's initials should
/// always be paired with the same background color, for consistency.
///
/// This class is used by [Chip].
/// See also: <https://www.google.com/design/spec/components/chips.html#chips-contact-chips>
class CircleAvatar extends StatelessWidget {
CircleAvatar({
Key key,
this.child,
this.backgroundColor,
this.radius: 40.0
}) : super(key: key);
/// The widget below this widget in the tree.
final Widget child;
/// The color with which to fill the circle. Changing the background
/// color will cause the avatar to animate to the new color.
final Color backgroundColor;
/// The size of the avatar. Changing the radius will cause the
/// avatar to animate to the new size.
final double radius;
@override
Widget build(BuildContext context) {
final ThemeData theme = Theme.of(context);
final Color color = backgroundColor ?? theme.primaryColor;
return new AnimatedContainer(
width: radius,
height: radius,
duration: kThemeChangeDuration,
decoration: new BoxDecoration(
backgroundColor: color,
shape: BoxShape.circle
),
child: new Center(
child: new DefaultTextStyle(
style: theme.primaryTextTheme.title,
child: child
)
)
);
}
}