How to solve: PageView not showing inside SingleChildScrollView

Question

Asked by Android D on December 28, 2021 (source).

I created ViewPager using PageView but when i put it inside SingleChildScrollView it stops showing.However when i put it outside SingleChildScrollView it shows fine.How to show PageView inside SingleChildScrollView?

Expanded(
          flex: 8,
          child: SingleChildScrollView(
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              mainAxisSize: MainAxisSize.min,
              children: [

                Card(
                    shape: RoundedRectangleBorder(
                      borderRadius: BorderRadius.circular(5.0),
                    ),
                    margin: const EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 0),
                    child: Padding(
                        padding:
                            const EdgeInsets.fromLTRB(8.0, 8.0, 8.0, 8.0),
                        child: promoPager())),
              ],
            ),
          ),
        )
Widget promoPager() {
    final PageController controller = PageController();
    return Stack(
      children: [
        PageView(
            controller: controller,
            onPageChanged: (int page) {
              setState(() {
                tabController?.index = page;
              });
            },
            children: const [
              Image(
                  image: AssetImage('assets/dubai.jpg'), fit: BoxFit.fill),
              Image(
                  image: AssetImage('assets/webcheckin.jpg'),
                  fit: BoxFit.fill),
              Image(
                  image: AssetImage('assets/maldives.gif'),
                  fit: BoxFit.fill),
              Image(
                  image: AssetImage('assets/giraffe.jpg'), fit: BoxFit.fill)
            ]),
        Positioned(
            bottom: 5,
            right: 5,
            child: TabPageSelector(
                controller: tabController,
                selectedColor: const Color(0xffea2330)))
      ],
    );

My widget tree:- SinglechildScrollView->Column->Card->Padding->Stack->pageview

Answer

Question answered by Yeasin S (source).

Providing height for PageView fix the issue. You can use SizedBox(height:x) or AspectRatio and use images aspect ratio here.

More about PageView and AspectRatio

ANDROID FLUTTER FLUTTER-LAYOUT FLUTTER-PAGEVIEW SINGLECHILDSCROLLVIEW
SHARE: