Home > Back-end >  Flutter | Navigator.pushNamed I got an error, The operator '[]' isn't defined for the
Flutter | Navigator.pushNamed I got an error, The operator '[]' isn't defined for the

Time:01-07

I am trying to transfer data with navigator.pushNamed but I am getting error and I don't know how to solve it.

My Code;

First screen transfer data

Navigator.pushNamed(context, '/resultscreen',
          arguments: <dynamic, dynamic>{
            "totalCorrectGuess": totalCorrectGuess,
            "imageName": imageName,
          });

`Second screen use data

class _ResultScreenState extends State<ResultScreen> {
  @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'),
              )
            ],
          ),
        ),
      ),
    );
  }
}

Line of code error

Text('totalCorrectAnswer: \n${gameScreenData!['totalCorrectGuess']}'),
Image.asset('assets/images/${gameScreenData!['imageName']}.png'),

CodePudding user response:

You have to cast the gameScreenData to Map

final gameScreenData = (ModalRoute.of(context)?.settings.arguments) as Map;

CodePudding user response:

You are passing Map, therefore you can typecast it

Map? gameScreenData = ModalRoute.of(context)?.settings.arguments as Map;

And use like

if (gameScreenData != null) ...[
  Text(
      'totalCorrectAnswer: \n${gameScreenData['totalCorrectGuess'] ?? "default value"}'),
  if (gameScreenData['imageName'] != null)
    Text('assets/images/${gameScreenData['imageName']}.png'),
],
  •  Tags:  
  • Related