Files
apidash/lib/widgets/overlay_widget.dart

88 lines
2.0 KiB
Dart

import 'package:flutter/material.dart';
import 'package:lottie/lottie.dart';
import '../consts.dart';
class OverlayWidgetTemplate {
OverlayEntry? _overlay;
BuildContext context;
OverlayState? _overlayState;
OverlayWidgetTemplate({required this.context}) {
_overlayState = Overlay.of(context);
}
void show({required Widget widget}) {
if (_overlay == null) {
_overlay = OverlayEntry(
// replace with your own layout
builder: (context) => ColoredBox(
color: kColorBlack.withOpacity(kOverlayBackgroundOpacity),
child: widget),
);
_overlayState!.insert(_overlay!);
}
}
void hide() {
if (_overlay != null) {
_overlay?.remove();
_overlay = null;
}
}
}
class SavingOverlay extends StatelessWidget {
const SavingOverlay({super.key});
@override
Widget build(BuildContext context) {
return Center(
child: Card(
child: Padding(
padding: kPh60v60,
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Lottie.asset("assets/saving.json", width: 100, height: 100),
kHSpacer20,
const Text(
kLabelSaving,
style: TextStyle(
fontSize: kDefaultFontSize,
),
)
],
),
),
),
);
}
}
class CompletedOverlay extends StatelessWidget {
const CompletedOverlay({super.key});
@override
Widget build(BuildContext context) {
return Center(
child: Card(
child: Padding(
padding: kPh60v60,
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Lottie.asset("assets/completed.json",
width: 100, height: 100, repeat: false),
kHSpacer20,
const Text(
kLabelSaved,
style: TextStyle(fontSize: kDefaultFontSize),
)
],
),
),
),
);
}
}