Flutter动画指示器插件anim_indicator的使用

发布于 1周前 作者 songsunli 来自 Flutter

Flutter 动画指示器插件 anim_indicator 的使用

anim_indicator

anim_indicator 是一个用于显示动画指示器以展示当前位置的 Widget。

安装

要使用 anim_indicator,只需将其添加到你的 pubspec.yaml 文件中作为依赖项。

dependencies:
  anim_indicator: ^0.0.3

示例

以下是一个简单的点状指示器示例:

AnimIndicator(
  position: currentIndex,
)

自定义

你可以自定义指示器的颜色、点的数量等属性。

AnimIndicator(
  dotsCount: 3,
  position: currentIndex,
  color: Colors.red,
  inLength: 30,
)

完整示例代码

下面是一个完整的示例代码,展示了如何在 Flutter 应用中使用 anim_indicator 插件。

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

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

class MyApp extends StatelessWidget {
  // 这个 widget 是你应用的根
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Anim Indicator',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

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

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

  [@override](/user/override)
  void dispose() {
    _pageController.dispose();
    super.dispose();
  }

  [@override](/user/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,
    );
  }
}

更多关于Flutter动画指示器插件anim_indicator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter动画指示器插件anim_indicator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用anim_indicator插件来创建动画指示器的示例代码。anim_indicator是一个流行的Flutter插件,用于显示加载动画指示器。

第一步:添加依赖

首先,你需要在pubspec.yaml文件中添加anim_indicator依赖:

dependencies:
  flutter:
    sdk: flutter
  anim_indicator: ^3.0.1  # 请确保使用最新版本

然后运行flutter pub get来获取依赖。

第二步:导入插件

在你的Dart文件中导入anim_indicator插件:

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

第三步:使用动画指示器

下面是一个完整的示例,展示如何在Flutter应用中使用anim_indicator插件:

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Anim Indicator Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

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

class _MyHomePageState extends State<MyHomePage> {
  bool isLoading = false;

  void _startLoading() {
    setState(() {
      isLoading = true;
    });
    // 模拟一个异步操作,比如网络请求
    Future.delayed(Duration(seconds: 3), () {
      setState(() {
        isLoading = false;
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Anim Indicator Demo'),
      ),
      body: Center(
        child: isLoading
            ? Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  SizedBox(
                    width: 50,
                    height: 50,
                    child: BallPulseIndicator(), // 使用BallPulseIndicator动画指示器
                  ),
                  SizedBox(height: 20),
                  Text('Loading...'),
                ],
              )
            : Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  ElevatedButton(
                    onPressed: _startLoading,
                    child: Text('Start Loading'),
                  ),
                  SizedBox(height: 20),
                  Text('Data Loaded'),
                ],
              ),
      ),
    );
  }
}

解释

  1. 添加依赖:在pubspec.yaml中添加anim_indicator依赖。
  2. 导入插件:在需要使用动画指示器的Dart文件中导入anim_indicator
  3. 使用动画指示器
    • 创建一个简单的Flutter应用。
    • MyHomePage中,使用BallPulseIndicator作为加载动画指示器。
    • 使用一个布尔值isLoading来控制加载动画的显示和隐藏。
    • 当点击按钮时,启动加载动画,并在3秒后停止加载动画。

你可以根据需要替换BallPulseIndicatoranim_indicator插件提供的其他动画指示器,例如WaveIndicatorBounceIndicator等。只需在导入插件后查看其文档,找到适合的动画指示器并使用即可。

回到顶部