[Flutter] How to use PageView widget

2024-10-21 hit count image

Let's see how to use the PageView widget provided by Flutter to scroll the entire page.

Outline

When you develop an app with Flutter, sometimes you want to implement a feature that scrolls the entire screen like TikTok. In this case, you can easily implement it using the PageView widget provided by Flutter.

In this blog post, I will introduce how to use the PageView widget.

You can see the full source code introduced in this blog post at the link below.

PageView widget

The PageView widget provided by Flutter allows you to scroll the entire screen. You can set up pages by passing multiple widgets through the children property.

Flutter - PageView widget scroll vertical

You can see the details of the PageView widget in the following official document.

How to use PageView

The PageView widget is basically provided by Flutter, so you can easily use the PageView widget as follows.

class MyHomePage extends StatelessWidget {
  MyHomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: PageView(
        children: [
          Container(
            width: double.infinity,
            height: double.infinity,
            color: Colors.red,
          ),
          Container(
            width: double.infinity,
            height: double.infinity,
            color: Colors.blue,
          ),
          Container(
            width: double.infinity,
            height: double.infinity,
            color: Colors.green,
          ),
        ],
      ),
    );
  }
}

When you set the widgets you want to display on the screen in the children of the PageView widget, you can scroll the entire screen to move between pages like the following.

Flutter - PageView widget scroll horizontal

In here, I use the Container widget to easily check the implementation.

PageContorller

You can use the PageContorller to determine the initial page to display.

class MyHomePage extends StatelessWidget {
  final pageController = PageController(
    initialPage: 1,
  );

  MyHomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: PageView(
        controller: pageController,
        children: [
          ...
        ],
      ),
    );
  }
}

You can set the index of the page to be displayed initially in the initialPage property of the PageController. After modifying the code like this and running the app again, you can see that the initially displayed page has changed.

scrollDirection property

You can set the scroll direction using the scrollDirection property of the PageView widget. By default, the scrollDirection property is set to Axis.horizontal, but you can set it to Axis.vertical to scroll vertically.

PageView(
  controller: pageController,
  scrollDirection: Axis.vertical,
  children: [
    ...
  ],
)

When you modify the code like this, you can scroll vertically like the following.

Flutter - PageView widget scroll vertical

onPageChanged property

You can set a callback function that is called when the page is changed using the onPageChanged property of the PageView widget. This allows you to perform additional tasks when the page is changed.

PageView(
  controller: pageController,
  onPageChanged: (index) {
    print('Page changed to $index');
  },
  children: [
    ...
  ],
)

PageView Builder

You can dynamically create pages using the PageView.builder constructor of the PageView widget. You can pass a function that creates pages through the itemBuilder property.

PageView.builder(
  controller: pageController,
  itemCount: 10,
  itemBuilder: (context, index) {
    return Container(
      width: double.infinity,
      height: double.infinity,
      color: index % 2 == 0 ? Colors.red : Colors.blue,
    );
  },
)

Completed

Done! We’ve seen how to scroll the entire page using the PageView widget provided by Flutter. By using the PageView widget, you can easily scroll the entire page, and you can set the scroll direction using the scrollDirection property.

When you use the PageView widget, you can easily implement a feature like the TikTok app. If you need a feature that scrolls the entire screen in the app you are developing, try implementing it using the PageView widget.

Was my blog helpful? Please leave a comment at the bottom. it will be a great help to me!

App promotion

You can use the applications that are created by this blog writer Deku.
Deku created the applications with Flutter.

If you have interested, please try to download them for free.

Posts