avatar_stack
설정이 있는 고급이고 유연한 아바타 스택입니다. 작은 공간에 많은 아바타 또는 다른 위젯을 배치할 수 있습니다.
cyrax111/avatar_stack open-source repository details.
{"sdk":"flutter"}{"sdk":"flutter"}^5.0.0아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.
Build Status Coverage Status Pub
Avatar stack is used to visually represent users, places, and things in a limited space.
Example
Try Live Demo :-)
import 'package:avatar_stack/animated_avatar_stack.dart';
import 'package:flutter/material.dart';
void main() => runApp(MaterialApp(
home: Scaffold(
body: Center(
child: AnimatedAvatarStack(
height: 50,
avatars: [
for (var n = 0; n < 15; n++) NetworkImage('https://i.pravatar.cc/150?img=$n'),
],
),
),
),
));
Example
Usually the stack avatar shows all items as possible but you can restrict it by, say, five items. Restrict amount of items
By default the stack avatar has left alignment one can change it.
center alignment
right alignment
You can set how avatars will coverage each others.
max coverage is set to 70%
The negative coverage will set space between items. min coverage is set to minus 50%
You can use any widget to stack not only avatars Any widget for stack
The additional space between an info item (if exists) and other items. Indent of an info item
The way to tile items.
Indent of an info item
Indent of an info item
One can use any widget for stacking. Apply WidgetStack widget for that. For example:
import 'package:avatar_stack/avatar_stack.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MaterialApp(home: Example7WidgetStack()));
}
class Example7WidgetStack extends StatelessWidget {
const Example7WidgetStack({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
final settings = RestrictedPositions(
maxCoverage: -0.1,
minCoverage: -0.5,
align: StackAlign.right,
);
return Column(
children: [
const Text(
'Any widgets for stack:',
),
const SizedBox(height: 10),
SizedBox(
height: 50,
child: WidgetStack(
positions: settings,
stackedWidgets: [
for (var n = 0; n < 12; n++)
FlutterLogo(
style: FlutterLogoStyle.stacked,
textColor: Color(0xFF * 0x1000000 +
n * 10 * 0x10000 +
(0xFF - n * 10) * 0x100),
),
const FittedBox(
fit: BoxFit.fitHeight,
child: Text('A',
style: TextStyle(height: 0.9, color: Colors.orange))),
const FittedBox(
fit: BoxFit.fitHeight,
child: Text('B', style: TextStyle(height: 0.9))),
const FittedBox(
fit: BoxFit.fitHeight,
child: Text('C',
style: TextStyle(height: 0.9, color: Colors.green))),
],
buildInfoWidget: (surplus) {
return Center(
child: Text(
'+$surplus',
style: Theme.of(context).textTheme.headline5,
));
},
),
),
],
);
}
}
You can also use the example from github https://github.com/cyrax111/avatar_stack/tree/master/example
If you have any ideas on how to enhance this package or have any concern, feel free to make an issue.