Skip to content

Instantly share code, notes, and snippets.

@derekedelaney
Created May 12, 2021 22:11
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save derekedelaney/0bd36b370daceaf56712a22bd097cdc8 to your computer and use it in GitHub Desktop.
Save derekedelaney/0bd36b370daceaf56712a22bd097cdc8 to your computer and use it in GitHub Desktop.
Adds confetti to a flutter Dialog
import 'package:flutter/material.dart';
import 'package:confetti/confetti.dart';
Future<T> showConfettiDialog<T>({
@required BuildContext context,
WidgetBuilder builder,
bool barrierDismissible = true,
Color barrierColor,
bool useSafeArea = true,
bool useRootNavigator = true,
RouteSettings routeSettings,
Alignment confettiAlignment = Alignment.center,
}) {
final pageBuilder = Builder(
builder: builder,
);
ConfettiController _confettiController =
ConfettiController(duration: const Duration(seconds: 2));
_confettiController.play();
return showDialog(
context: context,
builder: (BuildContext buildContext) {
return Stack(
children: [
pageBuilder,
Align(
alignment: confettiAlignment,
child: ConfettiWidget(
confettiController: _confettiController,
blastDirectionality: BlastDirectionality.explosive,
emissionFrequency: 0.1,
),
),
],
);
},
barrierDismissible: barrierDismissible,
barrierColor: barrierColor,
useSafeArea: useSafeArea,
useRootNavigator: useRootNavigator,
routeSettings: routeSettings,
);
}
@cbatson
Copy link

cbatson commented Dec 17, 2022

Nice approach! Need to dispose _confettiController though.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment