mirror of
https://github.com/immich-app/immich.git
synced 2024-11-20 04:18:48 -07:00
42 lines
1.1 KiB
Dart
42 lines
1.1 KiB
Dart
|
import 'package:flutter/material.dart';
|
||
|
import 'package:immich_mobile/shared/ui/immich_loading_indicator.dart';
|
||
|
|
||
|
class ImmichLoadingOverlay extends StatelessWidget {
|
||
|
const ImmichLoadingOverlay({
|
||
|
Key? key,
|
||
|
}) : super(key: key);
|
||
|
|
||
|
@override
|
||
|
Widget build(BuildContext context) {
|
||
|
return ValueListenableBuilder<bool>(
|
||
|
valueListenable: ImmichLoadingOverlayController.appLoader.loaderShowingNotifier,
|
||
|
builder: (context, shouldShow, child) {
|
||
|
if (shouldShow) {
|
||
|
return const Scaffold(
|
||
|
backgroundColor: Colors.black54,
|
||
|
body: Center(
|
||
|
child: ImmichLoadingIndicator(),
|
||
|
),
|
||
|
);
|
||
|
} else {
|
||
|
return Container();
|
||
|
}
|
||
|
},
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class ImmichLoadingOverlayController {
|
||
|
static final ImmichLoadingOverlayController appLoader = ImmichLoadingOverlayController();
|
||
|
ValueNotifier<bool> loaderShowingNotifier = ValueNotifier(false);
|
||
|
ValueNotifier<String> loaderTextNotifier = ValueNotifier('error message');
|
||
|
|
||
|
void show() {
|
||
|
loaderShowingNotifier.value = true;
|
||
|
}
|
||
|
|
||
|
void hide() {
|
||
|
loaderShowingNotifier.value = false;
|
||
|
}
|
||
|
}
|