90 votes

Flutter : Comment ajouter un indicateur de défilement dans un ListView ?

Existe-t-il un moyen d'afficher l'indicateur de défilement sur l'écran d'accueil de l'ordinateur ? ListView ?

Voici mon code de base :

ListView.builder(
  itemCount: 50,
  itemBuilder: (context, index) => ListTile(title: Text("Item= ${index + 1}"),),
)

0 votes

Cela peut être utile pour vous : stackoverflow.com/questions/49675720/

0 votes

Vous devez vous assurer que le ListView est effectivement plus petit que son contenu, sinon il n'affichera pas de barre de défilement. Si vous placez le ListView dans un scrollable, il n'y aura pas de barre de défilement car sa taille est infinie.

0 votes

@GünterZöchbauer J'utilise 50 éléments et seulement 10 sont visibles en même temps sur l'écran donc ListView est plus petite que son contenu et c'est pourquoi elle défile, je pensais qu'il y aurait un indicateur intégré à la liste, mais il n'y a rien de tel.

187voto

Merci à Günter Zöchbauer .

Vous pouvez envelopper votre ListView en Scrollbar

Scrollbar(
    child: ListView.builder(
      itemCount: 50,
      itemBuilder: (context, index) => ListTile(title: Text("Item= ${index + 1}"),),),
)

1 votes

D'après mes connaissances d'Android, je me demande si vous n'êtes pas en train de rendre tous les éléments et de les placer dans une barre de défilement.

0 votes

Si vous supprimez itemCount : 50, la liste sera infinie et par défaut, le scroll ne devrait pas être là.

0 votes

Dans une liste de 500 éléments, dont 37 sont visibles, il ne rend que 50 éléments (ce qui est bien).

16voto

BloodLoss Points 542

Je pense qu'il est préférable d'utiliser CupertinoScrollbar au lieu de Scrollbar . CupertinoScrollbar on peut toucher et faire défiler jusqu'en bas

Ex :

 CupertinoScrollbar(
            child: ListView.builder(...),

Ou

Scrollbar(
    child: ListView.builder(...),

8voto

Sanjayrajsinh Points 1098

Vous pouvez mettre en œuvre cette designer bibliothèque de la barre de défilement :

  1. barre de défilement draggable

  2. défilement de l'alphabet

O

Vous pouvez envelopper le ListView dans Scrollbar widget

Scrollbar(
    child: ListView.builder(...),
)

0 votes

L'indication des deux paquets externes est très utile. Dans Flutter il est plus important que dans d'autres frameworks l'intégration avec les dépendances externes.

8voto

Paresh Mangukiya Points 13942

Dans ce code : Un exemple de la façon d'afficher dans ListView

scroll indicator

child: Scrollbar( 
   child: ListView.builder(
   padding: EdgeInsets.all(5),
   itemCount: snapshot.data.length,
    physics: BouncingScrollPhysics(),
    itemBuilder: (context, index) {
      return generateColum(snapshot.data[index], index);
    }),
 ),

6voto

Remy Points 58

Créer une variable ScrollController (ScrollController _scrollController); Instaurez _scrollController à l'intérieur de initState() ou où vous voulez, _scrollController = ScrollController();
Ajouter _scrollController variable à l'intérieur Scrollbar y ListView propriétés,

controller:_scrollController

Voici le code :

ScrollController _scrollController;
  @override
  void initState() {
    super.initState();
    _scrollController = ScrollController();
  }
Scrollbar(
        isAlwaysShown: true,
         controller: _scrollController,
         child: ListView(
         controller: _scrollController,
   )

Si vous ne voulez pas qu'il soit toujours affiché, mettez-le à false.

isAlwaysShown: false,

0 votes

Cela fonctionne mieux si vous avez besoin que la barre de défilement soit visible dès le début, ce qui est ce que je recherchais dans mon cas. Merci pour la réponse !

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