Files
Zakaria 9eb6b5237c
Build / Build for Android (push) Has been cancelled
Build / Build for iOS (push) Has been cancelled
redesign app phase 3
2026-05-19 16:41:18 -04:00

52 lines
1.6 KiB
Dart

import 'package:chopper/chopper.dart';
import 'package:flutter/material.dart';
import 'package:finamp/l10n/app_localizations.dart';
/// Snackbar with error icon for displaying errors
void errorSnackbar(dynamic error, BuildContext context) {
WidgetsBinding.instance.addPostFrameCallback((_) {
if (!context.mounted) {
return;
}
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.anErrorHasOccured),
action: SnackBarAction(
label: MaterialLocalizations.of(context).moreButtonTooltip,
onPressed: () => showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text(AppLocalizations.of(context)!.error),
content: Text(_errorText(error, context)),
actions: [
TextButton(
onPressed: () => Navigator.of(context).pop(),
child:
Text(MaterialLocalizations.of(context).closeButtonLabel),
)
],
),
),
),
),
);
});
}
String _errorText(dynamic error, BuildContext context) {
if (error.runtimeType == Response) {
error = error as Response;
if (error.statusCode == 401) {
return AppLocalizations.of(context)!
.responseError401(error.error.toString(), error.statusCode);
} else {
return AppLocalizations.of(context)!
.responseError(error.error.toString(), error.statusCode);
}
} else {
return error.toString();
}
}