Flutter / Dart-嵌套的水平和垂直PageViewBuilders?

问题描述

@H_404_0@在水平PageView.builder中查看每个页面时,我想调用一个垂直的PageView.builder来为每个页面提供其自己的垂直答复列表。最好的方法是什么?

  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 Scaffold(
        body: (some stuff),);
  }
}

解决方法

问题是您应该在PageView中放置支架,否则应该在其中放置支架。
请参见下面的示例:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,home: Scaffold(
        body: Padding(
          padding: const EdgeInsets.symmetric(vertical: 50,horizontal: 20),child: PageViewDemo(),),);
  }
}

class PageViewDemo extends StatefulWidget {
  @override
  _PageViewDemoState createState() => _PageViewDemoState();
}

class _PageViewDemoState extends State<PageViewDemo> {

  PageController _controller = PageController(
    initialPage: 0,);

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return PageView(
      controller: _controller,children: [
        MyPage1Widget(),MyPage2Widget(),MyPage3Widget(),],);
  }
}