0

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()),
     )     
  }
}
Meggy
  • 1,491
  • 3
  • 28
  • 63

1 Answers1

1

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()),
     );
  }
}
JideGuru
  • 7,102
  • 6
  • 26
  • 48
  • Sorry I tried this but got a red underlining everything in the brackets. return createViewItem(speakcrafts[currentIndex], context, currentIndex); – Meggy Aug 21 '20 at 19:08
  • Apologies, I forgot the 2nd part. – Meggy Aug 21 '20 at 19:09