Flutter-帶動畫的指示器anim_indicator

Maybe發表於2021-08-07

先看效果。

8870768-666f9f50014106bf.webp

使用

你只需要按照以下方式引入即可.

dependencies:
  anim_indicator: ^0.0.2
複製程式碼

示例

最簡單的使用
AnimIndicator(
  position: currentIndex,
)
複製程式碼

自定義

可以定義指示器數量,當前選中位置,指示器顏色,以及指示器選中的長度

AnimIndicator(
    dotsCount: 3,
    position: currentIndex,
    color: Colors.red,
    inLength: 30,
)
複製程式碼

和PageView一起使用

效果圖的程式碼如下。

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Anim Indicator',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  late PageController _pageController;
  int currentIndex = 0;

  @override
  void initState() {
    _pageController = PageController(initialPage: 0);
    super.initState();
  }

  @override
  void dispose() {
    _pageController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Anim Indicator'),
      ),
      body: Container(
        child: Stack(
          alignment: Alignment.center,
          children: [
            PageView(
              controller: _pageController,
              children: [
                makePage(color: Colors.amber),
                makePage(color: Colors.lightGreenAccent),
                makePage(color: Colors.lightBlueAccent),
              ],
              onPageChanged: (int page) {
                setState(() {
                  currentIndex = page;
                });
              },
            ),
            Positioned(
                bottom: 10,
                //引入指示器
                child: AnimIndicator(
                  dotsCount: 3,
                  position: currentIndex,
                  color: Colors.red,
                  inLength: 30,
                )),
          ],
        ),
      ),
    );
  }

  Widget makePage({color}) {
    return Container(
      color: color,
    );
  }
}
複製程式碼

關於這個元件,大家有什麼需求可以提,我實現後會儘快更新。謝謝。

pub地址

anim_indicator

相關文章