64 lines
1.6 KiB
Dart
64 lines
1.6 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:fluttertoast/fluttertoast.dart';
|
|
|
|
enum ToastType { success, fail, info }
|
|
|
|
class Toast {
|
|
static FToast? fToast;
|
|
|
|
Toast(String s);
|
|
static removeToast() {
|
|
fToast?.removeCustomToast();
|
|
}
|
|
|
|
static removeAllQueuedToasts() {
|
|
fToast?.removeQueuedCustomToasts();
|
|
}
|
|
|
|
static init(BuildContext context) {
|
|
fToast = FToast();
|
|
fToast!.init(context);
|
|
}
|
|
|
|
static IconData generateIcon(ToastType type) {
|
|
switch (type) {
|
|
case ToastType.success:
|
|
return Icons.check;
|
|
case ToastType.fail:
|
|
return Icons.close;
|
|
case ToastType.info:
|
|
return Icons.info;
|
|
}
|
|
}
|
|
|
|
static showToast(ToastType type, String msg, BuildContext context) {
|
|
init(context);
|
|
fToast!.showToast(
|
|
child: Container(
|
|
padding: const EdgeInsets.symmetric(horizontal: 48.0, vertical: 24.0),
|
|
decoration: BoxDecoration(
|
|
borderRadius: BorderRadius.circular(12.0),
|
|
color: const Color(0xFF333333),
|
|
),
|
|
child: Column(
|
|
mainAxisSize: MainAxisSize.min,
|
|
children: [
|
|
Padding(
|
|
padding: const EdgeInsets.fromLTRB(0, 12.0, 0, 36.0),
|
|
child: Icon(generateIcon(type),
|
|
size: 64.0, color: Colors.white)),
|
|
Text(
|
|
msg,
|
|
style: const TextStyle(
|
|
color: Colors.white,
|
|
fontSize: 18,
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
gravity: ToastGravity.CENTER,
|
|
toastDuration: const Duration(seconds: 2));
|
|
}
|
|
}
|