É realmente necessário implementar o callback a partir da função onClick? Não é tão trabalhoso, mas achei bem desnecessário... É dito durante a aula que se deve fazer assim, pois seria difícil ficar passando como argumento vários valores.
Eu decidi criar um novo campo chamado "newPage" que passa a tela que deve ser chamada. Essa abordagem está correta?
Eu fiz dessa forma e deu certo, também achei mais fácil:
class _FeatureItem extends StatelessWidget {
  final String name;
  final IconData icon;
  final Widget newPage;
... // resto do código
child: InkWell(
        onTap: () {
          Navigator.of(context).push(MaterialPageRoute(
            builder: (context) => newPage, // aqui eu chamo a tela que será chamada ao receber o click
          ));
        },
... //resto do códigoE para chamar ele, basta fazer assim:
_FeatureItem(
    name: "Transfer",
    icon: Icons.monetization_on,
    newPage: ContactsList(),
),E caso seja necessário que aceite null como valor, ficaria assim:
_FeatureItem(
    name: "Transfer",
    icon: Icons.monetization_on,
    newPage: null,
),
class _FeatureItem extends StatelessWidget {
  final String name;
  final IconData icon;
  final Widget? newPage;
 InkWell(
        onTap: () {
          if (newPage != null) {
            Navigator.of(context).push(MaterialPageRoute(
              builder: (context) => newPage!,
            ));
          }
        },
 
            