Remove une valeur qui provient d'un calendrier

Bonjour à tous,

J’ai créé un calendrier avec deux FloatingActionButton où on peut enlever un évent du calendrier et l’autre peut ajouter un évent au calendrier.

Toutes les valeurs proviennent du package : table_calendar | Flutter Package

J’arrive à les ajouter mais je n’arrive pas à les remove, si on pouvait m’aider. :slight_smile:

Je vous donne ce que j’ai fait pour retirer un évent.

_removeFormation() async {
await showDialog(

    context: context,

    builder: (context) => AlertDialog(

          content: TextField(

            controller: _formationController,

          ),

          actions: <Widget>[

            FlatButton(

              child: Text("Enlevez une formation"),

              onPressed: () {

                if (_formationController.text.isEmpty) return;

                if (_formation[_controller.selectedDay] != null) {

                  _formation[_controller.selectedDay]

                      .remove(_formationController.text);

                } else {

                  _formation[_controller.selectedDay] = [

                    _formationController.text

                  ];

                }

                prefs.setString(

                    "formation", json.encode(encodeMap(_formation)));

                _formationController.clear();

                Navigator.pop(context);

              },

            )

          ],

        ));

setState(() {

  _selectformation = _formation[_controller.selectedDay];

});

}

Bonjour,

Cela peut venir de cette partie en particulier.

Essayez de faire un print avant et après de la liste et aussi de _formationController.text.
Si ce dernier est vide cela justifierait la non-supression de l’objet ou si la valeur ne correspond pas dans la liste.

_formationController.text. correspond bien dans la liste, il le reconnaît bien, cependant, la non-suppresion de l’objet ne marche pas car la liste ne prend pas en compte l’ordre « .remove(_formationController.text); »

J’imagine que j’ai mal effectué la démarche

Removes the first occurrence of value from this list.

Returns true if value was in the list, false otherwise.

Le .remove retourne false si il ne trouve pas l’objet, vous pouvez englober le résultat dans un bool et vérifier avec print().

De quel type de donnée est le _formationController.text ?

La list est dynamique et _formationController.text est en char

image

Essayez de voir si vous pouvez faire un .remove en dur, en écrivant la valeur de char directement à la place de la variable. Si cela fonctionne c’est que cela vient de l’objet char.

L’erreur provenait de l’object char. Merci de votre aide !

1 J'aime

Super, qu’avez-vous fait pour la résoudre ?

J’ai mis un élément en dure sur mon remove puis j’ai compris que ça ne venait pas de lui puis j’ai remonté dans mes fonctions et j’ai compris que c’était une valeur provenant de la list _formation qui ne prenait pas encore le remove

1 J'aime