1
votes

Flutter Provider reconstruit les widgets inutiles

Je crée une application mobile avec une architecture de fournisseur sur flutter.

Selon la conception, j'utilise un modèle avec changeNotifier qui contient une liste d'objets.

Chaque fois qu'il y a un changement dans l'un des objets de la liste, la liste entière est reconstruite, ce qui n'est pas censé l'être.

Pour simuler cela, j'ai créé une application simple comme ci-dessous. La ligne du haut est une liste d'éléments, tandis que celle du bas est le widget détaillé. Mais chaque fois que je touche à la fois le widget de liste et le widget détaillé, il est reconstruit.

Voici le code source. Lien Github

Voici l'exemple de capture d'écran Capture d'écran d'image

Voici mes questions.

  1. Comment écouter uniquement l'objet enfant?
  2. Quelle est l'erreur que j'ai commise ici?

0 commentaires

3 Réponses :


0
votes

Le package de gestion de l'état du fournisseur offre aux consommateurs. Lorsque vous utilisez des consommateurs, vous avez la possibilité de transmettre un widget enfant que vous ne souhaitez pas reconstruire. Et une méthode de construction qui accepte ensuite l'enfant (qui est principalement dans cet état statique et n'a pas besoin d'être reconstruit) avec le widget qui doit être reconstruit dans votre cas, la carte de détail du bas si je ne me trompe pas. Vous pouvez en apprendre davantage sur les documents à condition qu'ils soient très explicites. https://github.com/rrousselGit/provider/blob/master/README. md

Le message sur le support dans ce lien explique également beaucoup de choses sur le fonctionnement du package du fournisseur. https://medium.com/flutter- nyc / un-regard-plus-sur-le-package-fournisseur-993922d3a5a5


0 commentaires

0
votes

Honnêtement, je ne pense pas que vous ayez à vous soucier de la reconstruction complète, mais si cela vous dérange, il existe un widget Selector que vous pouvez utiliser pour écouter la valeur spécifique de l'élément dans votre liste.


0 commentaires

0
votes

Peut-être qu'il est un peu tard, mais pour n'importe qui a ce problème. Provider est juste un framework d'injection de dépendances, vous ne pouvez pas l'utiliser pour la gestion de l'état (seul). Vous auriez dû nous fournir un échantillon de votre code, mais je suppose que vous utilisez Provider avec ChangeNotifier . Dans cette situation, il vous suffit d'utiliser le widget Consumer qui a une fonction build à l'intérieur de cette fonction. Vous mettez votre qui va être reconstruit. Voici un article moyen

Une autre façon consiste à utiliser une combinaison de Fournisseur et de Streams et vous pouvez utiliser le widget StreamBuilder de la même manière que vous utilisez Grand public ..


0 commentaires