Commit 83f37246 authored by Dragos Tiselice's avatar Dragos Tiselice

Added backgroundImage to CircleAvatar.

In order to have an efficient way to display clipped avatars,
backgroundImage was added inside of the container's BoxDecoration.
Fixes #4964. This commit also fixes #4567 where the radius property
actually sets the diamater.
parent 5f7b8999
......@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart';
import 'constants.dart';
......@@ -24,7 +25,8 @@ class CircleAvatar extends StatelessWidget {
Key key,
this.child,
this.backgroundColor,
this.radius: 40.0
this.backgroundImage,
this.radius: 20.0
}) : super(key: key);
/// The widget below this widget in the tree.
......@@ -34,6 +36,10 @@ class CircleAvatar extends StatelessWidget {
/// color will cause the avatar to animate to the new color.
final Color backgroundColor;
/// The background image of the circle. Changing the background
/// image will cause the avatar to animate to the new image.
final ImageProvider backgroundImage;
/// The size of the avatar. Changing the radius will cause the
/// avatar to animate to the new size.
final double radius;
......@@ -44,11 +50,14 @@ class CircleAvatar extends StatelessWidget {
final Color color = backgroundColor ?? theme.primaryColor;
return new AnimatedContainer(
width: radius,
height: radius,
width: radius * 2.0,
height: radius * 2.0,
duration: kThemeChangeDuration,
decoration: new BoxDecoration(
backgroundColor: color,
backgroundImage: backgroundImage != null ? new BackgroundImage(
image: backgroundImage
) : null,
shape: BoxShape.circle
),
child: new Center(
......
// 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';
import 'package:flutter_test/flutter_test.dart';
void main() {
testWidgets('CircleAvatar test', (WidgetTester tester) async {
await tester.pumpWidget(
new Center(
child: new CircleAvatar(
backgroundColor: Colors.blue[400],
radius: 50.0,
child: new Text('Z')
)
)
);
RenderBox box = tester.renderObject(find.byType(CircleAvatar));
expect(box.size.width, equals(100.0));
expect(box.size.height, equals(100.0));
expect(find.text('Z'), findsOneWidget);
});
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment