ente/lib/utils/dialog_util.dart

235 lines
7.3 KiB
Dart
Raw Normal View History

import 'dart:math';
import 'dart:ui';
import 'package:confetti/confetti.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:photos/ui/loading_widget.dart';
2021-03-31 08:24:50 +00:00
import 'package:photos/ui/progress_dialog.dart';
ProgressDialog createProgressDialog(BuildContext context, String message) {
final dialog = ProgressDialog(context,
type: ProgressDialogType.Normal,
isDismissible: false,
barrierColor: Colors.black12);
dialog.style(
message: message,
messageTextStyle: Theme.of(context).textTheme.caption,
backgroundColor: Theme.of(context).dialogTheme.backgroundColor,
progressWidget: loadWidget,
borderRadius: 10,
elevation: 10.0,
insetAnimCurve: Curves.easeInOut,
);
return dialog;
}
2020-08-25 06:00:19 +00:00
2021-09-13 08:47:39 +00:00
Future<dynamic> showErrorDialog(
BuildContext context, String title, String content) {
2020-08-25 06:00:19 +00:00
AlertDialog alert = AlertDialog(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
title: Text(
title,
2022-05-16 20:38:11 +00:00
style: Theme.of(context).textTheme.headline2,
),
2020-08-25 06:00:19 +00:00
content: Text(content),
actions: [
TextButton(
2021-09-13 08:47:39 +00:00
child: Text(
"OK",
2021-09-13 08:47:39 +00:00
style: TextStyle(
2022-03-05 20:52:00 +00:00
color: Theme.of(context).colorScheme.onSurface,
2021-09-13 08:47:39 +00:00
),
),
2020-08-25 06:00:19 +00:00
onPressed: () {
2021-03-21 11:21:45 +00:00
Navigator.of(context, rootNavigator: true).pop('dialog');
2020-08-25 06:00:19 +00:00
},
),
],
);
return showDialog(
2020-08-25 06:00:19 +00:00
context: context,
builder: (BuildContext context) {
return BackdropFilter(
filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5),
child: alert,
);
2020-08-25 06:00:19 +00:00
},
barrierColor: Colors.black12,
2020-08-25 06:00:19 +00:00
);
}
Future<dynamic> showGenericErrorDialog(BuildContext context) {
return showErrorDialog(context, "something went wrong", "please try again.");
2020-08-25 06:00:19 +00:00
}
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: 1));
_confettiController.play();
return showDialog(
context: context,
builder: (BuildContext buildContext) {
return Stack(
children: [
pageBuilder,
Align(
alignment: confettiAlignment,
child: ConfettiWidget(
confettiController: _confettiController,
blastDirection: pi / 2,
emissionFrequency: 0,
numberOfParticles: 100, // a lot of particles at once
gravity: 1,
blastDirectionality: BlastDirectionality.explosive,
),
),
],
);
},
barrierDismissible: barrierDismissible,
barrierColor: barrierColor,
useSafeArea: useSafeArea,
useRootNavigator: useRootNavigator,
routeSettings: routeSettings,
);
}
2022-03-26 01:49:14 +00:00
Widget test() {
return Container(
width: 355,
height: 236,
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
width: 355,
height: 236,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
color: Color(0x4c000000),
),
padding: const EdgeInsets.only(
top: 20,
bottom: 16,
),
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SizedBox(
width: 234,
child: Text(
"Are you sure you want to logout?",
style: TextStyle(
color: Colors.white,
fontSize: 24,
fontFamily: "SF Pro Display",
fontWeight: FontWeight.w600,
),
),
),
SizedBox(height: 16),
Container(
width: 323,
height: 48,
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
width: 323,
height: 48,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
color: Color(0x4c000000),
),
padding: const EdgeInsets.only(
left: 135,
right: 136,
),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
"Cancel",
style: TextStyle(
color: Colors.white,
fontSize: 16,
fontFamily: "SF Pro Text",
fontWeight: FontWeight.w500,
),
),
],
),
),
],
),
),
SizedBox(height: 16),
Container(
width: 323,
height: 48,
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
width: 323,
height: 48,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
color: Colors.white,
),
padding: const EdgeInsets.symmetric(
horizontal: 120,
vertical: 12,
),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
"Yes Logout",
style: TextStyle(
color: Colors.black,
fontSize: 16,
fontFamily: "SF Pro Text",
fontWeight: FontWeight.w500,
),
),
],
),
),
],
),
),
],
),
),
],
),
);
}