Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'dart:math';
- import 'package:flutter/material.dart';
- void main() {
- runApp(MaterialApp(
- home: Scaffold(
- appBar: AppBar(
- title: Text("SabaTest"),
- ),
- body: IndicatorPager(),
- )));
- }
- class IndicatorPager extends StatefulWidget {
- @override
- _IndicatorPagerState createState() => _IndicatorPagerState();
- }
- class _IndicatorPagerState extends State<IndicatorPager> {
- final List<Widget> _numbers = List.generate(10, _generatePages);
- int _currentPage = 0;
- @override
- Widget build(BuildContext context) {
- return Stack(
- children: <Widget>[
- Padding(
- padding: const EdgeInsets.all(16.0),
- child: ProgressWidget(_currentPage, _numbers.length),
- ),
- PageView(
- onPageChanged: (newPage) => setState(() {
- _currentPage = newPage;
- }),
- children: _numbers,
- ),
- ],
- );
- }
- }
- Widget _generatePages(int index) {
- return Center(child: Text(index.toString()));
- }
- class ProgressWidget extends StatelessWidget {
- final int _progress;
- final int _total;
- const ProgressWidget(this._progress, this._total, {Key key})
- : super(key: key);
- @override
- Widget build(BuildContext context) {
- return Row(
- children: _getProgress(context),
- );
- }
- List<Widget> _getProgress(context) {
- List<Widget> list = [];
- for (int i = 0; i < _total; i++) {
- list.add(Flexible(
- flex: 5,
- child: Container(
- height: 5,
- decoration: BoxDecoration(
- color: i < _progress
- ? Theme.of(context).accentColor
- : Colors.grey[100],
- borderRadius: BorderRadius.circular(20),
- boxShadow: <BoxShadow>[
- BoxShadow(
- offset: Offset(1, 1),
- blurRadius: 3.0,
- )
- ]),
- ),
- ));
- if (i < _total - 1) {
- list.add(Spacer());
- }
- }
- return list;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement