Flutter加载进度覆盖层插件overlay_loading_progress的使用

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

Flutter加载进度覆盖层插件overlay_loading_progress的使用

overlay_loading_progress是一个用于Flutter的加载进度指示器插件,可以轻松地根据需求进行自定义。本文将介绍如何使用该插件,并提供完整的示例代码。

使用步骤

1. 添加依赖

首先,在pubspec.yaml文件中添加插件依赖:

dependencies:
  overlay_loading_progress: ^1.0.1

2. 导入包

在需要使用的Dart文件中导入该插件:

import 'package:overlay_loading_progress/overlay_loading_progress.dart';

3. 开始和停止加载指示器

使用OverlayLoadingProgress.start(context)方法开始加载指示器,并使用OverlayLoadingProgress.stop()方法停止加载指示器。

// 开始加载指示器
OverlayLoadingProgress.start(context);

// 停止加载指示器
OverlayLoadingProgress.stop();

完整示例

以下是一个完整的示例,展示了如何在按钮点击事件中启动和停止加载指示器。

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

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);
  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: onTapStartBtn,
              child: const Text('Start Loading Progress'),
            ),
            const SizedBox(height: 25),
            ElevatedButton(
              onPressed: onTapStartGifLoadingProgressBtn,
              child: const Text('Start Gif Loading Progress'),
            ),
            const SizedBox(height: 25),
            ElevatedButton(
              onPressed: onTapStartCustomLoadingProgressBtn,
              child: const Text('Start Custom Loading Progress'),
            ),
          ],
        ),
      ),
    );
  }

  // 普通加载指示器
  onTapStartBtn() async {
    OverlayLoadingProgress.start(context, barrierDismissible: false);
    await Future.delayed(const Duration(seconds: 5));
    OverlayLoadingProgress.stop();
  }

  // 使用GIF作为加载指示器
  onTapStartGifLoadingProgressBtn() async {
    OverlayLoadingProgress.start(
      context,
      gifOrImagePath: 'assets/loading.gif',
      loadingWidth: 50,
      barrierDismissible: true,
    );
    await Future.delayed(const Duration(seconds: 3));
    OverlayLoadingProgress.stop();
  }

  // 自定义加载指示器
  onTapStartCustomLoadingProgressBtn() async {
    OverlayLoadingProgress.start(
      context,
      gifOrImagePath: 'assets/loading.gif',
      barrierDismissible: true,
      widget: Container(
        height: 100,
        width: 100,
        color: Colors.black38,
        child: const Center(
          child: CircularProgressIndicator(),
        ),
      ),
    );
    await Future.delayed(const Duration(seconds: 8));
    OverlayLoadingProgress.stop();
  }
}

更多关于Flutter加载进度覆盖层插件overlay_loading_progress的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter加载进度覆盖层插件overlay_loading_progress的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter中使用overlay_loading_progress插件来显示加载进度覆盖层的示例代码。这个插件允许你在应用上显示一个加载中的进度条覆盖层,非常适合在进行网络请求或耗时操作时提升用户体验。

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

dependencies:
  flutter:
    sdk: flutter
  overlay_loading_progress: ^0.3.0  # 请检查最新版本号

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

接下来,在你的Flutter应用中,你可以按照以下步骤使用OverlayLoadingProgress

  1. 导入包

在你的Dart文件中导入overlay_loading_progress包。

import 'package:overlay_loading_progress/overlay_loading_progress.dart';
  1. 创建和配置OverlayLoadingProgress

你可以在应用顶层(比如MaterialAppCupertinoApp)创建一个OverlayLoadingProgress实例,并通过OverlayLoadingProgressProvider来提供它。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return OverlayLoadingProgressProvider(
      child: MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        home: MyHomePage(),
      ),
      overlayLoadingProgress: OverlayLoadingProgress(
        // 自定义加载进度条的样式
        color: Colors.black.withOpacity(0.5),
        borderRadius: 10,
        indicator: CircularProgressIndicator(
          strokeWidth: 2,
          valueColor: AlwaysStoppedAnimation<Color>(Colors.white),
        ),
        textStyle: TextStyle(color: Colors.white),
      ),
    );
  }
}
  1. 在需要显示加载进度的地方使用

你可以使用OverlayLoadingProgressProvider.of(context)来获取OverlayLoadingProgressController实例,并调用show()hide()方法来控制加载进度的显示和隐藏。

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

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

class _MyHomePageState extends State<MyHomePage> {
  OverlayLoadingProgressController _overlayLoadingProgressController;

  @override
  void initState() {
    super.initState();
    _overlayLoadingProgressController = OverlayLoadingProgressProvider.of(context);
  }

  void _fetchData() async {
    // 显示加载进度
    _overlayLoadingProgressController.show();

    // 模拟网络请求或耗时操作
    await Future.delayed(Duration(seconds: 3));

    // 隐藏加载进度
    _overlayLoadingProgressController.hide();

    // 数据加载完成后更新UI(这里只是简单打印一条消息)
    print('Data fetched successfully!');
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Overlay Loading Progress Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _fetchData,
          child: Text('Fetch Data'),
        ),
      ),
    );
  }
}

在这个示例中,当你点击按钮时,会触发_fetchData方法,显示加载进度覆盖层,模拟一个3秒的网络请求,然后隐藏加载进度覆盖层。

这就是如何在Flutter中使用overlay_loading_progress插件来显示加载进度覆盖层的一个基本示例。你可以根据需要进一步自定义加载进度条的样式和行为。

回到顶部