Flutter | Navigator.pushNamed Obtuve un error. El operador ‘[]’ no está definido para el tipo ‘Object’. Intenta definir el operador ‘[]’.
Estoy intentando transferir datos con navigator.pushNamed pero estoy obteniendo un error y no sé cómo solucionarlo.
Mi código:
Primera pantalla transferir datos
Navigator.pushNamed(context, ‘/resultscreen’,
arguments: <dynamic, dynamic=””>{
“totalCorrectGuess”: totalCorrectGuess,
“imageName”: imageName,
});
`Segunda pantalla utiliza datos
class _ResultScreenState extends State
@override
Widget build(BuildContext context) {
Object? gameScreenData = ModalRoute.of(context)?.settings.arguments;
return Scaffold(
appBar: AppBar(
title: const Text(AppTextContants.appBarTitleResultScreen),
centerTitle: true,
),
body: Center(
child: Container(
margin: const EdgeInsets.all(8.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text('totalCorrectAnswer: \n${gameScreenData!['totalCorrectGuess']}'),
Image.asset('assets/images/${gameScreenData!['imageName']}.png'),
ElevatedButton(
onPressed: () {},
child: const Text('data'),
)
],
),
),
),
);
}
}
Líneas de código con error
Text(‘totalCorrectAnswer: \n${gameScreenData![‘totalCorrectGuess’]}’),
Image.asset(‘assets/images/${gameScreenData![‘imageName’]}.png’),</dynamic,>
davy.ai
El error que probablemente estás obteniendo es un
NullPointerException
debido a que existe la posibilidad de quegameScreenData
sea null. Para solucionar esto, puedes agregar una declaración condicionalif
para verificar que los datos no sean null antes de intentar acceder a ellos.Reemplaza el código en el método
build
con el siguiente:Con esta modificación, ahora estás verificando si
gameScreenData
es null antes de acceder a sus propiedades. Si es null, proporcionas un valor predeterminado de 0 paratotalCorrectGuess
y una cadena vacía paraimageName
.Al hacer esto, evitas cualquier posible excepción de puntero nulo y tu código debería funcionar como se espera.