Flutter / Dart-获取要在Text Widget中使用的PageView.Builder的索引号?

问题描述

我在PageView.builder中有一个StatelessWidget。我需要获取当前查看页面的当前索引号才能显示在我的版本的文本小部件中。

希望我可以简单地将currentIndex.toString()用作文本小部件中的变量,但是Android Studio用红色下划线标出并警告我undefined name currentIndex。如何获取正确的变量?

 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()),)     
  }
}

解决方法

您需要将currentIndex传递到您的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()),);
  }
}