Search code examples
fluttervariablesdartflutter-pageview

Flutter/Dart - Get index number of PageView.Builder for use in a Text Widget?


I've got a PageView.builder within a StatelessWidget. I need to get the current index number of the currently viewed page to appear in a text widget in my build.

Was hoping I could simply use currentIndex.toString() as a variable in the text widget but Android Studio underlines it in red and warns me of undefined name currentIndex. How can I get the correct variable?

 class StageBuilder extends StatelessWidget {
  final List<SpeakContent> speakcrafts;
  StageBuilder(this.speakcrafts);

  final PageController controller = PageController(initialPage: 0);

  @override
  Widget build(context) {
    return PageView.builder(
      controller: controller,
      itemCount: speakcrafts.length,
      itemBuilder: (context, int currentIndex) {
        return createViewItem(speakcrafts[currentIndex], context);
      },
    );
  }

  Widget createViewItem(SpeakContent speakcraft, BuildContext context) {
  
    return Container(
        child: Text(currentIndex.toString()),
     )     
  }
}

Solution

  • You need to pass the currentIndex into your createViewItem

     class StageBuilder extends StatelessWidget {
      final List<SpeakContent> speakcrafts;
      StageBuilder(this.speakcrafts);
    
      final PageController controller = PageController(initialPage: 0);
    
      @override
      Widget build(context) {
        return PageView.builder(
          controller: controller,
          itemCount: speakcrafts.length,
          itemBuilder: (context, int currentIndex) {
            return createViewItem(speakcrafts[currentIndex], context, currentIndex);
          },
        );
      }
    
      Widget createViewItem(SpeakContent speakcraft, BuildContext context, int currentIndex) {
      
        return Container(
            child: Text(currentIndex.toString()),
         );
      }
    }