FLUTTER ECOSYSTEM

douglasiacovelli/page_view_dot_indicator

A simple and animated page view indicator in the form of dots, which you can customise color, size, space and duration.

page_view_dot_indicator project cover
Stars
17
Forks
11
Last push (UTC)
Feb 13, 2024
Project status
Active
Douglas Iacovelli GitHub avatar
GITHUB User

Douglas Iacovelli ↗

Tech manager, Flutter contributor, article writer and a developer with product in mind.

@contratadome Bertioga
LanguagesDartSwiftKotlinObjective-C

Technical topics

Packages published by this repository

Dependencies used

Dependency list 3 items
  • flutter{"sdk":"flutter"}
  • flutter_testDevelopment{"sdk":"flutter"}
  • flutter_lintsDevelopment2.0.2

Original README

English project snapshot. Visit GitHub for the latest content.

Expand / collapse project README

Page view dot indicator

pub package

This lib draws a simple dot indicator for page views with a simple API. Right now it is able to draw dots with custom size, colors, spacing and duration. Besides that it also handles overflow by fading the edges if there are more dots than the width of the page allows.

https://user-images.githubusercontent.com/1608564/111876654-7f539200-897e-11eb-9d1e-7a9ceb820ec7.gif

Usage

Simply use this Widget in your page and make sure to use any form of state management to update the currentItem, such as setState.

These are the mandatory parameters:
PageViewDotIndicator(
  currentItem: selectedPage,
  count: pageCount,
  unselectedColor: Colors.black26,
  selectedColor: Colors.blue,
)
But you can also customize it using other parameters, such as:
PageViewDotIndicator(
  currentItem: selectedPage,
  count: pageCount,
  unselectedColor: Colors.black26,
  selectedColor: Colors.blue,
  size: const Size(12, 12),
  unselectedSize: const Size(8, 8),
  duration: const Duration(milliseconds: 200),
  margin: const EdgeInsets.symmetric(horizontal: 8),
  padding: EdgeInsets.zero,
  alignment: Alignment.centerLeft,
  fadeEdges: false,
  boxShape: BoxShape.square, //defaults to circle
  borderRadius: BorderRadius.circular(5), //only for rectangle shape
  onItemClicked: (index) { ... }
)