zoukankan      html  css  js  c++  java
  • Flutter 仿iOS自定义UIPageControl组件

     

    import 'package:flutter/cupertino.dart';
    import 'package:flutter/material.dart';

    class DWPageView extends StatefulWidget {
    DWPageView({
    // 宽度 必传
    this.width,
    // 高度 必传
    this.height,
    // 总页数 必传
    this.numberOfPages,
    // 当前页数
    this.currentPage = 0,
    // 未选颜色 默认灰色
    this.pageColor = Colors.grey,
    // 选中颜色 默认白色
    this.tintColor = Colors.white,
    // 间隔 默认5
    this.space = 5,
    // 指示器宽度 默认5
    this.pageWidth = 5,
    // 指示器高度 默认5
    this.pageHeight = 5,
    // 选中指示器宽度 默认5
    this.currentPageWidth = 5,
    // 选中指示器高度 默认5
    this.currentPageHeight = 5,
    // 指示器圆角度 默认2
    this.radius = 2,
    // 排序的方向 默认横着排序
    this.scrollDirection = Axis.horizontal,

    Key key,
    }) : super( key: key);

    final int numberOfPages;
    final int currentPage;
    final Color pageColor;
    final Color tintColor;
    final double space;
    final double width;
    final double height;
    final double pageWidth;
    final double pageHeight;
    final double currentPageWidth;
    final double currentPageHeight;
    final double radius;
    final Axis scrollDirection;

    @override
    DWPageViewState createState() {
    return DWPageViewState();
    }

    }

    class DWPageViewState extends State<DWPageView> {
    ScrollController _scrollController = new ScrollController();
    int _currentPage;

    @override
    void initState() {
    // TODO: implement initState
    super.initState();
    setState(() {
    _currentPage = widget.currentPage;
    });
    }

    void selectedIndex(int index) {
    setState(() {
    _currentPage = index;
    });
    }

    @override
    Widget build(BuildContext context) {
    // TODO: implement build
    return Container(
    widget.width,
    height: widget.height,
    child: ListView.builder(
    controller: _scrollController,
    scrollDirection: widget.scrollDirection,
    itemCount: widget.numberOfPages,
    itemBuilder: ((context, index) {
    if (index == _currentPage) {
    return Center(
    child: Container(
    margin: new EdgeInsets.fromLTRB(0, 0, widget.scrollDirection == Axis.horizontal ? widget.space : 0, widget.scrollDirection != Axis.horizontal ? widget.space : 0),
    widget.currentPageWidth,
    height: widget.currentPageHeight,
    decoration: BoxDecoration(
    borderRadius: BorderRadius.all(Radius.circular(widget.radius)),
    color: widget.tintColor,
    ),
    ),
    );
    }
    return Center(
    child: Container(
    margin: new EdgeInsets.fromLTRB(0, 0, widget.scrollDirection == Axis.horizontal ? widget.space : 0, widget.scrollDirection != Axis.horizontal ? widget.space : 0),
    widget.pageWidth,
    height: widget.pageHeight,
    decoration: BoxDecoration(
    color: widget.pageColor,
    borderRadius: BorderRadius.all(Radius.circular(widget.radius)),
    ),
    ),
    );
    }),
    ),
    );
    }
    }
  • 相关阅读:
    AC日记——与7无关的数 openjudge 1.5 39
    AC日记——计算多项式的导函数 openjudge 1.5 38
    AC日记——矩阵交换行 openjudge 1.8 01
    AC日记——阶乘和 openjudge 1.6 15
    AC日记——求10000以内n的阶乘 openjudge 1.6 14
    逻辑运算
    PLC控制设计的基本步骤
    Micropython通用控制
    class Pin --控制I/O引脚
    Micropython入门实操心得
  • 原文地址:https://www.cnblogs.com/diweinan/p/13534952.html
Copyright © 2011-2022 走看看