मैं किसी ऑब्जेक्ट को तर्क के रूप में पास करते समय एक बटन को दूसरी स्क्रीन पर नेविगेट करने में सक्षम होना चाहता हूं। ऑब्जेक्ट getPlayer () फ़ंक्शन के साथ बनाया गया है जो एक अलग डार्ट फ़ाइल के भीतर है; इसलिए, async फ़ंक्शन। जब भी मैं कोड चलाता हूं मुझे त्रुटि मिलती है:

Error: This expression has type 'void' and can't be used. onPressed: loadPlayerCard('nebula'),

यहाँ कोड है:

    class _HomeState extends State<Home> {

  List<Player> players;

   void loadPlayerCard (String playerName) async {
    Player player = await getPlayer(playerName);
    players.add(player);

    Navigator.pushNamed(context, '/playerCard', arguments: player);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.grey[900],
      appBar: AppBar(
        title: Text('Smash Tracker'),
        centerTitle: true,
        backgroundColor: Colors.grey[850],
        elevation: 0,
      ),
      body: Center(
        child: RaisedButton.icon(
            onPressed: loadPlayerCard('nebula'), //This is where the error message points to 
            icon: Icon(Icons.touch_app),
            label: Text('Nebula'),
        ),
      ),
    );
  }
}

किसी भी मदद की सराहना की जाती है!

1
Ayrock618 11 जुलाई 2020, 07:05

2 जवाब

सबसे बढ़िया उत्तर

इसे निम्नानुसार कोष्ठकों से लपेटें

RaisedButton.icon(
  onPressed:() async { loadPlayerCard('nebula'); }, // Fix for the issue
  icon: Icon(Icons.touch_app),
  label: Text('Nebula'),
),
2
Christopher Moore 11 जुलाई 2020, 15:56