mirror of
https://github.com/inventree/inventree-app.git
synced 2025-08-15 16:51:12 +00:00
Format code
This commit is contained in:
@@ -9,61 +9,58 @@ import "package:inventree/l10.dart";
|
||||
import "package:inventree/preferences.dart";
|
||||
import "package:inventree/widget/snacks.dart";
|
||||
|
||||
|
||||
/*
|
||||
* Launch a dialog allowing the user to select from a list of options
|
||||
*/
|
||||
Future<void> choiceDialog(String title, List<Widget> items, {Function? onSelected}) async {
|
||||
|
||||
Future<void> choiceDialog(String title, List<Widget> items,
|
||||
{Function? onSelected}) async {
|
||||
List<Widget> choices = [];
|
||||
|
||||
for (int idx = 0; idx < items.length; idx++) {
|
||||
choices.add(
|
||||
GestureDetector(
|
||||
child: items[idx],
|
||||
onTap: () {
|
||||
OneContext().popDialog();
|
||||
if (onSelected != null) {
|
||||
onSelected(idx);
|
||||
}
|
||||
},
|
||||
)
|
||||
);
|
||||
choices.add(GestureDetector(
|
||||
child: items[idx],
|
||||
onTap: () {
|
||||
OneContext().popDialog();
|
||||
if (onSelected != null) {
|
||||
onSelected(idx);
|
||||
}
|
||||
},
|
||||
));
|
||||
}
|
||||
|
||||
if (!hasContext()) {
|
||||
return;
|
||||
}
|
||||
|
||||
OneContext().showDialog(
|
||||
builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: Text(title),
|
||||
content: SingleChildScrollView(
|
||||
OneContext().showDialog(builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: Text(title),
|
||||
content: SingleChildScrollView(
|
||||
child: Column(
|
||||
children: choices,
|
||||
)
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
child: Text(L10().cancel),
|
||||
onPressed: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
)
|
||||
],
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
children: choices,
|
||||
)),
|
||||
actions: [
|
||||
TextButton(
|
||||
child: Text(L10().cancel),
|
||||
onPressed: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
)
|
||||
],
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Display a "confirmation" dialog allowing the user to accept or reject an action
|
||||
*/
|
||||
Future<void> confirmationDialog(String title, String text, {Color? color, IconData icon = TablerIcons.help_circle, String? acceptText, String? rejectText, Function? onAccept, Function? onReject}) async {
|
||||
|
||||
Future<void> confirmationDialog(String title, String text,
|
||||
{Color? color,
|
||||
IconData icon = TablerIcons.help_circle,
|
||||
String? acceptText,
|
||||
String? rejectText,
|
||||
Function? onAccept,
|
||||
Function? onReject}) async {
|
||||
String _accept = acceptText ?? L10().ok;
|
||||
String _reject = rejectText ?? L10().cancel;
|
||||
|
||||
@@ -71,9 +68,8 @@ Future<void> confirmationDialog(String title, String text, {Color? color, IconDa
|
||||
return;
|
||||
}
|
||||
|
||||
OneContext().showDialog(
|
||||
builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
OneContext().showDialog(builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
iconColor: color,
|
||||
title: ListTile(
|
||||
title: Text(title, style: TextStyle(color: color)),
|
||||
@@ -82,16 +78,15 @@ Future<void> confirmationDialog(String title, String text, {Color? color, IconDa
|
||||
content: text.isEmpty ? Text(text) : null,
|
||||
actions: [
|
||||
TextButton(
|
||||
child: Text(_reject),
|
||||
onPressed: () {
|
||||
// Close this dialog
|
||||
Navigator.pop(context);
|
||||
child: Text(_reject),
|
||||
onPressed: () {
|
||||
// Close this dialog
|
||||
Navigator.pop(context);
|
||||
|
||||
if (onReject != null) {
|
||||
onReject();
|
||||
}
|
||||
}
|
||||
),
|
||||
if (onReject != null) {
|
||||
onReject();
|
||||
}
|
||||
}),
|
||||
TextButton(
|
||||
child: Text(_accept),
|
||||
onPressed: () {
|
||||
@@ -103,13 +98,10 @@ Future<void> confirmationDialog(String title, String text, {Color? color, IconDa
|
||||
}
|
||||
},
|
||||
)
|
||||
]
|
||||
);
|
||||
}
|
||||
);
|
||||
]);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Construct an error dialog showing information to the user
|
||||
*
|
||||
@@ -117,68 +109,56 @@ Future<void> confirmationDialog(String title, String text, {Color? color, IconDa
|
||||
* @description = Simple string description of error
|
||||
* @data = Error response (e.g from server)
|
||||
*/
|
||||
Future<void> showErrorDialog(String title, {String description = "", APIResponse? response, IconData icon = TablerIcons.exclamation_circle, Function? onDismissed}) async {
|
||||
|
||||
Future<void> showErrorDialog(String title,
|
||||
{String description = "",
|
||||
APIResponse? response,
|
||||
IconData icon = TablerIcons.exclamation_circle,
|
||||
Function? onDismissed}) async {
|
||||
List<Widget> children = [];
|
||||
|
||||
if (description.isNotEmpty) {
|
||||
children.add(
|
||||
ListTile(
|
||||
title: Text(description),
|
||||
)
|
||||
);
|
||||
children.add(ListTile(
|
||||
title: Text(description),
|
||||
));
|
||||
} else if (response != null) {
|
||||
// Look for extra error information in the provided APIResponse object
|
||||
switch (response.statusCode) {
|
||||
case 400: // Bad request (typically bad input)
|
||||
case 400: // Bad request (typically bad input)
|
||||
if (response.data is Map<String, dynamic>) {
|
||||
|
||||
for (String field in response.asMap().keys) {
|
||||
|
||||
dynamic error = response.data[field];
|
||||
|
||||
if (error is List) {
|
||||
for (int ii = 0; ii < error.length; ii++) {
|
||||
children.add(
|
||||
ListTile(
|
||||
title: Text(field),
|
||||
subtitle: Text(error[ii].toString()),
|
||||
)
|
||||
);
|
||||
children.add(ListTile(
|
||||
title: Text(field),
|
||||
subtitle: Text(error[ii].toString()),
|
||||
));
|
||||
}
|
||||
} else {
|
||||
children.add(
|
||||
ListTile(
|
||||
title: Text(field),
|
||||
subtitle: Text(response.data[field].toString()),
|
||||
)
|
||||
);
|
||||
children.add(ListTile(
|
||||
title: Text(field),
|
||||
subtitle: Text(response.data[field].toString()),
|
||||
));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
children.add(
|
||||
ListTile(
|
||||
children.add(ListTile(
|
||||
title: Text(L10().responseInvalid),
|
||||
subtitle: Text(response.data.toString())
|
||||
)
|
||||
);
|
||||
subtitle: Text(response.data.toString())));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
// Unhandled server response
|
||||
children.add(
|
||||
ListTile(
|
||||
title: Text(L10().statusCode),
|
||||
subtitle: Text(response.statusCode.toString()),
|
||||
)
|
||||
);
|
||||
children.add(ListTile(
|
||||
title: Text(L10().statusCode),
|
||||
subtitle: Text(response.statusCode.toString()),
|
||||
));
|
||||
|
||||
children.add(
|
||||
ListTile(
|
||||
title: Text(L10().responseData),
|
||||
subtitle: Text(response.data.toString()),
|
||||
)
|
||||
);
|
||||
children.add(ListTile(
|
||||
title: Text(L10().responseData),
|
||||
subtitle: Text(response.data.toString()),
|
||||
));
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -188,15 +168,15 @@ Future<void> showErrorDialog(String title, {String description = "", APIResponse
|
||||
return;
|
||||
}
|
||||
|
||||
OneContext().showDialog(
|
||||
builder: (context) => SimpleDialog(
|
||||
title: ListTile(
|
||||
title: Text(title),
|
||||
leading: Icon(icon),
|
||||
),
|
||||
children: children
|
||||
)
|
||||
).then((value) {
|
||||
OneContext()
|
||||
.showDialog(
|
||||
builder: (context) => SimpleDialog(
|
||||
title: ListTile(
|
||||
title: Text(title),
|
||||
leading: Icon(icon),
|
||||
),
|
||||
children: children))
|
||||
.then((value) {
|
||||
if (onDismissed != null) {
|
||||
onDismissed();
|
||||
}
|
||||
@@ -206,8 +186,8 @@ Future<void> showErrorDialog(String title, {String description = "", APIResponse
|
||||
/*
|
||||
* Display a message indicating the nature of a server / API error
|
||||
*/
|
||||
Future<void> showServerError(String url, String title, String description) async {
|
||||
|
||||
Future<void> showServerError(
|
||||
String url, String title, String description) async {
|
||||
if (!hasContext()) {
|
||||
return;
|
||||
}
|
||||
@@ -222,7 +202,8 @@ Future<void> showServerError(String url, String title, String description) async
|
||||
}
|
||||
|
||||
// Play a sound
|
||||
final bool tones = await InvenTreeSettingsManager().getValue(INV_SOUNDS_SERVER, true) as bool;
|
||||
final bool tones = await InvenTreeSettingsManager()
|
||||
.getValue(INV_SOUNDS_SERVER, true) as bool;
|
||||
|
||||
if (tones) {
|
||||
playAudioFile("sounds/server_error.mp3");
|
||||
@@ -230,25 +211,16 @@ Future<void> showServerError(String url, String title, String description) async
|
||||
|
||||
description += "\nURL: $url";
|
||||
|
||||
showSnackIcon(
|
||||
title,
|
||||
success: false,
|
||||
actionText: L10().details,
|
||||
onAction: () {
|
||||
showErrorDialog(
|
||||
title,
|
||||
description: description,
|
||||
icon: TablerIcons.server
|
||||
);
|
||||
}
|
||||
);
|
||||
showSnackIcon(title, success: false, actionText: L10().details, onAction: () {
|
||||
showErrorDialog(title, description: description, icon: TablerIcons.server);
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* Displays an error indicating that the server returned an unexpected status code
|
||||
*/
|
||||
Future<void> showStatusCodeError(String url, int status, {String details=""}) async {
|
||||
|
||||
Future<void> showStatusCodeError(String url, int status,
|
||||
{String details = ""}) async {
|
||||
String msg = statusCodeToString(status);
|
||||
String extra = url + "\n" + "${L10().statusCode}: ${status}";
|
||||
|
||||
@@ -264,7 +236,6 @@ Future<void> showStatusCodeError(String url, int status, {String details=""}) as
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Provide a human-readable descriptor for a particular error code
|
||||
*/
|
||||
@@ -299,7 +270,6 @@ String statusCodeToString(int status) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Displays a message indicating that the server timed out on a certain request
|
||||
*/
|
||||
|
Reference in New Issue
Block a user