funny_widget 0.0.1
funny_widget: ^0.0.1 copied to clipboard
A collection of animated Flutter widgets for avatars, grouped profile stacks, and 3D swipers.
funny_widget #
funny_widget provides a small set of animated Flutter widgets:
GroupPurchaseAvatarfor overlapping avatar stacks with optional count labels and fixed-window autoplay.AvatarSphereWidgetfor draggable, auto-rotating spherical avatar walls.Swiper3DWidgetfor touch-driven 3D carousel layouts with controller support.
[swiper_3d] [group_purchase_avatar] [avatar_sphere]
Installation #
dependencies:
funny_widget: ^0.0.1
Usage #
import 'package:flutter/material.dart';
import 'package:funny_widget/funny_widget.dart';
class AvatarStackExample extends StatelessWidget {
const AvatarStackExample({super.key});
@override
Widget build(BuildContext context) {
return GroupPurchaseAvatar(
avatars: const [
'https://picsum.photos/seed/funny-widget-1/80/80',
'https://picsum.photos/seed/funny-widget-2/80/80',
'https://picsum.photos/seed/funny-widget-3/80/80',
'https://picsum.photos/seed/funny-widget-4/80/80',
],
size: 48,
maxVisibleCount: 3,
);
}
}
class AvatarSphereExample extends StatelessWidget {
const AvatarSphereExample({super.key});
@override
Widget build(BuildContext context) {
return Center(
child: AvatarSphereWidget(
avatarUrls: const [
'https://picsum.photos/seed/funny-widget-a/80/80',
'https://picsum.photos/seed/funny-widget-b/80/80',
'https://picsum.photos/seed/funny-widget-c/80/80',
'https://picsum.photos/seed/funny-widget-d/80/80',
'https://picsum.photos/seed/funny-widget-e/80/80',
'https://picsum.photos/seed/funny-widget-f/80/80',
],
radius: 140,
avatarSize: 56,
),
);
}
}
final controller = Swiper3DController();
Swiper3DWidget(
controller: controller,
childWidth: 120,
childHeight: 80,
onPageChanged: (page) {},
children: const [
ColoredBox(color: Colors.red),
ColoredBox(color: Colors.green),
ColoredBox(color: Colors.blue),
],
);
See the example/ app for interactive demos of every widget.