dynamic
build(- dynamic context
)
Implementation
@override
Widget build(BuildContext context) {
final AppLocalizations appLocalizations = AppLocalizations.of(context);
final ThemeData themeData = Theme.of(context);
final String subtitleText;
final Widget trailingWidget;
final String brands = product.brands ?? appLocalizations.unknownBrand;
final String quantity = product.quantity ?? '';
if (isRemovable && !isSelectable) {
final ContinuousScanModel model = context.watch<ContinuousScanModel>();
subtitleText = '$brands${quantity == '' ? '' : ', $quantity'}';
trailingWidget = InkWell(
onTap: () async => model.removeBarcode(product.barcode!),
child: const Icon(
Icons.clear_rounded,
size: MINIMUM_TOUCH_SIZE,
),
);
} else {
subtitleText = brands;
trailingWidget = Text(
quantity,
style: themeData.textTheme.headline3,
).selectable(isSelectable: isSelectable);
}
return Align(
alignment: Alignment.topLeft,
child: InkWell(
onTap: () async {
if (getProductName(product, appLocalizations) ==
appLocalizations.unknownProductName) {
await Navigator.push<bool>(
context,
MaterialPageRoute<bool>(
builder: (BuildContext context) => AddBasicDetailsPage(product),
),
);
}
},
child: ListTile(
dense: dense,
contentPadding: EdgeInsets.zero,
title: Text(
getProductName(product, appLocalizations),
style: themeData.textTheme.headline4,
).selectable(isSelectable: isSelectable),
subtitle: Text(
subtitleText,
).selectable(isSelectable: isSelectable),
trailing: trailingWidget,
),
),
);
}