build method Null safety

  1. @override
dynamic build(
  1. 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,
      ),
    ),
  );
}