0
votes

Comment transmettre des données de Textfield d'éléments ListView in Flutter?

Je veux passer de la quantité de ListView à l'aide d'un champ de texte dans Listtile.

        padding: EdgeInsets.all(8.0),
        itemCount: allProducts.length,
        itemBuilder: (context, index) {
          return Consumer<CartModel>(builder: (context, cart, child) {
            return Card(
              color: Colors.white,
              child: Row(
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: <Widget>[
                  Padding(
                    padding: const EdgeInsets.only(left: 20),
                    child: Text(
                      allProducts[index].title,
                      style: TextStyle(fontWeight: FontWeight.bold),
                    ),
                  ),
                  Container(
                    width: 30,
                    child: TextField(
                      controller: TextEditingController(),
                      decoration: InputDecoration(
                        hintText: 'Quantity'
                      ),
                    ),
                  ),
                  // Text("\$" + allProducts[index].price.toString()),
                  RaisedButton(
                    color: Colors.blue[200],
                    child: Text('Add'),
                    onPressed: () {
                      cart.addProduct(allProducts[index]);
                    },
                  ),
                ],
              ),
            );
          });
        },
      ),


0 commentaires

4 Réponses :


0
votes

Essayez de déplacer tout ligne dans un autre widget et prenez un produit comme entrée pour ce nouveau widget.

Maintenant, lors de la création d'un ligne passez quelque chose une valeur unique de vos produits sous forme de clé . .


0 commentaires

0
votes

Oui, l'un des moyens les plus propres de résoudre consiste à extraire la tuile en un état d'état distinct. Ce widget peut ensuite avoir son propre contrôleur comme un état et le bouton peut accéder à son texte de manière transparente. Vous gagneriez également en lisibilité.


0 commentaires

0
votes

Vous avez besoin de définir votre TextAdittingController en dehors de votre widget dans une variable et passez cette variable à la propriété du contrôleur de votre Textfield:

TextEditingController _textEditingController = TextEditingController();

TextField(
  controller: _textEditingController,
  decoration: InputDecoration(
    hintText: 'Quantity'
  ),
),


5 commentaires

S'il vous plaît ne demandez pas de votes ici. Il est correct de rappeler aux gens comment fonctionne le système de vote, mais demandant à quelqu'un de uplifier / accepter votre matériel en particulier est découragé. Si vous travaillez est utile, il sera upétonnée de manière assez organique.


Tu as raison et je comprends ça. Malheureusement, le nombre de personnes qui obtiennent des réponses correctes, commentaire à ce sujet mais ne marquez jamais les réponses comme une conduite correcte à une frustration.


Oui, je suis d'accord avec ça. Une approche d'accord est d'ajouter un rappel de commentaire sous la question, demandant s'ils ont vu toutes les réponses, ou s'ils sont toujours bloqués. Personnellement, j'ai tendance à éviter de répondre aux questions de nouveaux comptes, ou lorsqu'il y avait une exigence significative de clarification ou de réparation de questions - dans ces cas, la question peut être une demande de travail libre et la question est invitée sans désir de faire partie de la (vote) communauté.


Oui, exactement. J'ai fait beaucoup de commentaires conseillant de nouveaux utilisateurs qu'ils auront de meilleures chances d'obtenir des réponses de qualité s'ils suivent les directives "Comment demander". Mais cela se fait souvent ignorer ou que les gens sont agacés et vous disent, comme cela m'est arrivé il y a des jours. Un modérateur a supprimé le méchant commentaire.


Mots sages. Acclamations!



0
votes

Utilisez la touche pour distinguer les champs de texte. Voici un exemple: Utilisation des clés in Flutter


0 commentaires