UI updates (#849)

* Updated dashboard

- Display "outstanding" badges
- Display "overdue" badges
- Pull-to-refresh

* Remove dead code

* Refactor app colors

* Add "pending shipments" icon

* Remove custom spinner

* Refactor error dialog

* Updated redirect after login

* Refactor login/account pages

- Better UX and confirmation messages

* Refactor API error messages

* Improve token management

- Secure storage
- Handle session expiry
- Per-profile HTTPS certificate checks

* Improved error messages
This commit is contained in:
Oliver
2026-07-06 21:10:10 +10:00
committed by GitHub
parent f737172180
commit 349a8e0ef5
45 changed files with 1240 additions and 477 deletions
+5 -5
View File
@@ -94,7 +94,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
if (!widget.item.isSerialized()) {
actions.add(
SpeedDialChild(
child: Icon(TablerIcons.circle_check, color: Colors.blue),
child: Icon(TablerIcons.circle_check, color: COLOR_ACTION),
label: L10().countStock,
onTap: _countStockDialog,
),
@@ -102,7 +102,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
actions.add(
SpeedDialChild(
child: Icon(TablerIcons.circle_minus, color: Colors.red),
child: Icon(TablerIcons.circle_minus, color: COLOR_DANGER),
label: L10().removeStock,
onTap: _removeStockDialog,
),
@@ -110,7 +110,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
actions.add(
SpeedDialChild(
child: Icon(TablerIcons.circle_plus, color: Colors.green),
child: Icon(TablerIcons.circle_plus, color: COLOR_SUCCESS),
label: L10().addStock,
onTap: _addStockDialog,
),
@@ -144,7 +144,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
if (widget.item.canDelete) {
actions.add(
SpeedDialChild(
child: Icon(TablerIcons.trash, color: Colors.red),
child: Icon(TablerIcons.trash, color: COLOR_DANGER),
label: L10().stockItemDelete,
onTap: () {
_deleteItem(context);
@@ -322,7 +322,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
L10().stockItemDelete,
L10().stockItemDeleteConfirm,
icon: TablerIcons.trash,
color: Colors.red,
color: COLOR_DANGER,
acceptText: L10().delete,
onAccept: () async {
final bool result = await widget.item.delete();
@@ -189,7 +189,7 @@ class _StockItemTestResultDisplayState
String _value = "";
String _date = "";
Widget _icon = Icon(TablerIcons.help_circle, color: Colors.lightBlue);
Widget _icon = Icon(TablerIcons.help_circle, color: COLOR_GRAY_LIGHT);
bool _valueRequired = false;
bool _attachmentRequired = false;
@@ -214,7 +214,7 @@ class _StockItemTestResultDisplayState
}
if (!_hasResult) {
_icon = Icon(TablerIcons.help_circle, color: Colors.blue);
_icon = Icon(TablerIcons.help_circle, color: COLOR_GRAY_LIGHT);
} else if (_result == true) {
_icon = Icon(TablerIcons.circle_check, color: COLOR_SUCCESS);
} else if (_result == false) {