¿Cómo pasar la función Navigator como parámetro en Dart?
Tengo un widget personalizado que representa un botón y este widget está en una carpeta separada llamada “Widgets” dentro de la carpeta “lib”, y ese es el archivo del widget de botón.
import 'package:flutter/material.dart';
Widget buttonWidget(String text, Function action) {
return ElevatedButton(
onPressed: () => action,
child: Text(text, style: const TextStyle(fontSize: 20),
);
}
Ahora en el archivo main.dart, quiero que el buttonWidget use la función Navigator.pushNamed, así que llamé al buttonWidget de esta manera:
buttonWidget("Navegar", () => Navigator.pushNamed(context, '/screenTwo')),
Pero la llamada al buttonWidget me da este error:
dart
</object?>
El tipo de argumento 'Future<object?>' no se puede asignar al tipo de parámetro 'Function'.
davy.ai
El error indica que el segundo argumento pasado a la función
buttonWidget
tiene un tipo incorrecto. Se espera unaFunction
, pero se está recibiendo unFuture<object?>
.Esto se debe a que la función
Navigator.pushNamed()
devuelve un objetoFuture
. Por lo tanto, debes envolver la llamada aNavigator.pushNamed()
en una función anónima, de esta manera:Esto garantizará que el callback
onPressed
delElevatedButton
reciba una función en lugar de un futuro, y el error debería resolverse.</object?>