Flutter加载指示器插件loading_indicator的使用

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

Flutter加载指示器插件loading_indicator的使用

loading_indicator 是一个纯Dart编写的Flutter插件,提供了多种开箱即用的加载动画效果。它不需要额外的依赖,灵感来源于 loaders.cssNVActivityIndicatorView

安装

要使用 loading_indicator 插件,首先需要在项目的 pubspec.yaml 文件中添加依赖:

dependencies:
  loading_indicator: ^最新版本号 # 请到 [pub.dev](https://pub.dev/packages/loading_indicator) 查看最新版本

然后执行 flutter pub get 来安装插件。

使用方法

基本用法

LoadingIndicator 组件可以通过简单的参数配置来创建各种各样的加载动画。下面是一个基本的例子:

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'LoadingIndicator Example',
      home: Scaffold(
        appBar: AppBar(
          title: Text('LoadingIndicator Example'),
        ),
        body: Center(
          child: LoadingIndicator(
            indicatorType: Indicator.ballPulse, // Required, 加载类型
            colors: const [Colors.blue],        // Optional, 颜色集合
            strokeWidth: 2,                     // Optional, 线条宽度
            backgroundColor: Colors.white,      // Optional, 背景颜色
            pathBackgroundColor: Colors.grey,   // Optional, 路径背景颜色
          ),
        ),
      ),
    );
  }
}

动画类型

loading_indicator 提供了30多种不同的加载动画类型,如 ballPulse, ballGridPulse, ballClipRotate 等等。你可以在官方文档查看所有支持的动画效果和预览。

示例代码解析

以下是从提供的示例代码中提取的关键部分,并进行了简化以更好地理解如何使用 loading_indicator

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

const List<Color> _kDefaultRainbowColors = [
  Colors.red,
  Colors.orange,
  Colors.yellow,
  Colors.green,
  Colors.blue,
  Colors.indigo,
  Colors.purple,
];

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'LoadingIndicator Demo',
      home: MainWidget(),
    );
  }
}

class MainWidget extends StatelessWidget {
  void _showSingleAnimationDialog(BuildContext context, Indicator indicator) {
    Navigator.push(
      context,
      MaterialPageRoute(
        builder: (ctx) {
          return Scaffold(
            appBar: AppBar(
              title: Text(indicator.toString().split('.').last),
            ),
            body: Center(
              child: LoadingIndicator(
                indicatorType: indicator,
                colors: _kDefaultRainbowColors,
                strokeWidth: 4.0,
              ),
            ),
          );
        },
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('选择动画'),
      ),
      body: ListView.builder(
        itemBuilder: (ctx, index) {
          return ListTile(
            title: Text(Indicator.values[index].toString().split('.').last),
            onTap: () => _showSingleAnimationDialog(context, Indicator.values[index]),
          );
        },
        itemCount: Indicator.values.length,
      ),
    );
  }
}

这段代码展示了如何在一个列表中展示所有的动画类型,并允许用户点击列表项来预览相应的加载动画。

通过以上的介绍和示例代码,你应该能够快速上手并集成 loading_indicator 到你的Flutter项目中,为用户提供更好的加载体验。如果你有任何问题或需要进一步的帮助,请随时提问!


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

1 回复

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


当然,以下是如何在Flutter中使用loading_indicator插件的示例代码。loading_indicator插件提供了多种加载指示器,可以在你的应用中轻松实现加载动画。

首先,确保你已经在pubspec.yaml文件中添加了loading_indicator依赖:

dependencies:
  flutter:
    sdk: flutter
  loading_indicator: ^2.0.0  # 请确保版本号是最新的

然后运行flutter pub get来安装依赖。

接下来,你可以在你的Flutter应用中使用这个插件。以下是一个简单的示例,展示了如何在按钮点击时显示一个加载指示器:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> with SingleTickerProviderStateMixin {
  bool isLoading = false;

  void handleLoadData() async {
    setState(() {
      isLoading = true;
    });

    // 模拟数据加载过程
    await Future.delayed(Duration(seconds: 2));

    setState(() {
      isLoading = false;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Loading Indicator Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: handleLoadData,
              child: Text('Load Data'),
            ),
            if (isLoading)
              Padding(
                padding: const EdgeInsets.only(top: 20.0),
                child: BallPulseIndicator(),  // 使用 BallPulseIndicator 作为加载指示器
              ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们做了以下事情:

  1. 添加依赖:在pubspec.yaml文件中添加了loading_indicator依赖。
  2. 创建主应用:在MyApp类中设置了主应用,并指向HomeScreen作为主页。
  3. 创建主页:在HomeScreen类中,我们定义了一个布尔变量isLoading来跟踪加载状态。
  4. 数据加载逻辑:在handleLoadData函数中,模拟了一个数据加载过程,使用Future.delayed来模拟耗时操作。
  5. 显示加载指示器:在build函数中,如果isLoadingtrue,则显示BallPulseIndicator加载指示器。

loading_indicator插件提供了多种加载指示器,你可以根据需要选择其他类型,例如BallGridPulseIndicatorBallTrianglePathIndicator等。只需在Padding组件中替换为你想要使用的加载指示器即可。

希望这个示例能帮助你理解如何在Flutter中使用loading_indicator插件。

回到顶部