2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-04-27 21:16:48 +00:00

Improvements for dark mode (#322)

* Action colors are now determined based on theme

* Fix unused import

* Update some more colors based on theme

* Updated release notes

* Better color choice

* Update for home screen

* Updates for app drawer

* remove unused import
This commit is contained in:
Oliver 2023-04-18 23:07:24 +10:00 committed by GitHub
parent d926686a89
commit 612db9f194
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 69 additions and 92 deletions

View File

@ -6,6 +6,7 @@
- Bug fix for stock history widget
- Improved display of stock history widget
- Theme improvements for dark mode
### 0.11.3 - April 2023
---

View File

@ -1,16 +1,21 @@
import "dart:ui";
import "package:flutter/material.dart";
import "package:one_context/one_context.dart";
const Color COLOR_GRAY_LIGHT = Color.fromRGBO(150, 150, 150, 1);
const Color COLOR_CLICK = Color.fromRGBO(150, 120, 100, 0.9);
// Return an "action" color based on the current theme
Color get COLOR_ACTION {
const Color COLOR_BLUE = Color.fromRGBO(0, 0, 250, 1);
BuildContext? context = OneContext().context;
const Color COLOR_STAR = Color.fromRGBO(250, 250, 100, 1);
if (context != null) {
return Theme.of(context).indicatorColor;
} else {
return Colors.lightBlue;
}
}
const Color COLOR_WARNING = Color.fromRGBO(250, 150, 50, 1);
const Color COLOR_DANGER = Color.fromRGBO(250, 50, 50, 1);
const Color COLOR_SUCCESS = Color.fromRGBO(50, 250, 50, 1);
const Color COLOR_PROGRESS = Color.fromRGBO(50, 50, 250, 1);
const Color COLOR_SELECTED = Color.fromRGBO(0, 0, 0, 0.05);
const Color COLOR_PROGRESS = Color.fromRGBO(50, 50, 250, 1);

View File

@ -165,7 +165,7 @@ class InvenTreeAboutWidget extends StatelessWidget {
ListTile(
title: Text(L10().releaseNotes),
subtitle: Text(L10().appReleaseNotes),
leading: FaIcon(FontAwesomeIcons.fileLines, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.fileLines, color: COLOR_ACTION),
onTap: () {
_releaseNotes(context);
},
@ -176,7 +176,7 @@ class InvenTreeAboutWidget extends StatelessWidget {
ListTile(
title: Text(L10().credits),
subtitle: Text(L10().appCredits),
leading: FaIcon(FontAwesomeIcons.bullhorn, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.bullhorn, color: COLOR_ACTION),
onTap: () {
_credits(context);
}
@ -187,7 +187,7 @@ class InvenTreeAboutWidget extends StatelessWidget {
ListTile(
title: Text(L10().documentation),
subtitle: Text("https://docs.inventree.org"),
leading: FaIcon(FontAwesomeIcons.book, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.book, color: COLOR_ACTION),
onTap: () {
_openDocs();
},
@ -198,7 +198,7 @@ class InvenTreeAboutWidget extends StatelessWidget {
ListTile(
title: Text(L10().translate),
subtitle: Text(L10().translateHelp),
leading: FaIcon(FontAwesomeIcons.language, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.language, color: COLOR_ACTION),
onTap: () {
_translate();
}
@ -209,7 +209,7 @@ class InvenTreeAboutWidget extends StatelessWidget {
ListTile(
title: Text(L10().reportBug),
subtitle: Text(L10().reportBugDescription),
leading: FaIcon(FontAwesomeIcons.bug, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.bug, color: COLOR_ACTION),
onTap: () {
_reportBug(context);
},

View File

@ -137,7 +137,7 @@ class _InvenTreeLoginSettingsState extends State<InvenTreeLoginSettingsWidget> {
title: Text(
profile.name,
),
tileColor: profile.selected ? COLOR_SELECTED : null,
tileColor: profile.selected ? Theme.of(context).secondaryHeaderColor : null,
subtitle: Text("${profile.server}"),
trailing: _getProfileIcon(profile),
onTap: () {

View File

@ -47,7 +47,7 @@ class _InvenTreeSettingsState extends State<InvenTreeSettingsWidget> {
ListTile(
title: Text(L10().server),
subtitle: Text(L10().configureServer),
leading: FaIcon(FontAwesomeIcons.server, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.server, color: COLOR_ACTION),
onTap: () {
Navigator.push(context, MaterialPageRoute(builder: (context) => InvenTreeLoginSettingsWidget()));
},
@ -55,7 +55,7 @@ class _InvenTreeSettingsState extends State<InvenTreeSettingsWidget> {
ListTile(
title: Text(L10().appSettings),
subtitle: Text(L10().appSettingsDetails),
leading: FaIcon(FontAwesomeIcons.gears, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.gears, color: COLOR_ACTION),
onTap: () {
Navigator.push(context, MaterialPageRoute(builder: (context) => InvenTreeAppSettingsWidget()));
}
@ -63,7 +63,7 @@ class _InvenTreeSettingsState extends State<InvenTreeSettingsWidget> {
ListTile(
title: Text(L10().homeScreen),
subtitle: Text(L10().homeScreenSettings),
leading: FaIcon(FontAwesomeIcons.house, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.house, color: COLOR_ACTION),
onTap: () {
Navigator.push(context, MaterialPageRoute(builder: (context) => HomeScreenSettingsWidget()));
}
@ -71,7 +71,7 @@ class _InvenTreeSettingsState extends State<InvenTreeSettingsWidget> {
ListTile(
title: Text(L10().part),
subtitle: Text(L10().partSettings),
leading: FaIcon(FontAwesomeIcons.shapes, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.shapes, color: COLOR_ACTION),
onTap: () {
Navigator.push(context, MaterialPageRoute(builder: (context) => InvenTreePartSettingsWidget()));
}
@ -79,7 +79,7 @@ class _InvenTreeSettingsState extends State<InvenTreeSettingsWidget> {
Divider(),
ListTile(
title: Text(L10().about),
leading: FaIcon(FontAwesomeIcons.circleInfo),
leading: FaIcon(FontAwesomeIcons.circleInfo, color: COLOR_ACTION),
onTap: _about,
)
]

View File

@ -170,7 +170,7 @@ class _AttachmentWidgetState extends RefreshableState<AttachmentWidget> {
tiles.add(ListTile(
title: Text(attachment.filename),
subtitle: Text(attachment.comment),
leading: FaIcon(attachment.icon, color: COLOR_CLICK),
leading: FaIcon(attachment.icon, color: COLOR_ACTION),
onTap: () async {
showLoadingOverlay(context);
await attachment.downloadAttachment();
@ -186,7 +186,7 @@ class _AttachmentWidgetState extends RefreshableState<AttachmentWidget> {
tiles.add(ListTile(
title: Text(attachment.link),
subtitle: Text(attachment.comment),
leading: FaIcon(FontAwesomeIcons.link, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.link, color: COLOR_ACTION),
onTap: () async {
var uri = Uri.tryParse(attachment.link.trimLeft());
if (uri != null && await canLaunchUrl(uri)) {

View File

@ -151,7 +151,7 @@ class _CategoryDisplayState extends RefreshableState<CategoryDisplayWidget> {
subtitle: Text("${widget.category?.parentPathString}"),
leading: FaIcon(
FontAwesomeIcons.turnUp,
color: COLOR_CLICK,
color: COLOR_ACTION,
),
onTap: () async {

View File

@ -149,7 +149,7 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
if (widget.company.website.isNotEmpty) {
tiles.add(ListTile(
title: Text("${widget.company.website}"),
leading: FaIcon(FontAwesomeIcons.globe, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.globe, color: COLOR_ACTION),
onTap: () async {
openLink(widget.company.website);
},
@ -161,7 +161,7 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
if (widget.company.email.isNotEmpty) {
tiles.add(ListTile(
title: Text("${widget.company.email}"),
leading: FaIcon(FontAwesomeIcons.at, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.at, color: COLOR_ACTION),
onTap: () async {
openLink("mailto:${widget.company.email}");
},
@ -173,7 +173,7 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
if (widget.company.phone.isNotEmpty) {
tiles.add(ListTile(
title: Text("${widget.company.phone}"),
leading: FaIcon(FontAwesomeIcons.phone, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.phone, color: COLOR_ACTION),
onTap: () {
openLink("tel:${widget.company.phone}");
},
@ -186,7 +186,7 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
if (widget.company.link.isNotEmpty) {
tiles.add(ListTile(
title: Text("${widget.company.link}"),
leading: FaIcon(FontAwesomeIcons.link, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.link, color: COLOR_ACTION),
onTap: () {
widget.company.openLink();
},
@ -205,7 +205,7 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
tiles.add(
ListTile(
title: Text(L10().supplierParts),
leading: FaIcon(FontAwesomeIcons.building, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.building, color: COLOR_ACTION),
trailing: Text(supplierPartCount.toString()),
onTap: () {
Navigator.push(
@ -224,7 +224,7 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
tiles.add(
ListTile(
title: Text(L10().purchaseOrders),
leading: FaIcon(FontAwesomeIcons.cartShopping, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.cartShopping, color: COLOR_ACTION),
trailing: Text("${outstandingOrders.length}"),
onTap: () {
Navigator.push(
@ -272,7 +272,7 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
if (api.supportCompanyAttachments) {
tiles.add(ListTile(
title: Text(L10().attachments),
leading: FaIcon(FontAwesomeIcons.fileLines, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.fileLines, color: COLOR_ACTION),
trailing: attachmentCount > 0 ? Text(attachmentCount.toString()) : null,
onTap: () {
Navigator.push(

View File

@ -2,6 +2,7 @@ import "package:flutter/material.dart";
import "package:font_awesome_flutter/font_awesome_flutter.dart";
import "package:inventree/api.dart";
import "package:inventree/app_colors.dart";
import "package:inventree/l10.dart";
import "package:inventree/settings/settings.dart";
import "package:inventree/widget/category_display.dart";
@ -84,7 +85,7 @@ class InvenTreeDrawer extends StatelessWidget {
// "Home" access
tiles.add(ListTile(
leading: FaIcon(FontAwesomeIcons.house),
leading: FaIcon(FontAwesomeIcons.house, color: COLOR_ACTION),
title: Text(
L10().appTitle,
style: TextStyle(fontWeight: FontWeight.bold),
@ -98,7 +99,7 @@ class InvenTreeDrawer extends StatelessWidget {
tiles.add(
ListTile(
title: Text(L10().parts),
leading: FaIcon(FontAwesomeIcons.shapes),
leading: FaIcon(FontAwesomeIcons.shapes, color: COLOR_ACTION),
onTap: _parts,
)
);
@ -108,7 +109,7 @@ class InvenTreeDrawer extends StatelessWidget {
tiles.add(
ListTile(
title: Text(L10().stock),
leading: FaIcon(FontAwesomeIcons.boxesStacked),
leading: FaIcon(FontAwesomeIcons.boxesStacked, color: COLOR_ACTION),
onTap: _stock,
)
);
@ -118,7 +119,7 @@ class InvenTreeDrawer extends StatelessWidget {
tiles.add(
ListTile(
title: Text(L10().purchaseOrders),
leading: FaIcon(FontAwesomeIcons.cartShopping),
leading: FaIcon(FontAwesomeIcons.cartShopping, color: COLOR_ACTION),
onTap: _purchaseOrders,
)
);
@ -133,7 +134,7 @@ class InvenTreeDrawer extends StatelessWidget {
tiles.add(
ListTile(
leading: FaIcon(FontAwesomeIcons.bell),
leading: FaIcon(FontAwesomeIcons.bell, color: COLOR_ACTION),
trailing: notification_count > 0 ? Text(notification_count.toString()) : null,
title: Text(L10().notifications),
onTap: _notifications,
@ -144,7 +145,7 @@ class InvenTreeDrawer extends StatelessWidget {
tiles.add(
ListTile(
title: Text(L10().settings),
leading: Icon(Icons.settings),
leading: Icon(Icons.settings, color: COLOR_ACTION),
onTap: _settings,
)
);

View File

@ -7,10 +7,8 @@ import "package:font_awesome_flutter/font_awesome_flutter.dart";
import "package:inventree/api.dart";
import "package:inventree/app_colors.dart";
import "package:inventree/preferences.dart";
import "package:inventree/barcode.dart";
import "package:inventree/l10.dart";
import "package:inventree/settings/login.dart";
import "package:inventree/settings/settings.dart";
import "package:inventree/user_profile.dart";
import "package:inventree/widget/category_display.dart";
@ -63,22 +61,12 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage> with BaseWidgetPr
// Selected user profile
UserProfile? _profile;
void _scan(BuildContext context) {
if (!InvenTreeAPI().checkConnection()) return;
scanQrCode(context);
}
void _showParts(BuildContext context) {
if (!InvenTreeAPI().checkConnection()) return;
Navigator.push(context, MaterialPageRoute(builder: (context) => CategoryDisplayWidget(null)));
}
void _showSettings(BuildContext context) {
Navigator.push(context, MaterialPageRoute(builder: (context) => InvenTreeSettingsWidget()));
}
void _showStarredParts(BuildContext context) {
if (!InvenTreeAPI().checkConnection()) return;
@ -187,7 +175,7 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage> with BaseWidgetPr
horizontal: 12
),
child: ListTile(
leading: FaIcon(icon, color: connected && allowed ? COLOR_CLICK : Colors.grey),
leading: FaIcon(icon, color: connected && allowed ? COLOR_ACTION : Colors.grey),
title: Text(label),
trailing: trailing,
),
@ -217,17 +205,9 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage> with BaseWidgetPr
*/
List<Widget> getListTiles(BuildContext context) {
List<Widget> tiles = [];
// Barcode scanner
tiles.add(_listTile(
context,
L10().scanBarcode,
Icons.qr_code_scanner,
callback: () {
_scan(context);
}
));
List<Widget> tiles = [
Divider(height: 5)
];
// Parts
tiles.add(_listTile(
@ -314,16 +294,6 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage> with BaseWidgetPr
}
*/
// Settings
tiles.add(_listTile(
context,
L10().settings,
FontAwesomeIcons.gears,
callback: () {
_showSettings(context);
}
));
return tiles;
}
@ -338,7 +308,7 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage> with BaseWidgetPr
bool connecting = !InvenTreeAPI().isConnected() && InvenTreeAPI().isConnecting();
Widget leading = FaIcon(FontAwesomeIcons.circleExclamation, color: COLOR_DANGER);
Widget trailing = FaIcon(FontAwesomeIcons.server, color: COLOR_CLICK);
Widget trailing = FaIcon(FontAwesomeIcons.server, color: COLOR_ACTION);
String title = L10().serverNotConnected;
String subtitle = L10().profileSelectOrCreate;

View File

@ -295,7 +295,7 @@ class _LocationDisplayState extends RefreshableState<LocationDisplayWidget> {
ListTile(
title: Text(L10().parentLocation),
subtitle: Text("${location!.parentPathString}"),
leading: FaIcon(FontAwesomeIcons.turnUp, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.turnUp, color: COLOR_ACTION),
onTap: () async {
int parentId = location?.parentId ?? -1;

View File

@ -410,7 +410,7 @@ abstract class PaginatedSearchState<T extends PaginatedSearchWidget> extends Sta
Widget buildSearchInput(BuildContext context) {
return ListTile(
trailing: orderingOptions.isEmpty ? null : GestureDetector(
child: FaIcon(FontAwesomeIcons.sort, color: COLOR_CLICK),
child: FaIcon(FontAwesomeIcons.sort, color: COLOR_ACTION),
onTap: () async {
_saveOrderingOptions(context);
},

View File

@ -261,7 +261,7 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
subtitle: Text("${part.description}"),
trailing: IconButton(
icon: FaIcon(part.starred ? FontAwesomeIcons.solidStar : FontAwesomeIcons.star,
color: part.starred ? COLOR_STAR : null,
color: part.starred ? Colors.yellowAccent : null,
),
onPressed: () {
_toggleStar(context);
@ -349,7 +349,7 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
ListTile(
title: Text(L10().partCategory),
subtitle: Text("${part.categoryName}"),
leading: FaIcon(FontAwesomeIcons.sitemap, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.sitemap, color: COLOR_ACTION),
onTap: () async {
if (part.categoryId > 0) {
@ -370,7 +370,7 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
ListTile(
title: Text(L10().partCategory),
subtitle: Text(L10().partCategoryTopLevel),
leading: FaIcon(FontAwesomeIcons.sitemap, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.sitemap, color: COLOR_ACTION),
onTap: () {
Navigator.push(context, MaterialPageRoute(
builder: (context) => CategoryDisplayWidget(null)));
@ -384,7 +384,7 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
tiles.add(
ListTile(
title: Text(L10().variants),
leading: FaIcon(FontAwesomeIcons.shapes, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.shapes, color: COLOR_ACTION),
trailing: Text(variantCount.toString()),
onTap: () {
Navigator.push(
@ -442,7 +442,7 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
tiles.add(
ListTile(
title: Text(L10().billOfMaterials),
leading: FaIcon(FontAwesomeIcons.tableList, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.tableList, color: COLOR_ACTION),
trailing: Text(bomCount.toString()),
)
);
@ -468,7 +468,7 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
ListTile(
title: Text(L10().usedIn),
subtitle: Text(L10().usedInDetails),
leading: FaIcon(FontAwesomeIcons.layerGroup, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.layerGroup, color: COLOR_ACTION),
trailing: Text(usedInCount.toString()),
onTap: () {
Navigator.push(
@ -498,7 +498,7 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
tiles.add(
ListTile(
title: Text("${part.link}"),
leading: FaIcon(FontAwesomeIcons.link, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.link, color: COLOR_ACTION),
onTap: () {
part.openLink();
},
@ -528,7 +528,7 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
tiles.add(
ListTile(
title: Text(L10().suppliers),
leading: FaIcon(FontAwesomeIcons.industry, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.industry, color: COLOR_ACTION),
trailing: Text("${part.supplierCount}"),
onTap: () {
Navigator.push(
@ -547,7 +547,7 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
tiles.add(
ListTile(
title: Text(L10().notes),
leading: FaIcon(FontAwesomeIcons.noteSticky, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.noteSticky, color: COLOR_ACTION),
trailing: Text(""),
onTap: () {
Navigator.push(
@ -561,7 +561,7 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
tiles.add(
ListTile(
title: Text(L10().attachments),
leading: FaIcon(FontAwesomeIcons.fileLines, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.fileLines, color: COLOR_ACTION),
trailing: attachmentCount > 0 ? Text(attachmentCount.toString()) : null,
onTap: () {
Navigator.push(

View File

@ -205,7 +205,7 @@ class _PurchaseOrderDetailState extends RefreshableState<PurchaseOrderDetailWidg
tiles.add(ListTile(
title: Text(L10().supplier),
subtitle: Text(supplier.name),
leading: FaIcon(FontAwesomeIcons.building, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.building, color: COLOR_ACTION),
onTap: () {
Navigator.push(
context,
@ -259,7 +259,7 @@ class _PurchaseOrderDetailState extends RefreshableState<PurchaseOrderDetailWidg
tiles.add(
ListTile(
title: Text(L10().attachments),
leading: FaIcon(FontAwesomeIcons.fileLines, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.fileLines, color: COLOR_ACTION),
trailing: attachmentCount > 0 ? Text(attachmentCount.toString()) : null,
onTap: () {
Navigator.push(

View File

@ -358,7 +358,7 @@ class _SearchDisplayState extends RefreshableState<SearchWidget> {
trailing: GestureDetector(
child: FaIcon(
searchController.text.isEmpty ? FontAwesomeIcons.magnifyingGlass : FontAwesomeIcons.deleteLeft,
color: searchController.text.isEmpty ? COLOR_CLICK : COLOR_DANGER,
color: searchController.text.isEmpty ? COLOR_ACTION : COLOR_DANGER,
),
onTap: () {
searchController.clear();

View File

@ -633,7 +633,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
subtitle: Text("${widget.item.locationPathString}"),
leading: FaIcon(
FontAwesomeIcons.locationDot,
color: COLOR_CLICK,
color: COLOR_ACTION,
),
onTap: () async {
if (widget.item.locationId > 0) {
@ -666,7 +666,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
ListTile(
title: Text(L10().supplierPart),
subtitle: Text(widget.item.supplierSKU),
leading: FaIcon(FontAwesomeIcons.building, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.building, color: COLOR_ACTION),
trailing: InvenTreeAPI().getImage(
widget.item.supplierImage,
width: 40,
@ -748,7 +748,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
tiles.add(
ListTile(
title: Text("${widget.item.link}"),
leading: FaIcon(FontAwesomeIcons.link, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.link, color: COLOR_ACTION),
onTap: () {
widget.item.openLink();
},
@ -760,7 +760,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
tiles.add(
ListTile(
title: Text(L10().testResults),
leading: FaIcon(FontAwesomeIcons.listCheck, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.listCheck, color: COLOR_ACTION),
trailing: Text("${widget.item.testResultCount}"),
onTap: () {
Navigator.push(
@ -793,7 +793,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
tiles.add(
ListTile(
title: Text(L10().history),
leading: FaIcon(FontAwesomeIcons.clockRotateLeft, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.clockRotateLeft, color: COLOR_ACTION),
trailing: Text("${widget.item.trackingItemCount}"),
onTap: () {
Navigator.push(
@ -812,7 +812,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
tiles.add(
ListTile(
title: Text(L10().notes),
leading: FaIcon(FontAwesomeIcons.noteSticky, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.noteSticky, color: COLOR_ACTION),
onTap: () {
Navigator.push(
context,
@ -825,7 +825,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
tiles.add(
ListTile(
title: Text(L10().attachments),
leading: FaIcon(FontAwesomeIcons.fileLines, color: COLOR_CLICK),
leading: FaIcon(FontAwesomeIcons.fileLines, color: COLOR_ACTION),
trailing: attachmentCount > 0 ? Text(attachmentCount.toString()) : null,
onTap: () {
Navigator.push(

View File

@ -158,7 +158,7 @@ class _StockItemTestResultDisplayState extends RefreshableState<StockItemTestRes
String _value = "";
String _notes = "";
FaIcon _icon = FaIcon(FontAwesomeIcons.circleQuestion, color: COLOR_BLUE);
FaIcon _icon = FaIcon(FontAwesomeIcons.circleQuestion, color: Colors.lightBlue);
bool _valueRequired = false;
bool _attachmentRequired = false;