2 votes

Le type d'argument 'Function' ne peut pas être assigné au type de paramètre 'String ? Function(String ?)? après dart2

Je reçois une erreur

Le type d'argument 'Function' ne peut pas être assigné au type de paramètre 'String ? Function(String ?)?

après dart 2 pour un widget de champ de formulaire.

code complet :

class MyFormField extends StatelessWidget {
  Function onTextChanged;
  Function formValidator;
  MyFormField(
      {
      required this.onTextChanged,
      required this.formValidator,
    });
  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(8.0),
      child: TextFormField(
        style: TextStyle(fontWeight: FontWeight.bold),
        validator: formValidator, //***** Error Here
        keyboardType: TextInputType.number,
        onChanged: onTextChanged, //***** Error Here
      ),
    );
  }
}

2voto

Huthaifa Muayyad Points 4780

Changez-le en ceci

class MyFormField extends StatelessWidget {
  Function(String?) onTextChanged; //<=note
  Function(String?) formValidator; //<=note
  MyFormField(
      {
      required this.onTextChanged,
      required this.formValidator,
    });
  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(8.0),
      child: TextFormField(
        style: TextStyle(fontWeight: FontWeight.bold),
        validator: (String? value) => formValidator(value), //***** Error Here
        keyboardType: TextInputType.number,
        onChanged: (String? value) => onTextChanged(value), //***** Error Here
      ),
    );
  }
}

Parce que le onChanged est appelée lorsqu'une valeur est saisie dans le formulaire, et que cette valeur est un fichier de type string? car il arrive qu'aucune valeur ne soit saisie et que vous ne soyez pas sûr de la valeur, qui pourrait être nulle si elle est laissée vide. Votre fonction de validation et vos fonctions onchanged ont besoin d'une chaîne pour effectuer des calculs et des opérations logiques. Elles obtiennent ces chaînes de caractères à partir du (String? value) dans les champs de votre formulaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X