2
votes

La méthode n'est pas définie pour la classe - Flutter

Je suis nouveau dans le flutter et j'ai essayé de créer une application de quiz simple. J'ai rencontré une erreur et je ne suis pas sûr de ce qui ne va pas.

Erreur:

import 'package:flutter/material.dart';

class Answer extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return Container(
        width: double.infinity,
        color: Colors.blue,
        child: RaisedButton(child: Text("Answer 1"), onPressed: null));
  }
}

main.dart:

import 'package:flutter/material.dart';
import './questions.dart';
import './answer.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _MyAppState();
  }
}

class _MyAppState extends State<MyApp> {
  var _questionIndex = 0;

  var _questions = ["Question 1?", "Question 2?", "Question 3?"];

  void _answerQuestion() {
    setState(() {
      _questionIndex = _questionIndex + 1;
    });

    print("You answered the question!");
  }

  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
            appBar: AppBar(
              title: Text("Quiz"),
            ),
            body: Column(
              children: <Widget>[
                Question(_questions[_questionIndex]),
                Answer(),
                Answer(),
                Answer()
              ],
            )));
  }
}

answer.dart:

Compiler message:                                                       
lib/main.dart:37:17: Error: The method 'Answer' isn't defined for the class '_MyAppState'.
 - '_MyAppState' is from 'package:project2/main.dart' ('lib/main.dart').
Try correcting the name to the name of an existing method, or defining a method named 'Answer'.
                Answer(),                                               
                ^^^^^^                                                  
lib/main.dart:38:17: Error: The method 'Answer' isn't defined for the class '_MyAppState'.
 - '_MyAppState' is from 'package:project2/main.dart' ('lib/main.dart').
Try correcting the name to the name of an existing method, or defining a method named 'Answer'.
                Answer(),                                               
                ^^^^^^                                                  
lib/main.dart:39:17: Error: The method 'Answer' isn't defined for the class '_MyAppState'.
 - '_MyAppState' is from 'package:project2/main.dart' ('lib/main.dart').
Try correcting the name to the name of an existing method, or defining a method named 'Answer'.
                Answer()                                                
                ^^^^^^     

J'ai utilisé le même nom de classe et importé le bon fichier dans main.dart. Je ne suis pas sûr de ce qui ne va pas. Quelqu'un peut-il me le signaler. Merci d'avance!


3 commentaires

Avez-vous laissé votre IDE terminer automatiquement l'importation? Avez-vous essayé d' import 'answer.dart'; (pas de tête ./ )? Avez-vous redémarré le processus Flutter?


@FrankTreacy Merci, j'ai redémarré le processus de flutter et cela a fonctionné.


Oui, j'avais le problème exact et le redémarrage de Flutter m'aide. Mais pourquoi?


3 Réponses :


0
votes

Je ne parviens pas à reproduire la même erreur que celle que vous avez reçue sans une repro minimale complète et des étapes pour reproduire le comportement. Lors de mes tests, une erreur s'est produite lors de l' import 'answer.dart'; a été ajouté manuellement dans main.dart et a exécuté l'application avec rechargement à chaud. Comme il s'agissait d'un rechargement à chaud et que l'importation a été ajoutée manuellement, il est probable que les modifications de code n'aient pas été incluses, ce qui a causé le problème. L'application fonctionne correctement après un redémarrage et le problème ne se produit pas lorsque vous laissez l'EDI terminer automatiquement l'importation.

Avec les détails actuels, je ne peux pas exclure une cause précise de votre problème.

J'utilise la version 1.22.0 du canal stable Flutter

Erreur que j'ai:

════════ Exception caught by widgets library ═══════════════════════════════════════════════════════
The following _CompileTimeError was thrown building MyApp(dirty, state: _MyAppState#2340f):
Unimplemented handling of missing static target

The relevant error-causing widget was: 
  MyApp file:///Users/{USER}/Downloads/dev/flutter/sample60384439/lib/main.dart:5:23
When the exception was thrown, this was the stack: 
#0      StatefulElement.build (package:flutter/src/widgets/framework.dart:4744:28)
#1      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4627:15)
#2      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
#3      Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
#4      BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2730:33)
...
════════════════════════════════════════════════════════════════════════════════════════════════════
Reloaded 2 of 530 libraries in 220ms.


0 commentaires

0
votes

Erreur différente mais similaire. J'ai fait un redémarrage à chaud au lieu d'un rechargement à chaud. Remarque: Windows 10, IDE Android Studio


1 commentaires

Je vous recommande d'utiliser un vérificateur de grammaire comme grammarly.com



0
votes

Je ne recommande pas d'écrire les importations par vous-même, lorsque vous avez un widget ou une fonction qui n'est pas importé, une erreur sera mise en évidence avec des suggestions pour résoudre ce problème. Voici un exemple :

  • appelez votre fonction ou widget, j'ai ici un widget à appeler:
    appeler un widget nommé: ScreenLogin ()

  • comme vous pouvez le voir, une erreur est mise en évidence, suggérant d'importer

  • cliquez dessus, puis le widget est importé correctement
    widget importé

cela évitera de telles erreurs pour vous à l'avenir


0 commentaires